Предыдущее руководство: Developing Discourse Plugins - Part 1 - Create a basic plugin
Начало работы: Шаблоны
Клиентское приложение Discourse написано на JavaScript с использованием фреймворка Ember.js. Ember использует шаблоны для генерации HTML. По этой ссылке есть отличное введение в язык шаблонов, поэтому обязательно внимательно его прочитайте.
Проблема: Добавление элементов в пользовательский интерфейс Discourse
Многие плагины нуждаются в добавлении и расширении веб-интерфейса Discourse. Мы предоставляем механизм для этого, называемый «точки расширения плагина» (plugin outlets) в шаблонах Handlebars.
Если вы просмотрите шаблоны Discourse, то часто увидите следующую разметку:
<PluginOutlet @name="edit-topic" />
Это объявляет точку расширения плагина с именем «edit-topic». Это точка расширения в шаблоне, которую авторы плагинов могут использовать для добавления собственной разметки.
При создании вашего плагина ищите в шаблонах Discourse (в файлах .gjs), которые вы хотите изменить, тег <PluginOutlet />. Если его нет, просто попросите нас добавить его! Мы с радостью добавим такие точки, если у вас есть хороший случай использования. Если вы хотите облегчить и ускорить эту работу для нас, пожалуйста, отправьте запрос на слияние (pull request) на GitHub!
Если вы хотите увидеть некоторые места, где существуют точки расширения плагина, вы можете выполнить следующую команду в POSIX-совместимой оболочке:
git grep -A 1 "<PluginOutlet" -- "*.gjs"
Вы также можете отобразить точки расширения плагина на сайте Discourse, включив панель инструментов разработчика Discourse. Просто введите enableDevTools() в консоли браузера на форуме Discourse и нажмите на значок штекера, который появится слева на странице.
Подключение к точке расширения плагина
После того как вы нашли точку расширения плагина, к которой хотите добавить что-то, вам нужно написать для неё «коннектор» (connector). Коннектор — это компонент .gjs, имя файла которого содержит connectors/<имя точки расширения> в своём пути.
Например, если в шаблоне Discourse есть:
<PluginOutlet @name="evil-trout" />
Тогда любые файлы .gjs, которые вы создадите в директории connectors/evil-trout, будут автоматически добавлены. Так, если вы создадите файл:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.gjs
С содержимым:
<template>
<b>Hello World</b>
</template>
Discourse вставит <b>Hello World</b> в этой точке шаблона.
Обратите внимание, что мы назвали файл hello.gjs — имя файла (в отличие от имени директории) не имеет значения, но оно должно быть уникальным для каждого плагина. Полезно назвать его так, чтобы оно описывало, что вы расширяете. Это упростит отладку в будущем.
Устранение неполадок
- Перепроверьте имя коннектора и убедитесь, что оно точно совпадает с именем плагина.
Дополнительная информация
Продолжение серии
Часть 1: Основы плагинов
Часть 2: Эта тема
Часть 3: Настройки сайта
Часть 4: Настройка git
Часть 5: Интерфейсы администратора
Часть 6: Тесты приемки
Часть 7: Опубликуйте свой плагин
Этот документ находится под контролем версий — предлагайте изменения на GitHub.



