Всем привет,
Я многому научился, используя шаблоны, плагины и всю замечательную магию в Discourse. Возможно ли вывести все теги, используемые в категории, в верхней части списка тем?
Всем привет,
Я многому научился, используя шаблоны, плагины и всю замечательную магию в Discourse. Возможно ли вывести все теги, используемые в категории, в верхней части списка тем?
Я могу отчасти решить это с помощью: Discourse Popular Tag Sidebar
Посмотрю, что смогу узнать.
Вы легко можете получить top_tags:
Импортируйте ajax — import { ajax } from "discourse/lib/ajax";, затем →
ajax(`/c/general.json`).then((data) => {
console.log(data.topic_list.top_tags);
});
Это категория general; вы можете заменить её на переменную или настройку компонента темы.
Если вы хотите отобразить все теги без фильтрации по категории, используйте /tags.json.
Чтобы использовать выходной элемент над списком тем, имя выхода: /javascripts/discourse/connectors/above-main-container/{имя-вашего-файла}.hbs. Рекомендую посмотреть, как это реализовано в других компонентах темы, и прочитать статью: Using Plugin Outlet Connectors from a Theme or Plugin.
Более сложная задача — получение всех тегов. Вы можете изучить структуру данных из /c/general.json, которая выглядит следующим образом. Вместо data.topic_list.top_tags вы можете перебрать каждый элемент в data.topic_list.topics и добавить все tags для каждой topic в массив. data.topic_list.topics.map((topic) => topic.tags);.
Надеюсь, это поможет! ![]()