Liste des catégories avec bannières

This component adds optional banners to the default category page styles Categories Only and Categories With Featured Topics:

You can add banners in the component settings by defining the category right below the banner, a banner color and the heading text. There’s also an option to hide the default colored borders:

Screenshot from 2021-08-21 15-41-36

To add styles you can select the general class, as well as specific banners by category-id:

.category list .category-list-banner {
  &.category-5 { [style a specific banner] }
  &:after { [style the headings]}
}

For example you could color-code your categories:

Or add background images:

:warning: This component only adds layout elements to the category page. So you can’t refer to these headings anywhere else on your site. Another caution: There’s no default page style Categories Only on mobile. It will always show featured topics as well.

:+1: Credits: The component was inspired by the look of the Cfx.re Community and by @godgutten’s original solution to achieve that look as shared in How do I add category banners?

27 « J'aime »

Thank Nolo Very cool! Your component has improved our community

1 « J'aime »

Nolo, I found another problem with switching the forum style to night mode. If you can fix it, it will be perfect!

That looks like expected behavior… The color slot takes any value that you can use as background-color in CSS. So when you give a hex value, it will stay the same color in different modes and themes.

If you actually don’t want a background color, you should state none or transparent.

If you want a background color that changes with modes, you’d need to state it with a CSS custom property: you could use one of Discourse’s pre-defined ones like var(--secondary-high). Or define some yourself, as explained in

3 « J'aime »

Nolo, thanks, that helped!

2 « J'aime »

Bonjour, j’adore voir ce que vous avez réussi à créer. Mais il est permis de me créditer aussi et de ne pas seulement me dépouiller et utiliser une partie de mon travail…

Content que vous aimez le composant ! Je ne suis pas sûr de comprendre pourquoi vous m’accusez de vous avoir volé en utilisant votre travail… ?

La création de ce composant a été inspirée par ce sujet :

J’avais orienté l’auteur vers votre solution, mais j’ai ensuite été intéressé par la manière de résoudre cela sans coder en dur les modèles et en déconstruisant les valeurs d’une liste de paramètres dans scss. Le code du composant concerne donc essentiellement cette solution :
https://meta.discourse.org/t/how-to-add-settings-to-your-discourse-theme/82557/52?u=nolo

Mais en tout cas : si vous pensez que j’ai utilisé une partie de votre travail et que j’ai oublié de vous créditer, faites-le moi savoir et je mettrai à jour le premier message :ok_hand:

1 « J'aime »

Oui, j’aimerais bien avoir au moins une forme de reconnaissance. Mais c’est à vous de voir. Sinon, cela semble bien et je vais recommander ce composant de thème dans mon message car cela facilite les choses pour les nouveaux utilisateurs.

2 « J'aime »

@ Nolo
Existe-t-il un moyen dans le TC, ou avec CSS dans le thème pour aligner le texte de l’en-tête à gauche, tout comme votre deuxième exemple).

Existe-t-il également un moyen (si vous n’utilisez pas d’image de bannière) de redimensionner l’en-tête à l’épaisseur d’une seule ligne de texte.
Et si oui, pouvez-vous redimensionner le texte pour qu’il ne soit pas aussi grand ?

2 « J'aime »

Oui bien sûr, vous pouvez styliser les bannières en utilisant ces classes :

Si vous souhaitez remplacer les déclarations existantes sur la classe générale, vous devrez utiliser la propriété !important. Par exemple, pour les styles que vous avez mentionnés :

.category-list .category-list-banner {
    justify-content: flex-start !important;
    min-height: unset !important;
    &:after {
        font-size: var(--font-up-3) !important;
    }
}

C’est parce que les styles sont en fait déclarés sur les bannières spécifiques. Je suppose que je pourrais améliorer cela dans le composant, mais pour l’instant, vous devrez remplacer avec important.

3 « J'aime »

Merci beaucoup pour ce composant !! Je développe un forum politique, et pouvoir appliquer ce type de séparation est essentiel.
Bien que ce soit déjà une énorme amélioration pour mon forum, ce serait un changement radical si les en-têtes pouvaient être référencés par URL, car cela permettrait de créer des boutons en haut du forum à partir desquels l’utilisateur pourrait facilement naviguer sur la même page. Ce serait une fonctionnalité extrêmement agile si le forum (espérons-le) devenait beaucoup plus grand. Est-ce actuellement possible ?

1 « J'aime »

Merci pour la suggestion @lisandro_iaffar. Bien que ce composant ne fournisse qu’une solution légère qui ne modifie pas les modèles HTML. Si vous souhaitez référencer les sections, vous devrez utiliser une approche telle que celle proposée par GitHub - discourse/discourse-minimal-category-boxes.

2 « J'aime »

Merci pour votre réponse et pour vos conseils :slight_smile:
Et merci encore pour ce composant, il a tellement amélioré la mise en page de mon forum :smiley:

2 « J'aime »

Je suis impatient d’essayer cela car j’ai créé un peu trop de catégories et pouvoir les organiser en groupes sera d’une grande aide.

Je le saurai quand j’essaierai, cela pourrait aussi être un moyen de laisser les anciennes catégories, moins utilisées, hors de la page d’accueil, n’est-ce pas ? Elles seraient toujours disponibles via la nouvelle barre latérale.

1 « J'aime »

Oui, bien sûr :+1: En fait, je fais presque toujours des sélections de catégories sur différents éléments de page (barre latérale, en-tête, barre de navigation, page de catégorie, ..) C’est comme la structure d’un site Web. Il est important qu’elle soit bien organisée, mais elle n’a pas besoin de déterminer votre présentation d’interface utilisateur.

Bonjour @manuel Je voudrais savoir si ce merveilleux composant fonctionne toujours après les mises à jour du discours, je l’ai installé et il ne fonctionne pas pour moi, merci d’avance

Comment ajouter des images d’arrière-plan ?

Salut, bienvenue :wave:
Vous pouvez ajouter du CSS dans vos thèmes ou dans un composant de thème séparé :

Par exemple, en supposant que vous souhaitiez ajouter une image à la catégorie ID 4, vous feriez quelque chose comme ceci :

.category-list .category-list-banner {
    &.category-4 {
        background-image: url(https://images.unsplash.com/32/Mc8kW4x9Q3aRR3RkP5Im_IMG_4417.jpg);
        background-size: cover;
    }
}

Ce n’est qu’un exemple. Pour plus d’informations, vous pouvez consulter les propriétés CSS background.

Liens également utiles :+1: :

2 « J'aime »

Un message a été divisé en un nouveau sujet : Ajouter des informations supplémentaires à la boîte de catégorie