СтатьиРазное

XenForo - выполнение собственного php-файла

Задача: Для форумного движка XenForo организовать вызов и выполнение собственного php-скрипта с добавлением результата в шаблон страницы. Версия XenForo 1.1.4.

Статья для тех, кто пока не хочет вдаваться в подробности архитектуры и тонкостей программирования под данный движок. Рассматриваемое решение собрано и обобщено из материалов форумов, посвященных xenForo.

Для решения этой задачи нам необходимо пошагово выполнить несколько действий: создать и добавить php-файл и сделать несколько настроек в панели администратора движка.


Теперь более подробно:

1. в директории /libary/ создаем новую папку myNewAddon, где создаем новый файл Listener.php со следующим кодом:

<?php
class myNewAddon_Listener {
public static function templateHook($hookName, &$contents, $params, XenForo_Template_Abstract $template) {
if ($hookName == 'my_php_include') {
ob_start();
// вместо my_php_file.php указываем нужный нам php или html файл с указанием директории
require_once(($_SERVER['DOCUMENT_ROOT'] . '/my_php_file.php');
$contents .= ob_get_contents();
ob_end_clean();
}
}
}

Стоит отдельно уточнить, что название папки (myNewAddon) должно совпадать с названием класса (myNewAddon_Listener). Из-за разницы в названиях может быть ошибка.


2. далее необходимо переключить форум в режим отладки. В файле /libary/config.php меняем:

$config['debug'] = false;

на:

$config['debug'] = true;

Теперь в меню панели администратора появится дополнительный раздел «Разработка».


3. Создаем новое дополнение: в админке Разработка > Создать дополнение. Заполняем поля:

  • ID дополнения: произвольно
  • Заголовок: название своего дополнения, например myNewAddon

Сохраняем, закрываем.


4. Далее Админка > Разработка > Обработчики событий > Создать новый обработчик события. В форме заполняем поля:

  • Обрабатывать событие: template_hook
  • Выполнить обработчик: myNewAddon_Listener :: templateHook
  • Дополнение: myNewAddon

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


5. Создаем новый шаблон Админка > Внешний вид > Шаблоны > Создать новый шаблон. Заполняем поля:

  • Имя шаблона: my_php_code
  • шаблон без заголовка:

<xen:hook name="my_php_include"></xen:hook>


6. Добавляем код:

<xen:include template="my_php_code" />

в любое нужное место, точнее в любой шаблон Админка > Внешний вид > Шаблоны.


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


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Под каким номером в алфавите буква «Б»? (цифра)