Определяем состояние расширения (плагина или модуля) в Cotonti Siena
Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.25, ЧПУ, Font Face
- 120 просмотров
- 19 февраля, 2025
- Обновлено: 3 марта, 2025
- admin
- Время чтения: 2 минуты
- 1 (Подробно)
Довольно часто разработчику проекта на Котонти необходимо определить доступность того или иного расширения – плагина или модуля. Мы говорим прежде всего о том, установлено оно или нет.
Для чего необходима проверка на установку расширения?
Допустим, в проекте предполагается выводить блоки, которые генерит некое расширение. Это могут быть, например, виджеты, создаваемые плагином Pagelist или аналогичным ему. Для этого в шаблоне вы разместите примерно следующий код:
<div class="widget news">
<span class="title">Последние новости</span>
{PHP|sedby_pagelist('pagelist.news', 2, 'page_date DESC', 'page_cat = "news"')}
</div>
Предположим, что расширение вы отключили или поставили на паузу. Шаблонизатор все равно выведет вашу разметку, но функция будет недоступна. Так что вместо блока новостей посетитель сайта увидит лишь имя функции с параметрами. Кроме этого, с деактивацией плагина могут стать недоступными языковые или ресурсные строки или иные элементы. В результате клиент увидит совершенно неприглядную картину.
Как проверить доступность расширения?
Изначально (или, если хотите, исторически) в нашем распоряжении было два массива:
$cot_plugins_active$cot_modules
, в которых размещались коды плагинов и модулей соответственно. Как видим, логики в именах немного. По этой и нескольким другим причинам, данный механизм получил статус deprecated и какое-то время оставался доступным. А использовались эти массивы, например в TPL-шаблоне, следующим образом:
<!-- IF {PHP.cot_plugins_active.comments} -->
...
<!-- ENDIF -->
В новой редакции Cotonti Siena 0.9.26 массив $cot_plugins_active удален, а в распоряжении разработчика теперь две функции:
cot_plugin_active()cot_module_active()
С именами теперь все нормально, и ошибиться с ними будет уже сложно. В качестве единственного параметра каждая из функций принимает код расширения:
<!-- IF {PHP|cot_plugin_active(‘pagelist’)} -->
<div class="widget news">
<span class="title">Последние новости</span>
{PHP|sedby_pagelist('pagelist.news', 2, 'page_date DESC', 'page_cat = "news"')}
</div>
<!-- ENDIF -->
При обновлении до текущего среза из репозитория Cotonti не забудьте проверить и обновить условия в TPL-шаблонах своих тем. Лучше всего изменить условия как для плагинов, так и для модулей, поскольку массив $cot_modules также запланирован для удаления.
В предыдущей публикации мы выясняли какие виды кэша существуют в движке Cotonti Siena.
Новый комментарий
Ошибка
Выполнено