Структура плагина

Ниже приведён стандарт структуры плагина в 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.