Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

0 Пользователей и 1 Гость просматривают эту тему.
  • 39 Ответов
  • 10974 Просмотров
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Poznakomlus +.
Я не хотел видеть все время 2 кнопки, поэтому разбил форму и добавил по одной кнопке каждому шаблону. Прошу прощения за редактирование оригинального кода.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

sinyak-image

  • Новичок
  • 8
  • 0 / 0
Код: html4strict
<form id="vid" name="vid" action="<?php echo JURI::getInstance()->tostring();?>" method="post">
<input type="submit" value="1" name="variant1">
<input type="submit" value="2" name="variant2">
</form>
Код: php-brief
<?php
$variant1 = JRequest::getVar('variant1', '');
$variant2 = JRequest::getVar('variant2', '');
$session =& JFactory::getSession();
if ($variant1) $session->set("variant", $variant1);
if ($variant2) $session->set("variant", $variant2);
$variant = $session->get("variant", 1);
if ($variant ==1  ) {
echo $tpl->fetch( 'browse/includes/browse_notables.tpl.php' ) ;
} else {
echo $tpl->fetch( 'browse/includes/browse_listtable.tpl.php' );
}
?>

Добрый день! Подскажите, кто знает, что-то не могу добиться толку. Этот код использовал, на сайт вставил - http://www.profood.by/katalog/category/81/elektricheskoe/parokonvektsionnie-pechi/teplovoe-oborudovanie
Но как сделать так, чтобы выводилось при нажатии на "1", так как оно и выводится сейчас в шаблоне, т.е. по 1 товару на строку, а при нажатии на "2" по три товара на строку и с измененным шаблоном вывода (т.е. например шаблон где вывод только название + картинка + цена).
Может можно как-то задать $products_per_row=3;
Только где... и как еще заставить другой шаблон использоваться...
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Но как сделать так, чтобы выводилось при нажатии на "1", так как оно и выводится сейчас в шаблоне, т.е. по 1 товару на строку, а при нажатии на "2" по три товара на строку и с измененным шаблоном вывода (т.е. например шаблон где вывод только название + картинка + цена).
Может можно как-то задать $products_per_row=3;
Только где... и как еще заставить другой шаблон использоваться...
Менять вручную значение в  $products_per_row не нужно.
В этом коде используется переключение между browse_listtable.tpl.php (по умолчанию) и browse_notables.tpl.php (подключается один из browseX). В настройках админки магазина, в данном случае нужно выставить Product List (no table, div-based). Подключаться будет  browse_listtable.tpl.php. А переключение поведет на один из выбранных шаблонов browseX. В админке также необходимо выставить - по сколько товаров в строке должно отображаться в категории (именно для второго варианта) И все будет работать - Федор все отлично описал.
*

sinyak-image

  • Новичок
  • 8
  • 0 / 0
Менять вручную значение в  $products_per_row не нужно.
В этом коде используется переключение между browse_listtable.tpl.php (по умолчанию) и browse_notables.tpl.php (подключается один из browseX). В настройках админки магазина, в данном случае нужно выставить Product List (no table, div-based). Подключаться будет  browse_listtable.tpl.php. А переключение поведет на один из выбранных шаблонов browseX. В админке также необходимо выставить - по сколько товаров в строке должно отображаться в категории (именно для второго варианта) И все будет работать - Федор все отлично описал.
Спасибо! Наконец-то получилось. Осталось только терь всё перелопатить в шаблоне, а то ерунда полная.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Ну все правильно. Только теперь нужно сделать соответствующий шаблон browse (тот. который есть сейчас. под 3 товара в строку никак не пойдет). Да и browse_listtable лучше бы переделать... С синтаксисом поосторожнее - лучше бы сначала все на локалке...
*

sinyak-image

  • Новичок
  • 8
  • 0 / 0
Ну все правильно. Только теперь нужно сделать соответствующий шаблон browse (тот. который есть сейчас. под 3 товара в строку никак не пойдет). Да и browse_listtable лучше бы переделать... С синтаксисом поосторожнее - лучше бы сначала все на локалке...

Да, поковырял свой browse - сделал. А вот browse_listtable отредактировать так и не получилось как хочется.
Может подскажете, хочу обрамить каждый товар из списка отдельной рамкой.
Делаю через добавление div стиля из файла theme.css, но обрамить получается либо все полностью товары в одной рамке



, либо отдельно рамку


, либо много рамок



