Получить полное описание категории в теме

Насколько мне известно, описание хранится (и поддерживается) в первом разделе первого сообщения в описании.

Я хочу добавить ссылки рядом с кнопками «Вверху» и «Последние» в категории. Поскольку тему нельзя настроить для каждой категории, я подумал, что могу просто добавить данные для ссылок в «скрытую часть» описания категории — ведь в списке категорий отображается только первый фрагмент описания категории.

Данные будут выглядеть следующим образом: {TAG,linkText,linkTitle,linkHref}.

Извините, я полагаю, это не лучший вариант:

Возможно ли получить полные данные текста описания категории в теме или виджете?

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

Да, именно это делает Category Banners.

Что ж, я думаю:

  • category.description возвращает корректно оформленное описание категории
  • category.description_text возвращает обычный текст

Но оба возвращают только первую главу описания, а не полный первый пост категории, который содержит это описание. Не упустил ли я что-то?

Да, это ожидаемое поведение. Discourse использует только первый абзац темы «О нас» в качестве описания категории во всех элементах интерфейса.

Если вам потребуется что-то ещё, вам нужно будет выполнить дополнительный API-запрос для получения содержимого.

Возможно ли это в компоненте темы? У вас есть пример?

Topic List Sidebars делает именно это!

Если ваша цель — условно отображать ссылки на страницах конкретных категорий, то я рекомендую отступить на шаг назад и попробовать другой подход.

Допустим, у вас есть настройка в таком формате:

target_category, link_text, link_title, link_href

Тогда вы можете сделать что-то вроде этого.

api.addNavigationBarItem({
  displayName: text, // текст ссылки
  name: title, // заголовок ссылки
  href: href, // href ссылки
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // целевая категория
    );
  }
});

Самое важное здесь — это customFilter, поскольку, думаю, именно это вам и нужно.

Если у вас несколько ссылок, вам нужно обернуть это в forEach.

Спасибо, @Falco. Это было именно то, что мне нужно.

Спасибо, @Johani. Я обдумал ваше предложение. К сожалению, у нас огромное количество категорий, и конфигурация в настройках была бы слишком большой и неудобной для управления. Поэтому я написал эту тему.

У меня всё заработало. После добавления поддержки parent_categories и исправления нескольких мелких неполадок я оформлю документацию и «выпущу это надлежащим образом».

Наконец-то, думаю, всё готово. Пользуйтесь на здоровье. Большое «спасибо» всем, кто работает над Discourse. Отличная работа.

Ссылка на компонент темы: