Структура плагина
Ниже приведён стандарт структуры плагина в Elgg начиная с Elgg 2.0.
Пример структуры
Ниже приведён пример плагина со стандартной структурой. Для дальнейшего объяснения этой структуры см. детали в следующих разделах. Вашему плагину могут не понадобиться все перечисленные файлы
Следующие файлы для плагина example будут находиться в /mod/example/
actions/
example/
action.php
other_action.php
classes/
VendorNamespace/
PluginNamespace/
ExampleClass.php
languages/
en.php
vendors/
example_3rd_party_lib/
views/
default/
example/
component.css
component.js
component.png
forms/
example/
action.php
other_action.php
object/
example.php
example/
context1.php
context2.php
plugins/
example/
settings.php
usersettings.php
resources/
example/
all.css
all.js
all.php
owner.css
owner.js
owner.php
widgets/
example_widget/
content.php
edit.php
elgg-plugin.php
CHANGES.txt
COPYRIGHT.txt
INSTALL.txt
LICENSE.txt
README.txt
composer.json
Обязательные файлы
Плагины должны предоставлять файл composer.json в корне плагина, чтобы быть распознанными Elgg.
Следовательно, следующее является минимально соответствующей структурой:
mod/example/
composer.json
Действия
Плагины должны размещать скрипты для действий в директории actions/, и более того должны использовать имя действия для определения местоположения в этой директории.
Например, действие my/example/action будет находиться в my_plugin/actions/my/example/action.php. Это делает очень очевидным, какой скрипт связан с каким действием.
Аналогично, тело формы, которая отправляется этому действию, должно находиться в forms/my/example/action.php. Это не только делает очевидной связь между обработчиком действия, кодом формы и именем действия, но и позволяет легко использовать функцию elgg_view_form().
Текстовые файлы
Плагины могут предоставлять различные *.txt в качестве дополнительной документации для плагина. Эти файлы должны быть в синтаксисе Markdown и будут генерировать ссылки в разделах управления плагинами.
- README.txt
должен предоставлять дополнительную информацию о плагине неопределённого характера
- COPYRIGHT.txt
Если включён, должен предоставлять объяснение авторских прав плагина.
- LICENSE.txt
Если включён, должен предоставлять текст лицензии, под которой выпущен плагин.
- INSTALL.txt
Если включён, должен предоставлять дополнительные инструкции по установке плагина, если процесс достаточно сложен (например, если требуется установка сторонних библиотек на хост-машине или требуется получение ключа API от третьей стороны).
- CHANGES.txt
Если включён, должен предоставлять список изменений для их плагина, сгруппированных по номеру версии, с самой последней версией вверху.
Плагины могут включать дополнительные файлы *.txt помимо этих, но интерфейс для их чтения не предоставляется.
Страницы
Для отрисовки полных страниц плагины должны использовать представления ресурсов (которые имеют имена, начинающиеся с resources/). Это позволяет другим плагинам легко заменять функциональность через систему представлений.
Примечание
Причина, по которой мы поощряем эту структуру:
Для формирования логической связи между URL и скриптами, чтобы люди, изучающие код, могли иметь представление о том, что он делает, просто изучив структуру.
Для очистки корневой директории плагина, которая исторически быстро захламлялась скриптами обработки страниц.
Классы
Elgg предоставляет автозагрузку PSR-0 из директории classes/ каждого активного плагина.
Вам рекомендуется следовать стандартам PHP-FIG при написании ваших классов.
Примечание
Файлы с расширением «.class.php» не будут распознаны Elgg.
При организации ваших классов Elgg не требует конкретной структуры. Используйте то, что лучше всего подходит для вашего плагина, но имейте в виду, что он должен быть легко читаемым, функциональность должна быть легко находимой, а разделение функций на разные классы улучшит поддерживаемость и тестируемость.
Поставщики
Включённые сторонние библиотеки любого вида должны быть включены в папку vendors/ в корне плагина. Хотя эта папка не имеет особого значения для движка Elgg, исторически это было место, где ядро Elgg хранит свои сторонние библиотеки, поэтому мы поощряем тот же формат ради согласованности и знакомства.
Представления
Для переопределения представлений ядра представления плагина могут быть размещены в views/, или может использоваться файл конфигурации elgg-plugin.php для более детального сопоставления файлов/путей. См. Представления.
JavaScript и CSS будут находиться в системе представлений. См. JavaScript.