Каждое приложение может предоставлять собственный набор методов для добавления некоторых данных во фронтенд любых приложений. Например, некоторое аналитическое приложение может таким образом сформировать блок HTML-кода для отображения графика продаж на страницах сайта.
При написании собственного приложения удобно оформлять такие методы, предназначенные для использования в шаблонах фронтенда, в виде класса-хелпера. Класс-хелпер рекомендуется поместить в директорию wa-apps/[app_id]/lib/classes/
, имя файла класса должно быть построено по правилу [app_id]ViewHelper.class.php
, а имя класса должно иметь вид [app_id]ViewHelper
.
Например, для некоторого приложения с идентификатором stats
файл-хелпер должен располагаться по адресу wa-apps/stats/lib/classes/statsViewHelper.class.php
и иметь следующий вид:
<?php class statsViewHelper { public function getChartHtml() { … return …; } }
Для отображения некоторого графика, HTML-код которого возвращается методом getChartHtml()
из этого примера, в шаблоне фронтенда необходимо использовать вызов этого метода следующим образом:
{$wa->stats->getChartHtml()}
Пользовательские хелперы
В дополнение к хелперам, описанным в «Шпаргалке» редактора дизайна (читайте подробнее об этом в статье об интеграции с приложением «Сайт»), и возможности написания плагинов фреймворк также позволяет создавать собственные функции-хелперы для использования в шаблонах темы дизайна.
Основное отличие хелпера от плагина состоит в том, что место размещения хелпера в шаблоне не ограничено имеющимися хуками; кроме того, хелпер обычно обладает более ограниченной функциональностью по сравнению с плагином (который может предоставлять собственный интерфейс настроек в бекенде и использовать собственные таблицы в базе данных). Можно рассматривать собственную функцию-хелпер в качестве «мини-плагина».
Пользовательские функции-хелперы доступны в пределах шаблонов того приложения, для которого они созданы.
Для написания собственного хелпера для какого-либо приложения создайте файл пользовательского класса [app_id]Custom.class.php
в директории wa-apps/[app_id]/lib/classes/
этого приложения. Например, файл пользовательского класса для Shop-Script должен быть создан по адресу wa-apps/shop/lib/classes/shopCustom.class.php
. Имя класса в таком файле должно быть построено по правилу [app_id]Custom
, например: shopCustom
.
Имя класса с пользовательскими хелперами (и соответствующее ему имя файла) может быть произвольным, необязательно соответствующим приведенному выше правилу. ИдентификаторCustom
в предложенном правиле позволяет лишь с высокой степенью вероятности гарантировать, что среди стандартных классов приложения не появится класс с таким же именем, и таким образом помогает исключить возможность возникновения конфликта имен. Для удобства группировки хелперов можно создавать несколько пользовательских классов, формируя их имена в соответствии с этим принципом (например,shopMyHelper
илиshopExtraSnippets
).
Хелперы оформляются в виде методов пользовательского класса, объявленных с модификаторами доступа public static
.
Файлы пользовательских классов не затрагиваются при установке обновлений через «Инсталлер».
Ниже приведен пример содержимого файла пользовательского класса с объявлением метода someHelper()
для использования в шаблонах витрины Shop-Script:
<?php class shopCustom { public static function someHelper() { ... return ...; } }
Для вызова метода someHelper()
из этого примера в шаблонах фронтенда используйте следующий синтаксис:
{shopCustom::someHelper()}
Для корректной работы хелпера может потребоваться очистка кеша в «Инсталлере».