Создание дополнений для XenForo

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Дополнения расширяют функциональность форума. Разберем создание простого дополнения.

Структура дополнения
Дополнение состоит из:
- addon.json - файл конфигурации
- Классы PHP
- Шаблоны (опционально)
- JavaScript (опционально)

Создание addon.json
Код:
{
    "legacy_addon_id": "",
    "title": "Мое дополнение",
    "version_id": 1000000,
    "version_string": "1.0.0",
    "require": {
        "XF": [2010070, "XenForo 2.0.0+"],
        "php": ["7.0.0", "PHP 7.0.0+"]
    }
}

Создание класса дополнения
Код:
<?php
namespace MyAddon;

class Listener
{
    public static function templatePostRender($templateName, &$content, array &$containerData, \XF\Template\Templater $templater)
    {
        if($templateName == 'forum_list')
        {
            $content = str_replace('Forum List', 'My Custom Forum List', $content);
        }
    }
}
?>

Регистрация слушателей событий
В файле _metadata.json:
Код:
{
    "event_id": "template_post_render",
    "execute_order": 10,
    "callback_class": "MyAddon\\Listener",
    "callback_method": "templatePostRender",
    "active": true,
    "hint": "",
    "description": ""
}

Создание страницы
Код:
<?php
namespace MyAddon\Pub\Controller;

use XF\Mvc\ParameterBag;
use XF\Pub\Controller\AbstractController;

class MyPage extends AbstractController
{
    public function actionIndex(ParameterBag $params)
    {
        $viewParams = [
            'message' => 'Привет из моего дополнения!'
        ];
        
        return $this->view('MyAddon:MyPage', 'myaddon_page', $viewParams);
    }
}
?>

Создание маршрута
В файле _metadata.json:
Код:
{
    "route_type": "public",
    "route_prefix": "myaddon",
    "sub_name": "",
    "format": "",
    "build_class": "XF\\Mvc\\Router",
    "build_method": "buildLink",
    "controller": "MyAddon\\Pub\\Controller\\MyPage",
    "context": "",
    "action_prefix": ""
}

Создание шаблона
Создайте файл myaddon_page в папке шаблонов:
Код:
<xf:title>Моя страница</xf:title>

<div class="block">
    <div class="block-container">
        <div class="block-body">
            <p>{$message}</p>
        </div>
    </div>
</div>

Установка дополнения
1. Загрузите файлы дополнения на сервер
2. Перейдите в админ-панель
3. Установите дополнение через интерфейс

Обновление дополнения
1. Загрузите новые файлы
2. Обновите версию в addon.json
3. Обновите через админ-панель

Важные моменты:
- Следуйте стандартам кодирования XenForo
- Тестируйте дополнение перед публикацией
- Документируйте функциональность
- Обеспечьте совместимость с другими дополнениями

Дополнения расширяют возможности форума!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху