Новости 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 Ответов
  • 10971 Просмотров
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Приветствую Всех!
Соверщенно внезапно возник острый вопрос: возможность переключения на фронте шаблона вывода категории в VirtueMart 1.1.7
(сборка Joomla 1.5.22 + vm1.1.7 очень сильно перепиленная).
Точнее - один вывод по 3 товара в строку ( блочный), второй - 1 товар в строку (переключение между ними на фронте).
На форуме в двух темах этот вопрос уже обсуждался:
http://joomlaforum.ru/index.php/topic,113908.msg1110095.html#msg1110095
http://joomlaforum.ru/index.php/topic,85773.0/all.html
Оба варианта работают но не позволяют решить проблему с разным количеством товаров в строке.
Игры с переменной $products_per_row результата не дали ни в одном, ни в другом случае.
Если у кого-нибудь есть идеи по решению этой задачки (или уже реализованный вариант) буду просто счастлив!
Годятся любые варианты: переключение между browse_notables.tpl.php и browse_listtable.tpl.php, или несколько вариантов в одном browse_X - не принципиально.
Учитывая съехавший мозг, готов проспонсировать данный вопрос!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
переключение между ними на фронте
? То есть либо один, либо другой? Или оба будут соседствовать?
И на них будут выведены непожожие категории?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
? То есть либо один, либо другой? Или оба будут соседствовать?
И на них будут выведены непожожие категории?
Естественно, либо один. либо другой! Зачем показывать сразу оба. Это довольно популярная фишка - товары категории либо блоками (картинками с минимумом инфы) или переключение в строчный вывод - по одному в строку (как, например, в browse_listtable.tpl)
Нужна не верстка шаблона а сам принцип работы - меня что-то заело...
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Оба варианта работают но не позволяют решить проблему с разным количеством товаров в строке.
Не делал. Почитал, там вроде бы позволяют. И ссылка на сайт есть, там 1 <-> 2.

Если у кого-нибудь есть идеи по решению этой задачки
Можно попробовать: 1 шаблон, на jQuery по клику менять стили (ширину блоков, видимость, местами менять дивы, ...).
Вот пример , несколько не то, конечно, только идея.
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Можно попробовать: 1 шаблон, на jQuery по клику менять стили (ширину блоков, видимость, местами менять дивы, ...).
Вот пример , несколько не то, конечно, только идея.
Спасибо, посмотрел. Но мне кажется это не решит проблему. Если делать на одном шаблоне, то в нем должно быть два html-кода двух разных шаблонов( 2 в 1). По ифу выдается, предположим, 1 вариант (кот. сверстан под блочный вывод - несколько тов. в строке),
else {другой вариант, в строчном виде -как прайс, например, по одному товару в строку}. Это все работает - вопрос как во второй вариант передать $products_per_row = 1 ? Как ни крутил - все равно в строке столько же, сколько и в блочном варианте
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Более "симпатичный" вариант - в shop.browse, кроме:
echo $tpl->fetch( $tpl->config->get( 'productListStyle' ) );
подключить browse_listtable.tpl:
echo $tpl->fetch( 'browse/includes/browse_listtable.tpl.php' ); //идея от Beaglera
Будет благополучно отображаться оба варианта - красиво один под другим - два шаблона. Вот как заставить их переключаться с одного на другой?
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
А если что-то типа:
$variant1 = 'browse/includes/browse_notables.tpl.php';
$variant2 = 'browse/includes/browse_listtable.tpl.php';

if ( $variant1 ) {
echo $tpl->fetch( 'browse/includes/browse_notables.tpl.php' ) ;
} else {
echo $tpl->fetch( 'browse/includes/browse_listtable.tpl.php' );
}

