Category Banners

:discourse2: Summary Category Banners uses existing category details to create banners for your category pages (for tags check out Discourse Tag Banners).
:eyeglasses: Preview Preview on Discourse Theme Creator
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-category-banners
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

Features

Category Banners uses existing category details to create banners for your category pages. It uses the category name, description, and color to generate a banner at the top of the relevant category pages (for tags check out Discourse Tag Banners).

The category description is defined by the first paragraph in each category’s “Category definition for …” topic. The banner background/text colors are defined by your category badge settings.

By default, this will display on desktop and mobile across all Category and Subcategory pages but will not appear if you haven’t given your category a description.

Settings

This component comes with options to override the defaults:

Name Description
show description Show description from “About This Category” post
show mobile Show banners on mobile
show subcategory Show banners for subcategories
hide if no description Hide banners if category description is not set
show category logo Show category logo
align text
exceptions Banner will not show for these category NAMES
categories Categories to show a banner for
plugin outlet Changes the position of the banner on the page
show category icon Show category icon or emoji from the category settings *
override category icon color When the category icons are used, enabling this will make the icon match the banner text color

* Note that this setting now refers to the category icon or emoji set in the category settings, not the Category Icons theme component (which is deprecated in favor of the core feature).

Customization notes

If you want to customize these with some additional CSS you can target specific category headers by using this structure (example-category is your category name):

.category-title-header {
  &.category-banner-example-category {
        background: url(example.jpg);
  }
}

This component also adds the class category-header to the body tag as an additional CSS target.


:discourse2: Hosted by us? Theme components are available to use on our Standard, Business, and Enterprise plans.

Last edited by @lindsey 2025-04-29T13:54:43Z

Check documentPerform check on document:
101 лайк
Beginner's guide to using Discourse Themes
How difficult would it be to make the Discourse UI more like Flarum?
Banner on Discourse Forum
Unique CSS class for Group pages?
Category boxes links
Plugins and theme components rarely support tag-pages
Discourse Category Headers theme component
Upcoming Events calendar -- how to embed in post?
New Theme: Tag-Pages Navigation
Tag Banners
Sending a message upon post
Header Submenus
Impact of component positioning with 2.5.0.beta6
Category Description
Capitalizing Tag names in Tag Banners
About Category Auto-Created Topic - Sitewide Options
Subcategories
Discourse as a Conference App (in person, virtual, or hybrid)
Show different ads on different categories
Unique CSS class for Group pages?
Adjusting layout of category pages
Category image not aligning as expected
Add forum description at top of home page
How do I add category banners?
Recommendations on layouts? A way to preview changes?
Category banner image slow to load
Use tag and category banner components together
Category page with fixed organization of topics
Customizing your site with existing theme components
How are these subcategories displayed on meta?
What is it that creates the big heading which is based on the "About the ... category" topic?
Discourse Doc Categories
Theme or Custom CSS on Monday’s Discourse Instance?
I need to install the Category Style plugin for my website
I want to know how to do this?
Add banner to categories
Help us test Horizon, our newest theme
Official groups/posts
Discourse Category Headers theme component
Creating a Unique Gallery Layout for a Category
Official groups/posts
Horizon Theme
New users can't sign up, 404 errors in console
Category, Group, Tag Descriptions as Topics
Uncaught (in promise) error
Category, Group, Tag Descriptions as Topics
Discourse Category Home :house:
Do you know what theme this is?
Traditional multi level hierarchy vs flat discourse hierarchy
How to add a "button" which composes a pre-filled topic
Category color selection should be allowed even when style is "none"
Show customisable message on private topics/categories?
Category description just after name
How to add this header, colored categories, and sidebar categories?
Receive the full description of a category in a theme
How can I create a category wide banner?
How to display a disclaimer to every topic in a category?
Update changed the "category logo" settings and now all the pictures are microscopic. revertable?

thanks for this wonderful theme :heart:, it helps users to note the category description much easier.

currently if there’s a link or a bold/italic word in the category description, in the banner it’ll appear as simple text (e.x. p style instead of a style). isn’t it better if the text style is preserved in the banner as well?

2 лайка

Hi, I absolutely love this component! Thanks for your work!

I’m wondering, how can I style the background so that it automatically pulls the category background image and makes it the background of the banner. The backgrounds are already hidden anyways, so I want it to simply display as the background to the banner, rather than the page. I’ve tried this, but it didn’t work and I think I might be targeting the wrong variable:

