Новости Joomla

Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0

Метод registerListeners() в CMSPlugin в плагинах  планируется удалить в Joomla 7.0

👩‍💻 Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0.Этот метод регистрирует устаревшие слушатели событий в диспетчере, имитируя работу плагинов Joomla! 3.x и ниже для Joomla 4+. По умолчанию этот метод ищет все общедоступные методы, название которых начинается с on. Он регистрирует лямбда-функции (замыкания), которые пытаются преобразовать аргументы отправленного события в аргументы вызова метода и вызвать ваш метод on<Что-то>. Результат передаётся обратно событию в его аргумент result.Теперь этот слой совместимости с устаревшей Joomla 3 помечен к удалению в Joomla 7.0, которая должна выйти осенью 2027 года. Это означает, что те уникальные расширения от Joomla 2.5 / Joomla 3, которые ещё работали на Joomla 4-6 скорее всего окончательно перестанут работать на Joomla 7. Предполагается, что активные разработчики планомерно и постепенно избавляются от технического долга и обновляют свои расширения. @joomlafeed#joomla #разработка #php

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

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Плагин OptimizeTables для Joomla 1.6/1.7/2.5
« Ответ #30 : 14.06.2013, 14:59:56 »
Это же получение параметра, а значит и запрос в базу для их чтения. Или $this->params для всех плагинов инициализируются каким-то одним глобальным запросом? Я как-то не копал в эту сторону и не знаю, как там Joomla их подгружает, но мне это кажется нелогичным.
Хы, прикольно. А ты не знал этого? Когда ты взываешь JPluginHelper::importPlugin, выполняется вот такой код:
Код: php
					$className = 'plg' . $plugin->type . $plugin->name;
if (class_exists($className))
{
// Load the plugin from the database.
if (!isset($plugin->params))
{
// Seems like this could just go bye bye completely
$plugin = self::getPlugin($plugin->type, $plugin->name);
}

// Instantiate and register the plugin.
new $className($dispatcher, (array) ($plugin));
}
а в getPlugin, в свою очередь, вызывается метод _import, в котором выборка из базы трех полей folder, element и params.

К слову сказать это одна из самых существенных оптимизаций в Joomla 1.5 - раньше каждый плагин грузил свои параметры раздельно, несмотря на то, что запрос к БД все равно был для получения информации о статусе публикации плагинов. А данная реализация позволила существенно снизить нагрузку на базу. Я удивлен, что ты не в курсе этой истории, мы это много обсуждали.


Либо хранить их в отдельном файле, либо в классе определить как константы: время и период.
Оно раньше в файлах и хранилось, но были проблемы с правами доступа и прочим. Поэтому я придумал эту схему.

В таких случаях наверное лучше писать в близлежащий файл переменную без обращения к базе
Как я писал выше - так оно и было, но были проблемы с правами.

В принципе, можно в плагине вызов функции с оптимизацией делать через кэш, тогда она будет выполняться с периодичностью, равной времени кэширования. Можно пойти дальше, сделать в плагине свои настройки кэширования, и инициализировать кэш с доп. параметрами, тем самым перебросив задачу ограничения периодичности вызов на систему кэширования - она просто не будет вызывать оптимизацию, пока кэш валиден.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Плагин OptimizeTables для Joomla 1.6/1.7/2.5
« Ответ #31 : 14.06.2013, 15:23:29 »
Хмм, не помню, когда об этом говорили ::) А какой цикл жизни у объекта $plugin в нашем случае? Похоже что onAfterInitialise не обнуляет $plugins?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Плагин OptimizeTables для Joomla 1.6/1.7/2.5
« Ответ #32 : 14.06.2013, 15:25:44 »
Не вижу ничего лучшего чем писать в файл. И какая проблема  с правами закрыли папку, файл от доступа через .htaccess
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Плагин OptimizeTables для Joomla 1.6/1.7/2.5
« Ответ #33 : 14.06.2013, 16:18:53 »
А какой цикл жизни у объекта $plugin в нашем случае?
Я так понимаю до завершения запроса. Там нет никакой привязки группы плагинов к жизненному циклу, поэтому загрузили группу - данные висят в памяти, кто ж знает, на каком событии тот или иной плагин вызовут? Может быть и на onAfterRender...

Не вижу ничего лучшего чем писать в файл.
Ну ты может быть и не видишь, а если тему не стерли - можно поискать, посчитать, сколько было жалоб, что плагину не хватает прав на запись файла... Я же не просто так переделывал логику. Да  зачем файл, если и так проблем быть не должно?

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

Плагин "Русская типографика"

Автор Physicist

Ответов: 261
Просмотров: 158318
Последний ответ 13.03.2025, 20:06:50
от Olg
Owl Сarousel Images module for Joomla

Автор Muggs

Ответов: 0
Просмотров: 1587
Последний ответ 30.08.2024, 17:34:06
от Muggs
Мастерю плагин для админки - оплата налом или по карте при самовывозе

Автор kkmspb

Ответов: 0
Просмотров: 1630
Последний ответ 27.08.2024, 15:39:37
от kkmspb
News Calendar Joomla 3.0 - html5 - Rus

Автор leo78

Ответов: 27
Просмотров: 15515
Последний ответ 27.06.2024, 11:15:49
от Леон
Плагин LVSpoiler - спойлеры с динамической загрузкой изображений

Автор Arkadiy

Ответов: 449
Просмотров: 104455
Последний ответ 20.04.2024, 21:10:33
от Beer