Руководство по написанию кода плагинов

В дополнение к стандартам кодирования Elgg, это руководство по созданию плагинов. Встроенные плагины обновляются до этого формата, и все авторы плагинов должны следовать этим рекомендациям в своих плагинах.

См.также

Обязательно следуйте Структура плагина для структуры вашего плагина.

Предупреждение

Не изменяйте ядро

Используйте стандартизированную маршрутизацию с обработчиками страниц

  • Пример: плагин закладок

  • Обработчики страниц должны принимать следующие стандартные URL:

    Назначение

    URL

    Все

    page_handler/all

    Пользователь

    page_handler/owner/<username>

    Друзья пользователя

    page_handler/friends/<username>

    Отдельная сущность

    page_handler/view/<guid>/<title>

    Добавить

    page_handler/add/<container_guid>

    Редактировать

    page_handler/edit/<guid>

    Список групп

    page_handler/group/<guid>/owner

  • Включайте скрипты обработчика страниц из обработчика страниц. Почти каждый обработчик страниц должен иметь скрипт обработчика страниц. (Пример: bookmarks/all => mod/bookmarks/views/default/resources/bookmarks/all.php)

  • Передавайте аргументы, такие как guid сущностей, в представление ресурса через $vars в elgg_view_resource().

  • Вызывайте elgg_gatekeeper() и elgg_admin_gatekeeper() в функции обработчика страниц, если требуется.

  • URL группы должен использовать представления типа resources/groups/*.php для отрисовки страниц.

  • Обработчики страниц не должны содержать HTML.

Используйте стандартизированные обработчики страниц и скрипты

  • Пример: плагин закладок

  • Храните функциональность страниц в mod/<plugin>/views/default/resources/<page_handler>/<page_name>.php

  • Используйте elgg_view_resource('<page_handler>/<page_name>') для отрисовки.

  • Используйте макет страницы по умолчанию в скриптах обработчика страниц: $content = elgg_view_layout('default', $options);

  • Скрипты обработчика страниц не должны содержать HTML

  • Вызывайте elgg_push_entity_breadcrumbs() или elgg_push_collection_breadcrumbs() в скриптах обработчика страниц.

  • Нет необходимости беспокоиться об установке владельца страницы, если URL в стандартизированном формате

  • Для контента группы проверяйте container_guid с помощью elgg_get_page_owner_entity()

Представление object/<subtype>

  • Пример: плагин закладок

  • Убедитесь, что есть представления для $vars['full_view'] == true и $vars['full_view'] == false

  • Проверяйте объект в $vars['entity']. Используйте elgg_instance_of(), чтобы убедиться, что это сущность нужного типа. Верните true для прерывания представления, если сущность отсутствует или неверна.

  • Используйте новые представления list body и list metadata для помощи в форматировании. Вы должны использовать почти никакой разметки в этих представлениях.

  • Обновите структуру действий — Пример: плагин закладок.

  • Используйте пространства имён для файлов действий и имён действий (пример: mod/blog/actions/blog/save.php => action/blog/save)

  • Используйте следующие URL действий:

    Назначение

    URL

    Добавить

    action/plugin/save

    Редактировать

    action/plugin/save

    Удалить

    action/plugin/delete

  • Сделайте так, чтобы действие удаления принимало action/<handler>/delete?guid=<guid>, чтобы меню сущности метаданных имело правильный URL по умолчанию

Действия

Действия — это переходные состояния для выполнения действия, такого как обновление базы данных или отправка уведомления пользователю. При правильном использовании действия обеспечивают уровень контроля доступа и защищают от атак CSRF.

Действия требуют отправки токенов действия (CSRF) через GET/POST, но они добавляются автоматически elgg_view_form() и при использовании аргумента is_action представления output/url.

Лучшие практики для действий

Файлы действий включаются в систему действий Elgg; как и представления, они не являются обычными скриптами, исполняемыми пользователями. Не загружайте ядро Elgg в вашем файле и не направляйте пользователей загружать его напрямую.

Поскольку действия чувствительны ко времени, они не подходят для ссылок в электронных письмах или других отложенных уведомлениях. Примером этого могут быть приглашения присоединиться к группе. Чистый способ создания ссылки-приглашения — создать обработчик страниц для приглашений и отправить эту ссылку пользователю по электронной почте. Затем ответственность за создание ссылок действий для пользователя, чтобы присоединиться или проигнорировать запрос на приглашение, лежит на обработчике страниц.

Учитывайте, что действия могут отправляться через запросы XHR, а не только через ссылки или отправку форм.

Прямой вызов файла

Это просто: Не делайте этого. За исключением интеграции сторонних приложений, нет причин напрямую вызывать файл в директории mods.