Использование smarty в параметрах плагина Есть решение

Добрый день.

Подскажите можно ли как то реализовать возможность выполнения кода смарти в параметрах плагина/темы и т.д.

Поясню допустим есть плагин в настройках которого ест выводимый блок текста на странице, как возможно сделать чтобы в данном поле можно было использовать смарти (и пройти при этом модерацию))


2 ответа

  • 1
    Eugen Nichikov 19 декабря 2016 12:24 # Решение
    $view = wa()->getView();
    $tpl = $plugin->getSettings('template'); // по памяти... чтение настроек плагина.
    $view->assign('somevar', $somevar); // {$wa_url} и т.п. уже автоматом заданы. Также, в зависимости от контекста, могут быть и другие переменные.
    $result = $view->fetch('string:'.$tpl); //это уже выводить там, где нужно, через хук или хелпер.
    
  • 1
    Евгений Григорьев 23 сентября 2017 01:56 #

    Не работает...

    в классе настроек такой вид кода (взят из мануала):

    $plugin = wa('blog')->getPlugin('blogplagin');
        // получаем все настройки плагина, чтобы передать их в шаблон
        $settings = $plugin->getSettings();
        $this->view->assign('settings', $settings);

    в хуке prepare_posts_frontend по всякому пробовал использовать код который указан выше, но по нулям.

    $view = wa()->getView();
          $tpl = $this->getSettings('blog_field'); - поле с настроками
          $view->assign('somevar', $somevar); - ??? 
          $result = $view->fetch('string:', $tpl);

    Можно ли как то поподробней ?

    Мне нужно вывести через хук prepare_posts_frontend содержимое поля $this->getSettings('blog_field')

    • +1
      Евгений Григорьев Евгений Григорьев 23 сентября 2017 08:31 #

      Мой косяк, невнимательность...

      $result = $view->fetch('string:', $tpl);

      вместо

      $result = $view->fetch('string:'. $tpl);

      Но возникает другая ошибка, вывожу это я в хуке prepare_posts_frontend, там есть массив $posts, в настройках плагина, через smarty перебирается этот массив, и при выводе пишет: Notice: Undefined index: $posts.

      {foreach $posts as $post}
      //html код
      {/foreach}

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

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