- Совместимость с XenForo
- 1.3
- 1.4
- 1.5
1) Создайте шаблон DynamicSubLinks - он будет основным контейнером для полученных ссылок. Хук позволит потом встроить внутрь этого тега другой шаблон, с нужным контентом.
2) Создайте шаблон DynamicSubLinks_hook - он будет рендериться из пхп с полученным набором данных и выводить сами ссылки.
3) Создайте сам хук - пхп класс, который будет выполнять выборку данных и сбор шаблона.
4) Класс для добавления навтаба.
5) Роутинг
6) Регистрируем роутинг(указывая класс из пункта 5), листенер для события navigation_tabs (указывая класс из пункта 4), и листенер для события template_hook (указывая класс из пункта 3).
7) Контроллер
8) Результат:
Динамические саб-линки, а не забитые статично в шаблоне.
Код:
<ul class="secondaryContent blockLinksList">
<xen:hook name="DynamicSubLinks_dropdown">
</xen:hook>
</ul>
2) Создайте шаблон DynamicSubLinks_hook - он будет рендериться из пхп с полученным набором данных и выводить сами ссылки.
Код:
<xen:foreach loop="$categories" value="$cat">
<li><a href="{xen:link 'DynamicSubLinks','','category={$cat}'}">{$cat}</a></li>
</xen:foreach>
3) Создайте сам хук - пхп класс, который будет выполнять выборку данных и сбор шаблона.
Код:
<?php
class DynamicSubLinks_hook
{
public static function templateHook($hookName, &$contents, $params, XenForo_Template_Abstract $template) {
if ($hookName == 'DynamicSubLinks_dropdown')
{
$categories = explode("/","Категория1/Категория2/Категория3");
$params = array('categories' => $categories);
$addon = $template->create('DynamicSubLinks_hook', $params);
$contents .= $addon->render();
}
}
}
4) Класс для добавления навтаба.
Код:
<?php
class DynamicSubLinks_tab
{
public static function addTab(array &$extraTabs, $selected)
{
$extraTabs['DynamicSubLinks'] = array(
'position' => 'end',
// 'title' => new XenForo_Phrase('DynamicSubLinks_title'),
'title' => 'DynamicSubLinks',
'href' => XenForo_Link::buildPublicLink('DynamicSubLinks'),
'selected' => ($selected == 'DynamicSubLinks'),
'linksTemplate' => 'DynamicSubLinks'
);
}
}
5) Роутинг
Код:
<?php
class DynamicSubLinks_route implements XenForo_Route_Interface
{
public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
{
return $router->getRouteMatch('DynamicSubLinks_controller', $routePath, 'DynamicSubLinks');
}
}
6) Регистрируем роутинг(указывая класс из пункта 5), листенер для события navigation_tabs (указывая класс из пункта 4), и листенер для события template_hook (указывая класс из пункта 3).
7) Контроллер
Код:
<?php
class DynamicSubLinks_controller extends XenForo_ControllerPublic_Abstract
{
public function actionIndex()
{
$category = $this->_input->filterSingle('category', XenForo_Input::STRING);
$viewParams = array(
'category' => $category
);
return $this->responseView('DynamicSubLinks', 'DynamicSubLinks_index', $viewParams);
}
}
8) Результат:
Динамические саб-линки, а не забитые статично в шаблоне.