Тогда отрабатывает browse_notables.tpl, а browse_listtable.tpl ждет.
Куда бы воткнуть переключалку: variant1 и variant2 ?
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Если делать на одном шаблоне, то в нем должно быть два html-кода двух разных шаблонов( 2 в 1).
Имел в виду, что  один html-код. По клику менять его верстку.
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Имел в виду, что  один html-код. По клику менять его верстку.
Так верстку поменяем, а количество в строке ведь не изменится?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
Куда бы воткнуть переключалку: variant1 и variant2 ?
в сессию или куки. Для зарегистрированных можно в профиль. Других вариантов нет
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Так верстку поменяем, а количество в строке ведь не изменится?
Можно задать отдельно для каждого шаблона. Это будет уже не $products_per_row, а другая переменная, которая задается в админке и по сути ничем не отличается.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Можно задать отдельно для каждого шаблона. Это будет уже не $products_per_row, а другая переменная, которая задается в админке и по сути ничем не отличается.
А как Вы предлагаете это реализовать?
Прошу прощения - второй день сижу над этим - мозги уже могут только спрашивать...
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: 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' );
}
?>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
А как Вы предлагаете это реализовать?
Прошу прощения - второй день сижу над этим - мозги уже могут только спрашивать...
Я как-то выводил на фронт VM рекомендуемые товары и товары со скидкой. Количество первых уже задается в theme.config.php, я просто добавил анологичную строку и пункт в Настройки>Сайт>Настройки.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 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' );
}
?>
Супер!
Плюс плюсом, а куда и как? Возмездность?
« Последнее редактирование: 16.01.2013, 23:44:46 от aleks_yug »
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Я как-то выводил на фронт VM рекомендуемые товары и товары со скидкой. Количество первых уже задается в theme.config.php, я просто добавил анологичную строку и пункт в Настройки>Сайт>Настройки.
Вариант от Poznakomlus отлично работает. Просто и красиво! Можно использовать без всяких проблем.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Вариант от Poznakomlus отлично работает. Просто и красиво! Можно использовать без всяких проблем.
Точно.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
На месте модераторов я бы это решение от Poznakomlus обязательно добавил бы.
"Товарищ Ленин" бы сказал: очень нужная и своевременная книга!
*

fsv

  • Moderator
  • 2782
  • 411 / 2
смена шаблона категории с ajax-перезагрузкой компонента:

1. кнопки
/components/com_virtuemart/themes/ВашаТема/templates/browse/includes/browse_header_category.tpl.php
в конце файла добавить:
Код
<div name="change_tmpl" id="change_tmpl" >
<input type="button" class="change_cattmpl" id="browse_notables" value="Вид Категории Блоками" title="Вид Категории Блоками" />
<input type="button" class="change_cattmpl" id="browse_listtable" value="Вид Категории Таблицей" title="Вид Категории Таблицей" />
</div>
<br />

2. выбор шаблона категории
/administrator/components/com_virtuemart/html/shop.browse.php
в конце файла код
Код
echo $tpl->fetch( $tpl->config->get( 'productListStyle' ) );
заменить на
Код
if (isset($_GET['id_click'])) {
   $my_cattmpl = $_GET['id_click'];
   echo $tpl->fetch( 'browse/includes/'.$my_cattmpl.'.tpl.php' ) ;
} else {
   echo $tpl->fetch( $tpl->config->get( 'productListStyle' ) );
}

3. jQuery  в шаблоне Joomla!
Код
<script type="text/javascript">
   j(document).ready(function() {
      j("body").on("click",".change_cattmpl", function(){  
         var id_click = j(this).attr("id");  
         var url = "<?php echo $_SERVER['REQUEST_URI'] ?>" ;
         j("#vmMainPage").fadeTo(500, 0);
         j("#vmMainPage").load(""+ url + "&id_click=" + id_click +" #vmMainPage");
         setTimeout(function() { j("#vmMainPage").fadeTo(1000, 1) }, 2000);
      });
   });