return h('div.category-title-header' + " ." + category.slug, {
                    "attributes" : {
                        "style" : "background-color: #" + category.color + "; color: #" + category.text_color + "; background-image: url(\'" + 
                        category.background_url + "\');"
                    }
                }

Also, I’m wondering, how can I make the banner thinner for a fixed width design. When I attempted, it continued to be left-justified.

2 лайка

I think it’s great that the category banners now render content in HTML.

Is there any way to display emojis there? In my case, I added three important links: Anfänger - Forum | Cannabisanbauen.net

I want to display the emojis next to each link as well. The original about topic is here: Über die Kategorie Anfänger - Anfänger - Forum | Cannabisanbauen.net

1 лайк

Отсутствие префикса в названии категории — это рецепт катастрофы, поэтому я добавил category-banner- перед именем класса (например, category-banner-meta). Если вы обращались к названию категории в своём CSS, вам нужно будет просто добавить category-banner- перед ним.

Не уверен, я не думаю, что наши стандартные описания категорий поддерживают их, но я могу это проверить…

5 лайков

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

Сжатие изображения, безусловно, вариант, но интересно, есть ли другие решения. Можно ли в коде получить миниатюру загруженного фонового изображения? Спасибо за любые подсказки!

2 лайка

Здравствуйте и спасибо за этот компонент темы!

Я только что попробовал установить его, следуя этому руководству (выполнил точно такие же шаги), чтобы протестировать компонент баннеров категорий, но ничего не происходит. Ни в одной категории не отображается баннер. Возможно, я что-то сделал не так, из-за чего он не работает? Единственное объяснение, которое я вижу, — это предупреждение о «bootstrap», которое блокирует его?

1 лайк

По умолчанию компонент темы не отображает баннеры категорий, если для категории не задано описание. Это можно изменить, сняв галочку с опции «Скрывать баннеры, если описание категории не задано».

Описания категорий задаются при редактировании темы «О категории», которую Discourse автоматически создаёт для каждой категории. Если вы уже добавили описания категорий или отключили настройку скрытия баннеров для категорий без описаний, но баннеры по-прежнему не отображаются, дайте нам знать. Мы разберёмся, в чём дело.

6 лайков

Спасибо за ваш ответ. Я проверил и подтвердил, что у каждой категории на форуме есть описание. Опция «Скрыть баннеры…» теперь снята для проверки, но ничего не изменилось.

Как видно на изображениях, в настройках всё выглядит нормально:

Не знаю, может ли это быть связано с проблемой, но сообщаю, что это установка Discourse на экземпляре Yunohost.

1 лайк

Есть ли кто-то, кроме меня, кто считает, что было бы здорово применить этот же стиль к страницам списка групп (например, /g/foo)? К сожалению, CSS немного отличается, и, похоже, потребуется дополнительная обработка различных кнопок справа от названия группы, то есть :bust_in_silhouette: Запрос:email: Сообщение :garbage: Удалить

Это могло бы значительно улучшить единообразие внешнего вида и сделать группы более «полноценными» элементами интерфейса. (По моему мнению)

5 лайков

Мне очень нравятся эти баннеры категорий! Спасибо за создание этого компонента темы!

Мне бы очень хотелось, чтобы такой баннер отображался на главной странице нашего форума, где показывается:

  • «Последние» обсуждения или
  • «Лучшие» обсуждения или
  • «Категории» или
  • «Подписки» (если вы используете плагин Follow :man:)

Было бы несложно сделать так, чтобы баннер появлялся при выборе каждого из этих вариантов, в зависимости от того, что именно выбрано?

2 лайка

@awesomerobot, надеюсь, вы не против, что я делюсь этим здесь…

Я создал форк темы discourse-category-banners под названием

discourse-category-banner-boxes
https://github.com/naidihr/discourse-category-banner-boxes

Вы можете просмотреть его здесь:

https://theme-creator.discourse.org/theme/Rhidian/discourse-category-banner-boxes

Оно выполняет практически ту же функцию, но с некоторыми изменениями:

  • Блок баннера категории отображается встроенным образом над основным заголовком, а не на всю ширину вверху. Это позволяет размещать тему баннера в верхней части, например, discourse-versatile-banner.

  • Блок баннера категории отображается в том же стиле, что и нативные блоки подкатегорий Discourse, которые являются основным компонентом системы. Эти блоки подкатегорий — это опция отображения в настройках категорий Discourse: Показать список подкатегорий над темами в этой категории. Эта опция отображает название и описание подкатегории в виде строки или блока над списком тем, используя цвет фона категории в качестве левой границы.

  • Если категория является подкатегорией, её название отображается в виде хлебных крошек следующим образом: Название родительской категории: Название подкатегории

Демонстрационный скриншот блока баннера темы для категории, расположенного над нативными блоками подкатегорий.

Скриншот подкатегории, демонстрирующий ссылку в хлебных крошках на родительскую категорию.

Это моя первая попытка модификации темы. Надеюсь, это будет полезно?

Обновление

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

11 лайков

У нас это не работает. Я пробовал как слайг категории, так и её ID, но баннер упрямо остаётся на месте. У кого-то ещё это работает?

3 лайка

Я только что попробовал, и у меня всё работает: он ищет категорию с учётом регистра name. В ретроспективе это был не лучший способ реализации… Я, вероятно, смогу это улучшить.

3 лайка

Ах, этот сорт — для меня! И вы действительно указываете «имя» в руководстве выше — я просто не заметил.

«Имя» не очень интуитивно понятно, так как мы не используем его ни для чего другого. Но оно отображается довольно часто. Было бы неплохо сделать его более явным в настройках, я считаю.

1 лайк

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

2 лайка

Думаю, это зависит от конкретного сайта и сценария использования. Изначально я подумал, что скорее всего сайт захочет внедрить это повсеместно, и если будут исключения, то их будет немного.

Если вы хотите добавить баннер для небольшого числа категорий, возможно, лучше использовать более специализированный компонент темы, не предназначенный для универсального применения, например, Versatile Banner или настроить один из вариантов, описанных в https://meta.discourse.org/t/banner-themes-and-instructions-for-customizing-them/82368.

4 лайка

Было бы здорово иметь возможность загружать изображение для замены текста.

1 лайк

Спасибо за этот очень полезный компонент!

Возможно ли добавить небольшую функцию?

  • Добавить класс restricted к элементу <span.discourse-category-banners> или <div.category-title-header>, когда категория не является публичной, так же как это сделано для значка категории.

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

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

Я пока не очень хорошо умею создавать PR, но хотел бы использовать это как хороший повод научиться, если вы готовы принять мое изменение.

1 лайк

Можно ли заставить это работать на страницах тегов? Я нашел плагин tag-banners, но у него нет возможности добавлять текст или ссылки.