Хелперы

Содержание...

Каждое приложение может предоставлять собственный набор методов для добавления некоторых данных во фронтенд любых приложений. Например, некоторое аналитическое приложение может таким образом сформировать блок 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()}
Для корректной работы хелпера может потребоваться очистка кеша в «Инсталлере».