Использование метода плагина "Магазин" в шаблоне приложения "Рассылки" Есть решение

Есть метод плагина приложения "Магазин":

public static function getCompanyName() {
    return '<b>«Название компании»</b>';
}

В шаблоне приложения "Рассылки", согласно инструкции, пытаюсь обратиться к методу:

{if $wa->shop}
	{if method_exists('shopEasymailerPlugin', 'getCompanyName')}
		{$company_name = shopEasymailerPlugin::getCompanyName()}
	{/if}
{/if}
{$company_name}

Но после отправки письма вместо вывода переменной "$company_name" приходит просто текст: "{ $company_name = shopEasymailerPlugin::getCompanyName()}"(скриншот: https://yadi.sk/d/6YoUPCK4_rWJ...).


Попробовал перенести данный код в "блок сайта" и вызвать блок в шаблоне приложения "Рассылки":

{$wa->block("test_block")}

И в таком случае, приложение "Рассылка" корректно выводит переменную (скриншот: https://yadi.sk/d/4yPZ9JOymIAO...). Вроде так всё работает, но лишний раз использовать блоки сайта не хочется...


----

Вопрос: что можно сделать, чтобы не приходилось переносить вызов метода плагина в "Блоки сайта"? Откуда берется этот пробел (https://yadi.sk/d/HylBHY4lT2fH...)? Что я делаю не так?

8 ответов

  • 1
    Eugen Nichikov 9 июля 2020 14:28 # Решение

    Старый баг. Только блоки :(

    • +1
      waResearchLab waResearchLab 9 июля 2020 14:32 #

      Баг, не баг, но по коду, насколько я помню, именно так и задумано...

    • +1
      chikurov-seo chikurov-seo 9 июля 2020 14:39 #

      хоть бы где информация об этом была. Попробовал использовать блок "на авось", а оно вдруг заработало.

  • 1
    chikurov-seo 9 июля 2020 16:24 #

    да ёпрст.

    1. Попробовал подключить блок сайта и через него выводить в $wa->globals(). Но в приложении "Рассылки" $wa->globals() не работает.

    2. Попробовал использовать параметры блоков:

    {$company_name = trim($wa->block("easymailer_variables", ['param' => 'company_name']))|regex_replace:'/\s+/':' '}

    но так тоже не работает.


    Что не так с рассылками? Мне всего лишь нужно получить результат 7 методов из плагина другого приложения. Кто знает способ, кроме как создать для этого 7 отдельных блоков сайта?

    • +1
      kadurinho kadurinho 9 июля 2020 16:35 #

      Создать блок, в нем по переменным проверять к чему обратится. Например

      {$wa->block("block.name", ['param' => 'value1'])}

      В теле блока

      {if $param == 'value1'}
      ...
      {elseif $param == 'value2'}
      ....
      {elseif $param == 'value3'}
      ....
      {/if}

      и не надо создавать 7 блоков

      • +1
        chikurov-seo chikurov-seo 9 июля 2020 17:18 #

        спасибо. я так и делал. только вместо

        {$wa->block("block.name", ['param' => 'value1'])}

        пытался сделать убрать всякие лишние пробелы:

        {trim($wa->block("block.name", ['param' => 'value1']))|regex_replace:'/\s+/':' '}

        в итоге, отказался от "regex_replace", и заработало:

        {trim($wa->block("block.name", ['param' => 'value1']))}

        • +1
          Eugen Nichikov Eugen Nichikov 9 июля 2020 19:20 #

          странный подход к вырезанию пробелов...

          Внутри блока всё завернуть в {strip} ... {/strip} и всё

          • +1
            chikurov-seo chikurov-seo 10 июля 2020 17:24 #

            да, {strip} ... {/strip} удобнее в данном случае. Возьму на вооружение, спасибо.

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

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