Я создал плагин не для Discourse, а для Gatsby. Этот плагин получает списки тем из установки Discourse и преобразует их в узлы Gatsby. Это упрощает использование Discourse в качестве headless CMS.
Мы используем его в проекте для создания микроблога и календаря, который автоматически обновляется при добавлении нового контента на форум.
Вот пример микроблога:
Источник: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
Результат: https://forenadeinkop.se/blogg
А вот календарь:
Источник: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
Результат: https://forenadeinkop.se (внизу страницы)
Надеюсь, это кому-то ещё пригодится!
gatsby-source-discourse-topic-list помогает получать списки тем с платформы форума Discourse и преобразовывать их в узлы Gatsby.
Помимо списка тем, предоставляемого API Discourse, плагин также загружает исходный текст для каждой темы.
Начало работы
- Установите пакет с помощью yarn или npm
yarn add gatsby-source-discourse-topic-list
- Добавьте его в раздел plugins в файле gatsby-config.js
module.exports = {
plugins: [
{
resolve: "gatsby-source-discourse-topic-list",
options: {
url: "https://my-discourse-server.com"
endPoint: 'top.json',
}
}
]
};
Параметры
| Имя | Тип | Описание |
|---|---|---|
| url | объект или строка | Обязательно. URL вашей установки Discourse в виде строки. Если у вас есть два разных API для разработки и продакшена, определите объект с ключами production и development. |
| endPoint | строка | Обязательно. Любой конечный пункт API Discourse, возвращающий topic_list. |
| rootKey | строка | Опционально. Имя вашего API. |
Примеры конечных пунктов API Discourse
Последние темы в категории:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/1.json',
}
Последние темы в категории, отфильтрованные по тегу:
options: {
url: "https://meta.discourse.org"
endPoint: 'tags/c/bug/1/pr-welcome.json',
}
Топовые темы в категории:
options: {
url: "https://meta.discourse.org"
endPoint: 'c/support/6/l/top.json',
}
Полный список конечных пунктов см. в документации API Discourse.
Пример результата
Обратите внимание на добавленное поле raw, содержащее полный необработанный текст темы.
{
"users": [
{
"id": 0,
"username": "string",
"avatar_template": "string"
}
],
"topic_list": {
"can_create_topic": true,
"draft": {},
"draft_key": "string",
"draft_sequence": 0,
"for_period": "string",
"per_page": 0,
"topics": [
{
"id": 0,
"title": "string",
"fancy_title": "string",
"slug": "string",
"raw": "Полный необработанный текст темы в формате Markdown",
...
}
]
}
}
Несколько источников? Несколько экземпляров!
Если вы хотите получать данные из нескольких конечных пунктов в вашем проекте, просто создайте несколько экземпляров плагина. Обязательно задайте уникальный rootKey для каждого экземпляра.
Благодарности
Этот плагин разработан на основе отличного gatsby-source-custom-api от Андреаса Фауста. ![]()
Вклад в развитие
Мы высоко ценим любой вклад.
Не стесняйтесь сообщать об ошибках, предлагать новые функции и создавать pull-запросы.
Если этот плагин оказался вам полезен, поставьте ему звезду на GitHub.
