Теги в верхней части списка тем в категории

Всем привет,

Я многому научился, используя шаблоны, плагины и всю замечательную магию в 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);.

Надеюсь, это поможет! :slight_smile: