Создание плагина для Discourse может быть действительно простым, если вы освоите несколько особенностей. Цель этого руководства — создать базовый шаблон плагина и познакомить вас с основами.
Ваша среда разработки
Убедитесь, что на вашем компьютере запущена среда разработки Discourse. Я рекомендую воспользоваться соответствующим руководством по настройке и вернуться сюда, когда закончите.
plugin.rb
Используйте GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub для создания полного шаблона плагина Discourse в вашей директории
plugins
Теперь шаблон включен в ядро Discourse, команда
rake plugin:create[имя-плагина]создаст плагин на основе этого шаблона.
При запуске Discourse ищет в директории plugins поддиректории, содержащие файл plugin.rb. Файл plugin.rb выполняет две функции: он является манифестом вашего плагина, содержащим необходимую информацию о нем, включая название, контактные данные и описание. Вторая функция — инициализация любого кода на Ruby, необходимого для работы вашего плагина.
В нашем случае мы не будем добавлять код на Ruby, но файл plugin.rb все равно необходим. Давайте создадим директорию basic-plugin с файлом plugin.rb внутри, содержащим следующий код:
basic-plugin/plugin.rb
# name: basic-plugin
# about: Супер простой плагин для демонстрации работы плагинов
# version: 0.0.1
# authors: Awesome Plugin Developer
# url: https://github.com/yourusername/basic-plugin
После создания этого файла перезапустите локальный сервер, и плагин должен загрузиться.
Важный нюанс!
Если вы привыкли к обычной разработке на Rails, то можете заметить, что с плагинами все не так гладко, когда дело доходит до перезагрузки. Как правило, после внесения изменений в плагин следует Ctrl+c, чтобы остановить сервер, а затем запустить его заново с помощью bin/dev.
Мои изменения не применились! 
Иногда кэш не очищается полностью, особенно когда вы создаете новые файлы или удаляете старые. Чтобы решить эту проблему, удалите папку tmp и запустите Rails заново. На Mac это можно сделать одной командой: rm -rf tmp; bin/dev.
Проверка загрузки плагина
После перезапуска локального сервера перейдите по адресу /admin/plugins (убедитесь, что вы авторизованы как администратор, так как только администраторы могут видеть реестр плагинов).
Если все прошло успешно, вы должны увидеть свой плагин в списке:
Поздравляем, вы только что создали свой первый плагин!
Добавим немного JavaScript
Сейчас ваш плагин ничего не делает. Давайте добавим файл JavaScript, который будет показывать всплывающее окно при загрузке Discourse. Это будет очень раздражать любого пользователя, и такой подход не рекомендуется для реальных плагинов, но он покажет, как вставить JavaScript в наше работающее приложение.
Создайте следующий файл:
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js
export default {
name: "alert",
initialize() {
alert("alert boxes are annoying!");
},
};
Теперь, если вы перезапустите локальный сервер, на экране должно появиться сообщение “alert boxes are annoying!”. (Если этого не произошло, см. раздел «Мои изменения не применились» выше).
Давайте разберем, как это работает:
-
Файлы JavaScript, размещенные в
assets/javascripts/discourse/initializers, автоматически выполняются при загрузке приложения Discourse. -
Этот конкретный файл
export(экспортирует) один объект, который имеет свойстваnameи функциюinitialize. -
Значение
nameдолжно быть уникальным, поэтому я назвал егоalert. -
Функция
initialize()вызывается при загрузке приложения. В нашем случае она просто выполняет наш кодalert().
Теперь вы официальный разработчик плагинов Discourse!
Продолжение серии
Часть 1: Эта тема
Часть 2: Plugin Outlets
Часть 3: Site Settings
Часть 4: Настройка git
Часть 5: Административные интерфейсы
Часть 6: Acceptance tests
Часть 7: Публикация вашего плагина
Этот документ находится под контролем версий — предложить изменения можно на github.

