Новости 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

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

master_alf

  • Захожу иногда
  • 105
  • 8 / 0
Приветствую всех. Прошелся по поиску - не нашел ответа на интересующий меня вопрос.
Если проглядел - прошу прощения.

Есть у меня графическое меню, где каждому пункту назначена своя картинка. Каким образом я могу сделать так, что бы при клике на определенный пункт в меню, в открывшемся разделе этот пункт отображался иной картинкой (отличной от состояния когда пункт меню не нажат), простое оформление через ксс - не подходит. Вернее если можно сделать через него - подскажите как. Но мне надо не просто "убрать/добавить поля/залить фон и т.д." а именно загрузить другую картинку. При чем для каждого пункта меню в активном состоянии свое изображение.
Надеюсь понятно объяснил.
*

master_alf

  • Захожу иногда
  • 105
  • 8 / 0
Разобрался, выкладываю рецепт, кому-нибудь да пригодится.

Сделал путем изменения файла modules\mod_mainmenu\legacy.php(если это плохой вариант, то прошу подсказать как это сделать правильно)
собственно дописал небольшую функцию:

Код
function rpl($name) {
$arr = explode('.', $name);
$itog = $arr['0']._act .'.'.$arr['1'];
return $itog;
}
она разбивает название файла, и дописывает _act перед расширением, т.е. если у нас была картинка с названием example.png то после вызова rpl(); становится example_act.png

В том месте, где происходит вставка адреса изображения, сделал проверку, является ли текущий пункт меню активным, и если да, то изменяем адрес.
не тронутое место выглядело так
Код
if ($params->get('menu_images'))
{
$menu_params = new stdClass();
$menu_params = new JParameter($mitem->params);

$menu_image = $menu_params->def('menu_image', -1);
if (($menu_image <> '-1') && $menu_image) {
$image = '<img src="'.JURI::base(true).'/images/stories/' . $menu_image . '" border="0" alt="' . $mitem->name . '" class="menu"/>';

if ($params->get('menu_images_align')) {
$txt = $txt . ' ' . $image;
} else {
$txt = $txt . ' ' . $image .'</a>';
}

}
}
нужно сделать так
Код
if ($params->get('menu_images'))
{
$menu_params = new stdClass();
$menu_params = new JParameter($mitem->params);

$menu_image = $menu_params->def('menu_image', -1);
if (($menu_image <> '-1') && $menu_image) {
if ($current_itemid == $mitem->id) {
$image = '<img src="'.JURI::base(true).'/images/stories/' . rpl($menu_image). '" border="0" alt="' . $mitem->name . '" class="menu active_menu"/>';
} else {
$image = '<img src="'.JURI::base(true).'/images/stories/' . $menu_image . '" border="0" alt="' . $mitem->name . '" class="menu"/>';
}
if ($params->get('menu_images_align')) {
$txt = $txt . ' ' . $image;
} else {
$txt = $txt . ' ' . $image .'</a>';
}

}
}
Вот, вроде все.
*

незнАЙка

  • Новичок
  • 4
  • 0 / 0
master_alf спасибо за статью, ещё не пробовал, но всё впереди)

Ещё, народ, подскажите кто знает, как изменить оформление меню следующим образом:
Есть категория новостей и меню, которое выводит список этих новостей. Так вот, у каждой новости есть дата. Нужно выводить её в меню, но оформлять по другому (цвет, фон и т.д.) Не понимаю 1. Где лучше хранить дату.
                                                                                        2. Как выводить её в каждом пункте меню с другим оформлением.
Подскажите пожалуйста, заранее спасибо.  (если глупость спрашиваю, дайте пожалуйста ссылочку где почитать можно)

P.S. А вообще с меню в Joomla часто возникают вопросы, если бы кто-то из знающих посвятил статейку-другую описанию работы модуля меню... Как там всё строиться. С программной точки зрения.  Я думаю многим бы это помогло, но работы там, наверное, порядочно. Но всё же если у кого-то есть возможность, воплотите идею в жизнь! Много народу вам спасибо скажет.

Ещё раз всем спасибо!

*

незнАЙка

  • Новичок
  • 4
  • 0 / 0
Люди спасайте! Вопрос остаётся открытым, помогите пожалуйста!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 8691
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3815
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5466
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23938
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 4162
Последний ответ 01.03.2019, 11:12:18
от vasmed