</script>
« Последнее редактирование: 22.05.2013, 15:00:47 от fsv »
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
      j("body").on("click",".change_cattmpl", function(){   
Консоль ошибок в лисе ругается на эту строку:
j("body").on("click",".change_cattmpl", function(){
Попробовал и на своем, переломанном движке и на чистой сборке без всяких прибамбасов. вроде должно работать - ан нет...
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Консоль ошибок в лисе ругается на эту строку:
j("body").on("click",".change_cattmpl", function(){
Попробовал и на своем, переломанном движке и на чистой сборке без всяких прибамбасов. вроде должно работать - ан нет...

У меня работает.
Что пишет, когда ругается?
jQuery подключен? Еще что-нибудь его использует? Как там noConflict() прописан? Возможно, в моем коде "j" надо заменить на используемую у вас переменную.
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
У меня работает.
Что пишет, когда ругается?
jQuery подключен? Еще что-нибудь его использует? Как там noConflict() прописан? Возможно, в моем коде "j" надо заменить на используемую у вас переменную.

jQuery, конечно, подключен и используется (везде!). Конфликт - это первое, что подумал.  Отключил все, что можно и неможно. Поэтому и попробовал на абсолютно чистой сборке. Результат на ней такой же (joomla 1.5.22+vm1.1.7+стандартный rhuk_milkyway)
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Поэтому и попробовал на абсолютно чистой сборке. Результат на ней такой же (joomla 1.5.22+vm1.1.7+стандартный rhuk_milkyway)

Справочно, мои данные: чистая сборка J1.5.26+VM1.1.9 (демо-данные)+JA_Purity.
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

Сайт (с чистой сборкой) в сети?
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Справочно, мои данные: чистая сборка J1.5.26+VM1.1.9 (демо-данные)+JA_Purity.
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

Сайт (с чистой сборкой) в сети?
Мда... На JA_Purity работает! Тогда нужно будет искать козу в шаблонах - выходит так...
В сети чистой нет -какой смысл?
В любом случае это боооольшой +
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Мда... На JA_Purity работает! Тогда нужно будет искать козу в шаблонах - выходит так...

Специально сейчас переключил на rhuk_milkyway и дописал index.php. Все работает, без вопросов.
Веб-разработка: заказ. Только новая разработка.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Специально сейчас переключил на rhuk_milkyway и дописал index.php. Все работает, без вопросов.
Я уже увидел - работает. Получается очень любопытная штука -если подключить в шаблоне jquery с Google - работает. Если задействовать из каталога сайта - фокус не удастся. Но то бог с ним. Менее приятно то, что в этом случае идет конфликт с фильтром по типам (от Аркадия, к тому же, прилично допиленный). Если jquery подключить в индексе - шаблоны переключаются, но валится фильтр. Возможно разные версии jquery (как вариант). В общем искать нужно...
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Специально сейчас переключил на rhuk_milkyway и дописал index.php. Все работает, без вопросов.
Ну, кажется, разобрался... Конфликт версий jquery
Скачанная с Google и размещенная у себя вместо предыдущей версии (в частности, jquery-1.4.2.min) снимает все конфликты и все отрабатывает как надо. Спасибо!
*

Sonio

  • Захожу иногда
  • 52
  • 0 / 0
Код
<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
$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' );
}
?>


Поясните пожалуйста, куда вставить это чудо.
*

aleks_yug

  • Давно я тут
  • 630
  • 83 / 0
Поясните пожалуйста, куда вставить это чудо.
Форму (верхний код) в browse_header_category.tpl.php
а сам скрипт в shop.browse.php  - в самом низу кода заменить строку: echo $tpl->fetch( $tpl->config->get( 'productListStyle' ) );
*

Sonio

  • Захожу иногда
  • 52
  • 0 / 0
Форму (верхний код) в browse_header_category.tpl.php
а сам скрипт в shop.browse.php  - в самом низу кода заменить строку: echo $tpl->fetch( $tpl->config->get( 'productListStyle' ) );

Спасибо тебе за тему и Poznakomlus за решение. Плюс +.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор bork

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

Автор 4kict

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

Автор Girevik

Ответов: 1
Просмотров: 1536
Последний ответ 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