Как скрыть теги после N и показать «+X еще» как категории

Всем привет,

Я работаю с темами, у которых иногда появляется очень много тегов (многие из них генерируются автоматически из ICS-ленты). В интерфейсе Discourse теги просто переносятся на новые строки, из-за чего списки тем становятся слишком высокими и их сложнее просматривать.

Хотел бы реализовать что-то похожее на то, как в списках тем отображаются категории:
• Показывать первые несколько (например, 5)
• А остальные сворачивать за индикатором «+X ещё»

Что я уже пробовал:
• С помощью CSS можно скрыть теги после определённого количества и даже добавить статичный маркер «…», например:

/* Скрыть все теги после пятого */
.topic-list .discourse-tags a:nth-of-type(n+6) {
  display: none;
}

/* Добавить … после пятого */
.topic-list .discourse-tags a:nth-of-type(5)::after {
  content: " …";
}

Это работает для скрытия, но CSS не может динамически подсчитывать, сколько тегов было скрыто, поэтому я не могу получить надпись «+3 ещё».

Мой вопрос:
• Есть ли встроенный способ ограничить количество отображаемых тегов для каждой темы?
• Если нет, есть ли пример фрагмента кода (возможно, из логики рендеринга категорий), который я мог бы адаптировать в компонент темы, чтобы добавить логику «+X ещё» для тегов?

Заранее спасибо!

Вам удалось это решить? В ядре Discourse это не поддерживается, но, вероятно, это можно реализовать с помощью компонента темы.

Существует настройка max tags per topic (максимальное количество тегов на тему) со значением по умолчанию 20. Я считаю, что это разумный параметр, который не приводит к чрезмерному переносу строк. В любом случае, полагаю, что потребность в таком большом количестве тегов возникает редко.

:eyes:
20?

Да, вы правы! Я увеличил это значение до 20 на своём сайте. Значение по умолчанию — 5, что вполне разумно.

Ваш орлиный взгляд никогда не перестаёт меня поражать.

Да, в моем скрипте импорта отключено создание коротких UID-тегов, так как он создает скрытый HTML-маркер UID.