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

Добавление ссылки на страницу в меню навигации

Тема в разделе "Основные вопросы по XenForo", создана пользователем CyberAP, 24.04.2011.

Загрузка
  1. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    При создании страницы можно выбрать обработчик. Может кто-нибудь подскажет код который бы добавлял в шапку ссылку на эту страницу? Там вроде бы не много надо написать.
     
  2. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Там немного не так... Надо добавлять отдельный обработчик для события navigation_tabs, по типу:
    PHP:
    class MyAddon_EventListener_Page //Название произвольное, но лежать должно по правильному пути
    {
    public static function 
    navtabs(array &$extraTabs$selectedTabId)
    {
    $extraTabs['armory'] = array(
    'title' => new XenForo_Phrase('my_tab_title'), //здесь фраза которая будет использоваться для заголовка, необходимо глобальное кеширование этой фразы
    'href' => XenForo_Link::buildPublicLink('pages/my_page/'), //здесь путь до необходимой страницы
    'selected' => ($selectedTabId == 'pages'), // тут точно не скажу, может так, а может и немного по другому -  надо более детально смотреть код
    // 'position' => 'home', // здесь выбираем позицию home, end или middle
    'position' => 'end',
    'linksTemplate' => false,
    // 'linksTemplate' => 'My_Links_Navtabs', //это наименование шаблона дополнительных ссылок ниже вкладок, false - без ссылок
    );
    }
    }
     
    Jumuro и CyberAP нравится это.
  3. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    А какой метод?

    Ввожу название метода обработчика как navtabs и мне выдаёт "Пожалуйста, введите корректное имя метода обработчика"
    При этом наверху выдаётся код самого скрипта.

    PHP:
    class CyberAP_CustomNavLinks_EventListener_Page
    {
        public static function 
    navtabs(array &$extraTabs$selectedTabId)
        {
            
    $extraTabs['armory'] = array(
                
    'title' => new XenForo_Phrase('cyberap_pageid_11_title'), //здесь фраза которая будет использоваться для заголовка, необходимо глобальное кеширование этой фразы
                
    'href' => XenForo_Link::buildPublicLink('pages/test/'), //здесь путь до необходимой страницы
                
    'selected' => ($selectedTabId == 'pages'),
                
    'position' => 'middle'// здесь выбираем позицию home, end или middle
                
    'linksTemplate' => false,
                
    // 'linksTemplate' => 'My_Links_Navtabs', //это наименование шаблона дополнительных ссылок ниже вкладок, false - без ссылок
            
    );
        }
    }
    Залил в директорию library/CyberAP/CustomNavLinks/EventListener
    --- добавлено : Apr 24, 2011 5:07 PM ---
    До меня дошло :)
    Надо было вначале просто <?php добавить :)
     
  4. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Теперь вопрос есть: можно ли как-то через перфиксы роутинга сделать ссылку на страицу не /forum/pages/pagename, а /forum/pagename или даже просто /pagename?
     
  5. Alex Gludo

    Alex Gludo Bazinga!

    Регистрация:
    24.01.11
    Сообщения:
    484
    Симпатии:
    293
    Такой вопрос, точнее проблема. Плохо в этом разбираюсь, но нужно сделать данным методом дополнительную кнопку в навтабе ведущую на страницу, созданную в узлах.

    Делал так:
    создал класс
    Код:
    <?php
    
    class Altbit_CustomNavLinks_EventListener_Tab
    {
        public static function navtabs(array &$extraTabs, $selectedTabId)
        {
            $extraTabs['armory'] = array(
                'title' => new XenForo_Phrase('altbit_pageid_52_title'),
                'href' => XenForo_Link::buildPublicLink('/pages/chat/'),
                'selected' => ($selectedTabId == 'pages'),
                'position' => 'middle',
                'linksTemplate' => false,
                // 'linksTemplate' => 'My_Links_Navtabs',
            );
        }
    }
    В настройках обработчика страницы сделал так:
    Класс: Altbit_CustomNavLinks_EventListener_Tab Метод: navtabs

    в итоге вкладка в меню не появилась, а при попытке вручную вызвать нужную ссылку получил следующее:
    Код:
    Server Error
    
    Parameter 1 to Altbit_CustomNavLinks_EventListener_Tab::navtabs() expected to be a reference, value given
    
        XenForo_Application::handlePhpError()
        call_user_func_array() in XenForo/ControllerPublic/Page.php at line 46
        XenForo_ControllerPublic_Page->actionIndex() in XenForo/FrontController.php at line 310
        XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 132
        XenForo_FrontController->run() in /****/****/********.ru/public_html/index.php at line 13
    
    З.Ы.
    Суть в том, что кнопка в навтабе должна быть активной при нахождении на нужной странице, так же желательно, чтобы и в хлебных крошках было упоминание о нахождении на нужной странице.

    Очень надеюсь на Вашу помощь в данной проблеме.
     
  6. Alex Gludo

    Alex Gludo Bazinga!

    Регистрация:
    24.01.11
    Сообщения:
    484
    Симпатии:
    293
    Вроде частично разобрался. Сделал через добавление нового обработчика событий.
    Вкладка нужная появилась и ведет на нужную страницу, но не становится "выбранной" при нахождении на нужной странице. Как это сделать?))
     
  7. Alex Gludo

    Alex Gludo Bazinga!

    Регистрация:
    24.01.11
    Сообщения:
    484
    Симпатии:
    293
    Romchik® нравится это.

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