Surligneur de catégorie

Ce composant de thème vous permet de mettre en évidence une catégorie (ou plusieurs) dans votre Discourse. Vous pouvez :

  1. Donner un style d’arrière-plan spécial à des catégories spécifiques
  2. Ajouter un lien vers la catégorie dans l’en-tête avec le même style spécial

Un cas d’utilisation typique concerne une catégorie contenant du contenu « Premium ».

:wrench: Comment installer

:computer: Obtenir le code


Navigation des catégories et libellé de l’en-tête

Page des catégories

Configuration

Le composant de thème « Category Highlighter » dispose d’un paramètre principal : « Mettre en évidence les catégories ». Vous trouverez ce paramètre dans le panneau de configuration du composant de thème Category Highlighter.

Chaque catégorie que vous souhaitez mettre en évidence possède sa propre entrée dans ce paramètre. Le format de chaque entrée est :

category_slug~background~text_color~header_label~header_label_mobile~parent_slug~alternate_link

Voici un exemple de ce format :

premium~linear-gradient(319deg, #cdedfd 0%, #ffec82 37%, #ffcfd2 100%)~#88562e~:star:  Premium~:star:

Il existe six valeurs possibles, séparées par un tilde (~). Passons en revue chaque valeur.

Slug de la catégorie

Il s’agit du « slug » de la catégorie que vous souhaitez mettre en évidence. Vous pouvez le trouver dans les paramètres de votre catégorie.

Si vous devez mettre en évidence une sous-catégorie, vous devez utiliser le slug de la catégorie « Parent », suivi du slug de la sous-catégorie séparé par un /.

Par exemple, s’il existe une sous-catégorie de premium avec le slug videos que je souhaite mettre en évidence, j’utiliserais :

premium/videos

Permissions

Notez que seuls les utilisateurs disposant des permissions de lecture pour la catégorie mise en évidence verront les mises en évidence, y compris le libellé de l’en-tête. Vous pouvez modifier les permissions de votre catégorie dans les paramètres de « Sécurité » de la catégorie.

Arrière-plan

Il s’agit d’une valeur qui sera attribuée à la propriété CSS background du badge de catégorie. Vous pouvez utiliser n’importe quelle entrée prise en charge par cette propriété.

background - CSS: Cascading Style Sheets | MDN

La propriété CSS raccourcie background définit toutes les propriétés de style d’arrière-plan en une seule fois, telles que la couleur, l’image, l’origine et la taille, ou la méthode de répétition.

Par exemple : linear-gradient(319deg, #cdedfd 0%, #ffec82 37%, #ffcfd2 100%).

Couleur du texte

Il s’agit d’une valeur qui sera attribuée à la propriété CSS color du badge de catégorie. Cela affecte la couleur du texte. Vous pouvez utiliser n’importe quelle entrée prise en charge par cette propriété.

color - CSS: Cascading Style Sheets | MDN

La propriété CSS color définit la valeur de couleur de premier plan du texte d’un élément et de ses décorations de texte, et définit la valeur currentcolor. currentcolor peut être utilisé comme valeur indirecte sur d’autres propriétés et est la valeur par défaut pour d’autres propriétés de couleur, telles que…

Dans notre exemple, il s’agit de #88562e.

Libellé de l’en-tête

Cette valeur sert à deux fins. Elle détermine :

  1. si la catégorie mise en évidence affichera un libellé dans l’en-tête ; et
  2. le contenu de ce libellé.

Si vous ne souhaitez pas de libellé dans l’en-tête, n’incluez pas cette valeur.

Cette valeur prend en charge le texte, les entités HTML et les émojis.

La valeur du libellé de l’en-tête ici est : :star:  Premium. Cela correspond à :

  1. Le code court de l’émoji étoile : :star:
  2. Deux entités HTML d’espace insécable (chacune ajoute un espace blanc) :   
  3. Notre texte de libellé : Premium

Vous pouvez trouver la liste complète des codes courts d’émojis ici et la liste complète des entités HTML ici.

Libellé de l’en-tête mobile

Cette valeur sert également à deux fins. Elle détermine :

  1. si la catégorie mise en évidence affichera un libellé dans l’en-tête mobile ; et
  2. le contenu du libellé de l’en-tête mobile.

L’utilisation et le formatage sont identiques à ceux du libellé de l’en-tête. Une chose à noter ici est que vous disposez de moins d’espace sur mobile, il est donc prudent d’utiliser uniquement un émoji ou un mot court pour économiser de l’espace.

Catégorie parente

Vous pouvez créer un menu déroulant dans l’en-tête en définissant le « parent » d’un élément. Insérez le slug d’une catégorie en tant que sixième élément, et l’élément concerné deviendra un élément de sous-menu de cette catégorie dans l’en-tête. Comme pour le premier élément, assurez-vous d’utiliser le slug de la catégorie ici, que vous pouvez récupérer dans la fenêtre modale des paramètres de la catégorie.

Lien alternatif

Par défaut, chaque élément de catégorie pointe vers la catégorie correspondante. Vous pouvez modifier le lien en ajoutant une URL en tant que sixième élément dans le bloc de paramètres.

25 « J'aime »

So simple, yet so impactful. I have had the plan for a while to CSS certain parts of the forum to highlight posts from the paid customer categories. That makes everything much easier now. Thx for the work, this is amazing!

Have you thought about highlighting topics in the topic list when all categories are active in the category picker? For example add the star before the topic title?

2 « J'aime »

The highlight works in all places the badge appears, so it’s there in the list already :slight_smile:

Topic List Site Menu
site_menu

Categories page

See further https://try.thepavilion.io

4 « J'aime »

@Angus, you’re an amazing developer and it is a tremendous pleasure to collaborate with you. Thank you for your creativity, excellence, and thoroughness. You are a gift to the Discourse community.

6 « J'aime »

This is a pretty cool component, nice work :+1:

7 « J'aime »

ooo that feels so… :sparkles: preeemium

10 « J'aime »

J’ai cru voir une barre latérale au premier coup d’œil. Une barre latérale dans ce style pourrait être agréable.

Super composant, vraiment sympa. :+1:

@angus J’aimerais savoir comment ajouter un border-radius sur l’arrière-plan mis en évidence, merci d’avance.

1 « J'aime »

En raison de la variété des contextes dans lesquels apparaît le badge de catégorie, cela est un peu complexe. Je pourrais ajouter une classe pour faciliter la chose, mais pour l’instant, vous pouvez procéder ainsi :

### Bouton d'en-tête
.highlight-category-button {
    border-radius: 4px;
}

### Badges
.badge-wrapper[class*=" updates "],
.extra-info-wrapper .categories-wrapper .badge-wrapper[class*=" updates "],
.category-title-link-component[class*=" updates "] .category-text-title,
.select-kit.combo-box.category-drop .category-row[class*=" updates "] .badge-wrapper {
    &:before {
        border-radius: 4px;
    }
}

“updates” est le slug de catégorie dans l’exemple

Exemple : https://try.thepavilion.io/

2 « J'aime »

Le composant prend désormais en charge une liste déroulante de catégories. :tada:

Si vous utilisez l’identifiant (slug) de la catégorie parente comme 6ᵉ élément dans les paramètres, une liste déroulante s’affichera avec les catégories enfants en tant qu’éléments de la liste.

Remarque : Vous devrez passer le 5ᵉ élément, c’est-à-dire (Étiquette d’en-tête mobile), à vide si vous ne souhaitez pas l’utiliser.

Merci d’avoir parrainé cette fonctionnalité @outofthebox.

4 « J'aime »

Excellent travail @fzngagan !! L’équipe de Pavilion est exceptionnelle.

2 « J'aime »

Serait-il possible de mettre en surbrillance non seulement le slug, mais aussi .select-kit .select-kit-row.is-highlighted ?

Je pense que ce serait plus agréable pour les yeux.

Je suis d’accord avec les commentaires : ton travail est formidable. J’ai consulté le site Pavilion et je teste beaucoup de choses.

J’espère que nous travaillerons bientôt sur certaines idées que nous avons pour notre communauté :ok_hand:

Tout d’abord, merci pour ce composant fantastique.

Je pense que cela serait plus esthétique s’il y avait un peu plus d’espace blanc entre le titre du sujet et le badge de catégorie dans la vue liste des sujets. Est-ce réalisable au sein du composant ? Il semble que les boîtes soient un peu plus grandes que la vue par défaut, ce qui crée une vue pénible pour certains perfectionnistes, lol.

La vue mobile est meilleure que la vue bureau :

Est-ce que cela fonctionne toujours avec les derniers tests réussis ? Si oui, avez-vous toujours la documentation archivée quelque part ? @angus

J’ai collé la documentation dans le message d’origine ci-dessus. Faites-moi savoir si cela ne fonctionne pas.

1 « J'aime »

Génial ! Surtout la partie dégradé a été cruciale pour atteindre mon objectif ! Merci beaucoup !

1 « J'aime »

Quelqu’un utilise-t-il encore ce TC et a peut-être trouvé une solution au problème suivant ?
Sur les versions 2.9.0.beta9 et beta10, le TC fait disparaître la méta de la catégorie du champ déroulant des catégories ainsi que de la liste des sujets.

Le journal du forum est vide, la seule chose dans le journal de la console est :

[THEME 190 'Category Highlighter'] Pour éviter les erreurs dans les tests, ajoutez une clé `pluginId` à votre appel `modifyClass`. Cela garantira que la modification ne sera appliquée qu'une seule fois. 3 plugin-api.js:19