1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.2.x Использование <xen:callback /> для выполнения произвольного кода в шаблоне

Тема в разделе "Статьи по XenForo Framework", создана пользователем infis, 24.10.2013.

Загрузка
  1. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    В Xenforo 1.2 появился новый тег <xen:callback>. Это позволяет вызывать код напрямую из шаблона.

    К примеру, нам нужно выполнить banner.php и результат вывести в шаблон.

    1) Сначала создаем index.php в папке /library/Example/Banner
    PHP:
    <?php
    class Example_Banner_index {
      public static function 
    getHtml() {
        include 
    '/home/path_to_file/www/banner.php';
        return 
    $output;
      }
    }
    ?>
    2) Затем создаем banner.php
    PHP:
    <?php
    $output 
    'Hello World';
    ?>
    3) Добавляем в шаблон ad_above_top_breadcrumb
    HTML:
    <xen:callback class="Example_Banner_index" method="getHtml"></xen:callback>
    Для вызова можно применять более широкий синтаксис:
    PHP:
    public static function getHtml($content$paramsXenForo_Template_Abstract $template){
    Тогда в шаблоне вызов должен быть следующий:
    HTML:
    <xen:callback class="Example_Banner_index" method="getHtml" params="{xen:array 'foo=baz'}">content</xen:callback>
    В этом случае применяем это так:
    PHP:
    <?php

    class Example_Banner_index{

        public static function 
    getHtml($content$params, \XenForo_Template_Abstract $template){
            
    $return '';

            
    $return .= 'passed content :  ' $content ."<br >";
            
    $return .= 'passed params : ' var_dump($params);
            
    // you can even attach a existing template to the output
            
    $templateParams = array();
            
    $t $template->create('template'$templateParams);
            
    $return .= $t;
            return 
    $return;
        }
    }
    Данная статья является компиляцией следующих материалов:
    Код:
    http://xenforo.com/community/threads/xen-callback-tag.53824/
    http://xenforo.com/community/threads/provide-the-ability-to-call-a-php-file-directly-from-template.47825/#post-566508
     
    Последнее редактирование: 24.10.2013
    mist, GeorG, Eliont и 8 другим нравится это.
  2. mist

    mist Местный

    Регистрация:
    21.06.15
    Сообщения:
    8
    Симпатии:
    3
    Cпасибо за мануал, к сожалению в xf2 не работает. Подскажите пожалуйста, как использовать php-коды в шаблонах xenforo 2?
     
  3. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    На офе смотрите. Например, XF 2.0 - Outputting PHP Callback
     
    mist нравится это.
  4. sonic

    sonic Местный

    Регистрация:
    08.10.10
    Сообщения:
    341
    Симпатии:
    248
    Template syntax - XenForo 2.0 Documentation
     
    mist нравится это.

Поделиться этой страницей