Новости Joomla

Вышли релизы безопасности Joomla 6.1.1 и Joomla 5.4.6

Релиз безопасности Joomla 6.1.1 и Joomla 5.4.6

Проект Joomla! рад сообщить о выходе Joomla 6.1.1 и Joomla 5.4.6. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

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

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Сергей, обсуждали этот вопрос вскользь раньше, сейчас предлагаю коллективную мысль
Имеем - блог категории материалов, для категории в настройках комментов включено комментирование.
Плагин для каждого материала делает отдельный запрос на получение комментов
Задача - свести все в один запрос для генерации страницы

Текущее решение плагином - один материал == один запрос на получение количества
Хардкорное решение - в модели com_content править запрос в базу, цеплять таблицу через JOIN, предварительно проверяя, назначена ли данная категория для комментов

Вопрос - каким макаром можно это дело оптимизировать?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну как вариант, который давно хочется попробовать, не заполнять счетчик с помощью плагина, а вставлять маркер вида:

Код
{jcomments object_id=123 object_group=com_content type=count}

А уже в системном плагине, на событие onAfterRender, собирать вот такие маркеры, дергать для них один запрос, и заменять маркеры, на нужный текст. Но тут получается двойная работа - сначала на onPrepareContent, мы проставим маркеры (отсюда это как бы удобно сделать - тут и ссылка есть и с readmore все понятно), а затем мы будем заменять эти маркеры на счетчики.

Из явных плюсов - во-первых один запрос, против N (где N - количество материалов, где разрешены комментарии), во-вторых счетчик комментариев всегда будет "честным", независимо от кэша.

Из явных минусов - усложнение логики и возможно некоторое замедление, потому как без регулярных выражений обойтись проблематично, а они все-таки не очень быстрые. Кроме того, сейчас эти ссылки выводятся шаблоном, одним файлом (tpl_links.php), а получается, что для данной реализации, ссылку Подробнее нужно будет вставлять в onPrepareContent, а ссылку Комментарии (или Добавить комментарий) - в onAfterRender, и это тоже далеко не прозрачно будет.

Была еще идея обновления значений счетчиков посредством AJAX, чтобы решить проблему с кэшированием материалов, но там тоже есть свои недостатки. В общем готов выслушать какие-то дополнительные идеи, по данному вопросу.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться