Иконка ресурса

Динамические под-ссылки в навигационных табах 1

Нет прав для скачивания
Совместимость с XenForo
  1. 1.3
  2. 1.4
  3. 1.5
1) Создайте шаблон DynamicSubLinks - он будет основным контейнером для полученных ссылок. Хук позволит потом встроить внутрь этого тега другой шаблон, с нужным контентом.

Код:
<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) Результат:
Динамические саб-линки, а не забитые статично в шаблоне.
1.png2.png3.png
Автор
Элионт
Скачивания
0
Просмотры
291
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Элионт

Поделиться ресурсом

Назад
Сверху Снизу