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

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

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

Загрузка
  1. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.526
    Симпатии:
    3.322
    Версия 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 окт 2013
    Eliont, SAS1024, znaeff и 6 другим нравится это.

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