XF 1 CMF Development 1.0.0 b2

No permission to download
You can download a maximum of 0 files within 24 hours
Видимый копирайт
Нет
Поддерживаемые версии XenForo
  1. 1.3.x
  2. 1.4.x
  3. 1.5.x
Для работы данного плагина у Вас должен быть установлен [CMF] Core.
CMF Development - Разработка дополнений с VCS
=============================================

Основные проблемы при разработке дополнений под XenForo
-------------------------------------------------------
При разработке и поддержке дополнений для XenForo основные проблемы с которыми сталкивается разработчик:

1. Невозможность простого использования репозитариев для каждого отдельного дополнения (все находятся в одном дереве, что не дает нормально использовать функционал IDE по работе с системами контроля версий)
2. Невозможность использовать системы контроля версий для шаблонов и фраз.


Все эти проблемы и неудобства позволяет решить это дополнение


Автозагрузчик WHM_Development_Autoloader
========================================
Общие положения
---------------
Ядро для работы и реализации функционала использует собственный автозагрузчик классов и собственный аналог реестра очень похож на реестр XenForo_Application, но со своими особенностями.

Для включения полного функционала ядра, кроме установки дополнения через админку, надо включить подмену стандартного автозагрузчика XenForo.

Самый ранний вариант без правки оригинальных файлов - это добавление инициализации автозагрузчика в `config.php`, которое никак не повлияет на обновление форума или на установку каких либо сторонних хаков и инициализируется приложением достаточно рано чтобы была возможность перехватить практически любой класс после его загрузки.

Режим разработки. Отдельная папка для каждого аддона.
-----------------------------------------------------
При разработке удобно когда каждый аддон лежит в полностью своей папке, что практически не осуществимо в текущей структуре папок XenForo (php, js и стили - все в разных папках).
Для этого у автолоадера есть режим поиска файлов в папке по альтернативному пути, причем внутри файлы хака могут располагаться исходя из нескольких вариантов соглашений (связано с тем что разработчики как только не называют свои классы при создании расширения).

Настройка автозагрузчика делается через метод `configure`.

#### [пример config-а с комментариями.](config.php.md)
------

Если автозагрузчик не находит класс по альтернативному пути, то он ищет его по первоначальному пути, т.е. в `/library/`.

### Соглашения по структуре и именованию папок дополнений
Разработчики при наименовании своих дополнений обычно используют 2 варианта наименования классов короткий и длинный:

1. Короткий - `AddOnName_SubClass` (соответсвенно хранится в `/library/AddOnName/SubClass.php`)
2. Длинный - `Author_AddOnName_SubClass` (соответсвенно хранится в `/library/Author/AddOnName/SubClass.php`)

Соотвественно id дополнения на основе названия классов можно считать `addonname` и `author_addonname` (для удобства http редиректов будут в нижнем регистре).
После чего простая последовательная проверка на наличие папок `author_addonname` и `addonname` позволяет точно сказать по какому соглашению проименованы классы в аддоне.

Учитывая уже сложившуюся структуру SVN репозиториев для CMF, когда файлы классов лежат в 1 папке `/library/CMF/AddonName/` (т.е. длинное наименование), а все дополнительные файлы (js/xml/style) лежат в `/library/CMF/AddonName/_Extras/`, то автозагрузчик обрабатывает и этот вариант хранения готового дополнения.

Т.е. дополнения с длинным наименованиями можно хранить так:

+ **Расположение по умолчанию:**
+ xml файлов с аддоном и языками может вообще не быть в папках

~~~
/library/CMF/SomeAddon/Model/Forum.php
/library/CMF/SomeAddon/Model/Thread.php
/library/CMF/SomeAddon/Listener.php
/js/cmf/someaddon/thread.js
/styles/cmf/someaddon/image.jpg
~~~

+ **CMF-соглашение:**
+ папка дополнения первые 2 части класса через подчеркивание в нижнем регистре
+ остальная часть пути класса как в library
+ все остальное лежит в _Extras
+ xml лежит в _Extras

~~~
/addons/cmf_someaddon/Model/Forum.php
/addons/cmf_someaddon/Model/Thread.php
/addons/cmf_someaddon/Listener.php
/addons/cmf_someaddon/_Extras/js/cmf/someaddon/thread.js
/addons/cmf_someaddon/_Extras/styles/cmf/someaddon/image.jpg
/addons/cmf_someaddon/_Extras/xml/language.xml
~~~

+ **FullPath-соглашение:**
+ папка дополнения первые 2 части класса через подчеркивание в нижнем регистре
+ все кроме xml лежит в upload по полному пути
+

~~~
/addons/cmf_someaddon/upload/library/CMF/SomeAddon/Model/Forum.php
/addons/cmf_someaddon/upload/library/CMF/SomeAddon/Model/Thread.php
/addons/cmf_someaddon/upload/library/CMF/SomeAddon/Listener.php
/addons/cmf_someaddon/upload/js/cmf/someaddon/thread.js
/addons/cmf_someaddon/upload/styles/cmf/someaddon/image.jpg
/addons/cmf_someaddon/xml/language.xml
~~~

Для дополнений с **коротким** стилем наименования используется только **FullPath-соглашение** только в качестве имени папки используется первая часть класса.

Во всех соглашениях за счет нижнего регистра названия аддона и присутствия частей названия аддона в путях к статическим файлам, легко сделать редирект с `/(js|styles)/` на соответствующую папку аддона.

### Привязка классов к определенному дополнению
Если дополнение использует сторонние классы, с другим префиксом/неймспейсом (типичный пример дополнение `TMS` использует сторонние классы `Diff_*`), то может понадобиться принудительно указать в какой папке искать класс с заданным префиксом.


Режим разработчика
==================
Все дополнения (включая CMF_Core и CMF_Development) находятся в папке /.repos/ (путь настраиваемый).
Автоэкспорт шаблонов и фраз включен.
Добавить в config.php:

~~~php
//Включение недокументированной настройки XenForo для автоэкспорта шаблонов
$config['development']['directory'] = '.';

//Обязательное включение режима отладки
$config['debug']=true;

//Загрузка измененного автолоадера
PHP:
Please, Log in or Register to view codes content!
~~~


Пример настройки locations для nginx
====================================

Пусть все аддоны нахолдятся в папке `/.repos/`

Тогда для поддержки всех вариантов соглашений в конфиг надо добавить:

~~~
Code:
Please, Log in or Register to view codes content!
~~~
Author
admin
Downloads
0
Views
149
First release
Last update
Rating
0.00 star(s) 0 ratings

Share this resource

Similar resources

XF 1  [CMF] Core 1.0.8 GP30.00
Расширение ядра XenForo.
0.00 star(s) 0 ratings
Downloads
0
Updated
Инструмент для быстрого создания плагинов.
0.00 star(s) 0 ratings
Downloads
0
Updated
Блок статусов серверов Minecraft для Xenporta и WidgetFramework.
0.00 star(s) 0 ratings
Downloads
0
Updated
Это простое дополнение позволит вам включить режим отладки и / или разработки из админки.
0.00 star(s) 0 ratings
Downloads
0
Updated
Включение/Отключение режима отладки и разработчика из панели управления
0.00 star(s) 0 ratings
Downloads
0
Updated