Использовать информацию о дискурсе и базовые вычисления в пользовательском CSS?

Всем привет,

Я пытаюсь найти способ отображать количество тем в категориях на главной странице. Также интересно, можно ли дополнительно сортировать их по тегам?

И есть ли идеи, как с помощью JavaScript выполнять простые математические операции с этими числами?

Вы можете начать отсюда:

<script type="text/discourse-plugin" version="1.4.0">
    api.modifyClass("component:topic-list", {
      pluginId: "returnTopicList",
      didInsertElement: function() {
        this._super();
        console.log(this.topics);
      }
    });
</script> 

Это выведет список тем, а также их атрибуты (включая теги).
Затем, полагаю, вам нужно будет немного поиграть с массивом, чтобы добиться желаемого результата.

Привет @Canapin,

Спасибо за помощь! Я совершенно не разбираюсь в том, как работает JavaScript в Discourse. Не мог бы ты объяснить, что это делает, как это работает и как с этим взаимодействовать?

Я искал материалы, чтобы понять, как это устроено. Есть какие-то предложения?

Для большего контекста: я пытаюсь автоматически подтягивать количество тем в каждой категории из Discourse и использовать их в таблице для Discuss1–4. Если возможно, я бы также хотел, чтобы подкатегории тем сортировались по буквам A–F. В целом, мне нужно, чтобы данные обновлялись автоматически при перемещении темы, чтобы не делать это вручную.
Надеюсь, я всё понятно описал, и, пожалуйста, не стесняйтесь задавать вопросы для уточнения :slight_smile:

(Извините за небрежность таблицы)

Я не совсем понимаю, чего вы хотите добиться. Где должна отображаться эта таблица — на новой странице или на существующей?
Что означают A, B, C, D, E, F? Что означает «Обсуждение 1–4»? Это категории?
Вам нужно общее количество постов из каждой категории?

Хорошо, давайте попробую переформулировать, так как я допустил небольшую ошибку, назвав теги подкатегориями.

Итак, пусть Discuss 1–4 = Категория 1–4,
а A–F будут использоваться для тегов.

Представим, что таблица пуста. Я создаю новую тему в Категории 1 и добавляю тег «A». Теперь таблица должна отображать одну тему рядом с Категорией 1 и под «A»:

Если я удалю тег «A» и назначу тег «C», таблица обновится соответствующим образом.

Есть ли способ это реализовать?

Вы хотите получить информацию или отобразить её на странице Egret для каждого пользователя? Если первое, вам может подойти плагин «Data Explorer».

CSS для этой цели слишком поверхностен. Это язык стилизации, помогающий с макетом и внешним видом.

Вам нужно комплексное решение: использовать Rails для расчёта, сводки и сериализации ваших данных, Ember JavaScript для получения данных и их красивого отображения на маршруте, а также CSS для стилизации по мере необходимости. Вы даже можете использовать библиотеку D3 для создания особенно впечатляющей визуализации.

Посмотрите на мои плагины Облако слов и Визуализация сети, которые делают именно всё это. Адаптируйте их под свои задачи.

Я хочу, чтобы это отображалось для каждого пользователя

Круто! Я это проверю

Привет @merefield,

После того как я проверил это и посмотрел, как это работает по ссылке на генератор, ты уверен, что с их помощью я смогу просто получить количество тем в категории? Просто уточняю перед тем, как внедрить это в свой Discourse.

Очевидно, что вам потребуется создать собственный расчёт, но то, чем я поделился, представляет собой подходящий каркас, который переопределяет все необходимые части архитектуры.

Что вы с ним сделаете — зависит от вас…