Видимость хелперов из шаблонов

Я не знаю баг это или фича, помогите разобраться.

Создаю хелпер в плагине приложения site, потом вставляю в приложении shop/themes/default/main.html такой код:

{siteMypluginHelper::hello()}

Все работает отлично. в footer.html тоже работает. А вот в product.html или в category.html не работает.

Я не пойму в чем причина такой избирательной видимости хелперов. Помогите разобраться.

1 ответ

  • 1
    Михаил Ушенин Webasyst 15 августа 2014 08:53 #
    main.html и footer.html подключаются из шаблона index.html, который относится к родительской теме, т. е. к теме Сайта.
    product.html подключается из экшена магазина (wa-apps/shop/lib/actions/frontend/shopFrontendProduct.action.php)
    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 15 августа 2014 08:55 #
      Хелперы выполняются только в шаблонах приложения, для которого они созданы.
      Можно выполнять в шаблонах приложения "чужие" хелперы, предварительно проинициализировав соответствующее приложение:

      {if $wa->site}
      {siteMypluginHelper::hello()}
      {/if}
      • 0
        ITFrogs ITFrogs 16 августа 2014 17:12 #
        Мне хочется создать хелпер, который будет виден из всех приложений. Есть хоть какой-то путь для этого? Или не хелпер, но чтобы можно было вызвать из смарти.
        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 18 августа 2014 02:16 #
          Если такой вариант с плагином не устраивает или неудобен, можно создать отдельное приложение с таким хелпером и вызывать его так: {$wa->myapp->helperName()}, где:
          myapp — идентификатор вашего приложения
          helperName — имя публичного метода класса myappViewHelper этого приложения

          Подробнее: http://www.webasyst.ru/developers/docs/helpers/
    • 0
      ITFrogs ITFrogs 16 августа 2014 17:13 #
      Так и думал. Спасибо за подтверждение.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите