Как стать автором
Обновить

XenForo: добавляем новую страницу в раздел помощи

Время на прочтение3 мин
Количество просмотров5.2K
Недавно мне понадобилось создать отдельную страницу в разделе помощь на форуме, работающем на движке XenForo. Как оказалось, сделать это проще простого. Более того, не пришлось править код самого движка, что естественно, в будущем при обновлении ядра нам облегчит жизнь. Сразу оговорюсь, что статья не из разряда новаторских, а скорее How-To для самого себя.



Итак, нам потребуется создать всего лишь 2 файла Help.php и LoadClassController.php раскидав их соответственно по папкам ControllerPublic и Listener.

Содержимое Help.php
<?php

class AnyFolder_ControllerPublic_Help extends XFCP_AnyFolder_ControllerPublic_Help
{
public function actionYouaction()
{
return $this->_getWrapper('youaction',
$this->responseView('XenForo_ViewPublic_Help_Уouaction', 'help_youaction')
);
}
}


Содержимое LoadClassController.php
<?php

class AnyFolder_Listener_LoadClassController
{
    public static function extendHelpController($class, array &$extend)
    {
        if ($class == 'XenForo_ControllerPublic_Help')
        {
            $extend[] = 'AnyFolder_ControllerPublic_Help';
        }
    }
}


В итоге у нас должно получиться следующее дерево документов
  • AnyFolder
    • ControllerPublic
      • Help.php
    • Listener
      • LoadClassController.php


Заливаем наше дерево документов в папку library. После чего открываем в этой же папке (library) файл config.php и включаем режим отладки дописав туда
$config['debug'] = true;


Режим отладки мы включили для того, чтобы в панели администратора получить доступ к вкладке разработка. На этой вкладке нам потребуется создать новое событие. Для этого откроем Обработчики событийСоздать новое событие (или сразу открыв в браузере ссылку вида http://example.com/path_you_forum/admin.php?code-event-listeners/add).

Теперь выбираем событие load_class_controller, в качестве обработчика указываем
AnyFolder_Listener_LoadClassController::extendHelpController. Остальное оставляем без изменений.

Теперь дело осталось за шаблонами. Но прежде, я хотел бы немного пояснить код описаный выше. Как вы уже наверное поняли, AnyFolder это название вашей папки. Это же название фигурирует и в классе, который мы создаем и подругжаем в будущем. Аналогичная ситуация с функцией actionYouaction и ее параметрами youaction, XenForo_ViewPublic_Help_Уouaction, help_youaction. Таким образом мы определили, что наша страница будет открываться по адресу http://example.com/path_you_forum/help/youaction (в случае, если включено ЧПУ) и http://example.com/path_you_forum/?help/youaction. Думаю не стоит пояснять, какие действия необходимо проделать, чтобы разместить файлы в папке с любым другим названием и как изменить URL вашей страницы помощи.

Ну да ладно, закончим с программированием и приступим к верстке. Для этого нам потребуется отредактировать всего лишь несколько шаблонов и добавить фразы в языковые пакеты.
В шаблон help_wrapper по аналогии с другими пунктами добавим наш новый

<li><a href="{xen:link help/youaction}" class="{xen:if "{$selected} == 'youaction'", 'secondaryContent', 'primaryContent'}">{xen:phrase youaction}</a></li>


Точно так же поступим и с help_index
<dl>
<dt><a href="{xen:link help/gude}">{xen:phrase youaction}</a></dt>
<dd>{xen:phrase view_text_youaction}</dd>
</dl>


На последок отредактируем шаблон navigation, добавив в блок с хуком navigation_tabs_help свой пункт.
<li><a href="{xen:link help/youaction}">{xen:phrase youaction}</a></li>


В языковых пакетах нам потребуется создать всего лишь 3 фразы:
  • view_text_youaction — описание пункта помощи
  • youaction — заголовок нашего пункта помощи
  • gude_rules_text — html код нашей страницы


Завершим все созданием нового шаблона help_youaction (именно это название у нас прописано в функции actionYouaction)
<xen:title>{xen:phrase gude}</xen:title>
<div class="baseHtml">
{xen:phrase gude_rules_text}
</div>


P.S. Не забудьте отключить режим отладки;-)
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+1
Комментарии1

Публикации