Документация по расширению Discourse с помощью плагинов, тем и компонентов тем, работе с основным кодом и использованию API Discourse.
Введение
- Введение: Введение в разработку для Discourse
Окружения разработки
- Dev Container: Разработка Discourse с использованием Dev Container
- GitHub Codespaces: Разработка Discourse в GitHub Codespaces
- Настройка Docker: Установка Discourse для разработки с использованием Docker
- Настройка macOS: Установка Discourse на macOS для разработки
- Настройка Ubuntu/Debian: Установка Discourse на Ubuntu или Debian для разработки
- Настройка Windows: Установка Discourse на Windows для разработки
- Плагины без Docker: Установка плагинов в вашем окружении разработки без Docker
- Локальная настройка: Как настроить локальное окружение разработки Discourse?
- Мультисайт: Настройка окружения разработки для нескольких сайтов
- Настройка Fedora: Настройка Discourse для разработки на Fedora Linux
Код и внутреннее устройство
- Компоненты Ember: Добавление компонентов Ember в Discourse
- UI-кит: UI-кит общих компонентов, хелперов и модификаторов Discourse
- Линтинг и форматирование: Автоматический линтинг и форматирование кода перед коммитами
- Приёмочные тесты: Написание приёмочных тестов и тестов компонентов для кода Ember в Discourse
- Запуск наборов тестов: Как запустить наборы тестов QUnit для ядра, плагинов и тем Discourse
- Совместимость версий: Фиксация версий плагинов и тем для старых установок Discourse (ветки d-compat)
- Владение объектами Ember: Владение объектами Ember (getOwner, инъекции сервисов и т. д.)
- Производительность JS: Использование «tachometer» от Google для измерения изменений производительности JS в Discourse
- CI с GitHub Actions: Настройка непрерывной интеграции с использованием GitHub Actions
- Расширения Markdown: Руководство разработчика по расширениям Markdown
- Конвертация модальных окон: Перевод модальных окон с устаревших контроллеров на новый API компонента DModal
- API DModal: Использование API DModal для отрисовки модальных окон (также известных как всплывающие окна/диалоги) в Discourse
- JS API: Использование JS API
- Коннекторы выходов плагинов: Использование коннекторов выходов плагинов из темы или плагина
- modifyClass: Использование modifyClass для изменения поведения ядра
- Создание маршрутов: Создание маршрутов в Discourse и отображение данных
- Метод аутентификации: Добавление нового «управляемого» метода аутентификации в Discourse
- Случайная сериализация моделей ActiveRecord: Предотвращение случайной сериализации моделей ActiveRecord
- Переопределение шаблонов: (не рекомендуется) Переопределение шаблонов Discourse из темы или плагина
- Объекты сервисов: Использование объектов сервисов в Discourse
- Системные спецификации: Написание сквозных системных спецификаций для пользовательского интерфейса Discourse
- FormKit: Инструментарий Discourse для отрисовки форм.
- Триггеры AppEvents: Справочник по триггерам AppEvents
- Трансформеры: Использование трансформеров для кастомизации значений и поведения на стороне клиента
- Кастомизация списка тем: Кастомизация списка тем
- Руководство по CSS: Руководство по CSS-классам с использованием BEM
- Подсказки типов и валидация JS: Подсказки типов и валидация JavaScript (typescript)
- Проектирование для устройств: Проектирование для разных устройств (касание и наведение)
- Проектирование для адаптивной ширины: Проектирование для адаптивной ширины (брейкпоинты, область просмотра и контейнеры)
- Примитивы жестов: Примитивы перетаскивания, изменения размера и жестов
- Разделение бандлов: Разделение бандлов для плагинов
Плагины
- Базовый плагин: Разработка плагинов Discourse - Часть 1 - Создание базового плагина
- Выход плагина: Разработка плагинов Discourse - Часть 2 - Подключение к выходу плагина
- Настройки сайта: Разработка плагинов Discourse - Часть 3 - Добавление пользовательских настроек сайта
- Настройка Git: Разработка плагинов Discourse - Часть 4 - Настройка git
- Интерфейс администратора: Разработка плагинов Discourse - Часть 5 - Добавление интерфейса администратора
- Приёмочные тесты: Разработка плагинов Discourse - Часть 6 - Добавление приёмочных тестов
- Публикация плагина: Разработка плагинов Discourse - Часть 7 - Публикация вашего плагина
- Новые локали: Добавление новой локали из плагина
- Интеграция чата: Добавление нового провайдера в discourse-chat-integration
- Расширение markdown-it: Переупаковка расширения markdown-it в виде плагина Discourse
- Автозагрузка Rails: Структурирование плагина для автозагрузки Rails
Темы и компоненты
- Разработка тем: Разработка тем и компонентов тем Discourse
- Быстрая справка: Быстрая справочная книга для разработчиков тем
- Руководство для дизайнеров: Руководство дизайнера по началу работы с темами в Discourse
- Theme Creator: Начало работы с Theme Creator и CLI тем
- CLI тем: Установка консольного приложения Discourse Theme CLI для помощи в создании тем
- Структура темы: Структура тем и компонентов тем
- Несколько JS-файлов: Разделение JavaScript темы на несколько файлов
- Несколько SCSS-файлов: Разделение SCSS темы на несколько файлов
- Настройки темы: Добавление настроек в вашу тему Discourse
- Объекты для настроек темы: Тип объектов для настройки темы
- Миграция настроек: Миграция настроек темы Discourse
- Метаданные темы: Добавление метаданных и скриншотов в тему
- Переменные ядра: Использование переменных ядра Discourse в вашей теме
- Локализуемые строки: Добавление локализуемых строк в темы и компоненты тем
- E2E-тестирование: Сквозное системное тестирование тем и компонентов тем
- Минимизация поддержки: Минимизация поддержки кастомизаций темы
- Размеры шрифтов: Изменение размеров шрифтов в ваших темах
- Включение ресурсов: Включение ресурсов (например, изображений, шрифтов) в темы и компоненты
- Пользовательские иконки: Замена стандартных SVG-иконок Discourse на пользовательские иконки в теме
- Тёмный режим: Обновление тем и плагинов для поддержки автоматического тёмного режима
- Модификаторы темы: Модификаторы темы: краткое введение
- Псевдоэлементы: Вставка текста или изображений в любом месте вашего сайта с помощью CSS-псевдоэлементов
- Компонент шрифтов: Создание и обмен компонентом темы шрифтов
- Язык Highlight.JS: Установка нового языка для Highlight.JS через компонент темы
- Содержимое главной страницы: Добавление пользовательского содержимого, отображаемого только на вашей главной странице
- Формат сообщений: Поддержка Message Format для локализации
- Глобальные изменения иконок: Изменение иконок глобально
- Альтернативные иконки: Альтернативные иконки
- Стиль вики-поста: Изменение стиля вики-поста
- Цветовая схема: Создание и обмен цветовой схемой
- Меню навигации: Использование параметра запроса
navigation_menuдля предпросмотра боковой панели или других вариантов - Стили содержимого постов: Кастомизация содержимого постов с помощью собственных стилей
- Скриншоты темы: Добавление скриншотов предпросмотра в темы Discourse
- Настраиваемые настройки сайта: Управление настройками сайта с помощью тем
Общие руководства
- Белый лейбл мобильных приложений: Вещи, о которых стоит подумать, прежде чем решать, что делать белый лейбл для мобильных приложений Discourse
- Пользовательские автоматизации: Создание пользовательских автоматизаций
- Публичный дамп данных: Публичный дамп данных Discourse
- AI-оценки: Запуск AI-оценок Discourse
Учебник по разработке тем
- 1 - Введение: Учебник для разработчиков тем: 1. Введение
- 2 - Удалённая тема: Учебник для разработчиков тем: 2. Создание удалённой темы
- 3 - CSS: Учебник для разработчиков тем: 3. CSS в темах
- 4 - Выходы: Учебник для разработчиков тем: 4. Использование выходов для вставки и замены содержимого
- 5 - Компоненты: Учебник для разработчиков тем: 5. Создание и использование компонентов
- 6 - JS API: Учебник для разработчиков тем: 6. Использование JS API
- 7 - Заключение: Учебник для разработчиков тем: 7. Итоги