Приведу свой код, и прошу направить мой div в нужное русло, а то что-то совсем запарился...

<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); ?>
<?php echo $buttons_header // The PDF, Email and Print buttons ?>
<?php echo $browsepage_header // The heading, the category description ?>
<?php echo $parameter_form // The Parameter search form ?>
<?php echo $orderby_form // The sort-by, order-by form PLUS top page navigation ?>
<?php
$data =array(); // Holds the rows of products
$i = 1; $row = 0; // Counters

// Creates a new HTML_Table object that will help us
// to build a table holding all the products

?>
<div class="browseProductContainer-spisok">
<?php


$table =& new HTML_Table('width="100%"');
$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );            
foreach( $products as $product ) {

      foreach( $product as $attr => $val ) {
         // Using this we make all the variables available in the template
         // translated example: $this->set( 'product_name', $product_name );
         $this->set( $attr, $val );
      }

      $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'.$product['product_name'].'</a>';
            
      $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
                  . ps_product::image_tag( $product['product_thumb_image'] )
                  . '</a>';
      $data[$row][] = $product['product_type'];
      if( $product['has_addtocart'] ) {
         $data[$row][] = $product['form_addtocart'];
      }
      else {
         $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
                     .   $product['product_details']
                     .   '</a>';

      }

      $row++;   
      
}
// Loop through each row and build the table
foreach($data as $key => $value) {
   
   $table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
   $i = $i == 1 ? 2 : 1;
}

?>
</div>
<?php


// Display the table
echo $table->toHtml();
?>
<br class="clr" /><br />
<?php
// Show Featured Products
if( $this->get_cfg( 'showFeatured', 1 )) {
    /* featuredproducts(random, no_of_products,category_based) no_of_products 0 = all else numeric amount
    edit featuredproduct.tpl.php to edit layout */
    echo $ps_product->featuredProducts(true,10,true);
} ?>
<?php echo $recent_products ?>
<?php echo $browsepage_footer ?>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
2sinyak-image: Нужно задать класс или id для cтаршего div в browse_x.php
Не будь паразитом, сделай что-нибудь самостоятельно!
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
В browse_listtable есть блок кода:
foreach($data as $key => $value) {
      $table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
   $i = $i == 1 ? 2 : 1;
}
Нужно найти в таблице стилей шаблона классы .sectiontableentry  и поиграть с ними. Вполне возможно. что у Вас их просто нет. В одном из вариантов у меня это выглядит так:
Спойлер
[свернуть]
В каждом конкретном случае делаете свое...
*

sinyak-image

  • Новичок
  • 8
  • 0 / 0
В browse_listtable есть блок кода:
foreach($data as $key => $value) {
      $table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
   $i = $i == 1 ? 2 : 1;
}
Нужно найти в таблице стилей шаблона классы .sectiontableentry  и поиграть с ними. Вполне возможно. что у Вас их просто нет. В одном из вариантов у меня это выглядит так:
Спойлер
[свернуть]
В каждом конкретном случае делаете свое...
Да, спасибо, там уже вроде хоть и коряво, но сделал. Просто засунул все свои стили в один row

Спойлер
[свернуть]

Короче говоря получилось что-то большое и страшное и запутаться можно, но как ни странно рабочее. http://www.profood.by/katalog/category/81/teplovoe-oborudovanie/elektricheskoe/parokonvektsionnie-pechi

Остались открытыми еще пару вопросов. 1. Как сделать переключение между видами не кнопками Submit как в коде:
Спойлер
[свернуть]

, а картинкой. Пишу код следующего вида

Спойлер
[свернуть]

В CSS добавляю

Спойлер
[свернуть]

Но результат нулевой... не отображается картинка и все тут. Может кто подскажет как безболезненно этот код кнопок переделать в картинки?
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Но результат нулевой... не отображается картинка и все тут. Может кто подскажет как безболезненно этот код кнопок переделать в картинки?
да тупо создать какие-нибудь переменные с путем к картинкам:
$img_td ="путь";
$img_list="путь";
И засунуть эхом в значение. Ну как-то так...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 23501
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 10483
Последний ответ 14.01.2021, 00:09:53
от gartes
Как реализовать: товары, которых нет в наличии в конец списка категории?

Автор Girevik

Ответов: 1
Просмотров: 1537
Последний ответ 02.11.2017, 10:52:04
от P_B
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 54342
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 28509
Последний ответ 25.10.2016, 15:03:07
от Igoritaly