Filtrer les libellés dans les articles
Dans le gadget libellé, il est possible de sélectionner les libellés que l'on souhaite afficher. Par contre, dans les articles, cette "option" n'existe pas.
Grâce au XML et aux opérateurs Blogger, vous pouvez filtrer vos libellés en choisissant des critères spécifiques.
Trouver le code des libellés
Par défaut, l'option "libellés" s'affiche sous les articles parmi d'autres options. C'est le code de cette section que nous allons retravailler.Pour trouver le code correspondant à cette option, rendez-vous dans l'éditeur HTML de votre modèle :
- Tableau de bord
- Modèle
- Modifier le code HTML
Recherchez le code de l'option "libellés" qui se situe dans le widget
Blog
, et localisez le tableau data:post.labels
:XML
<b:loop values='data:post.labels' var='label'> <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='not data:label.isLast'>,</b:if> </b:loop>
Pour pouvoir filtrer le contenu du tableau
data:post.labels
, il suffit d'utiliser un opérateur, en particulier un lambda et d'y ajouter un ou plusieurs critères qui n'afficheront que les libellés correspondants aux critères.Autant dire que le nombre de combinaisons est relativement très élevé...
Filtrer le tableau avec un lambda
...Et de ce fait, vous ne retrouvez ici que quelques syntaxes.Ces exemples utilisent l'opérateur lambda
where
qui filtre tous les sets correspondants au critère. Pour filtrer uniquement le premier set correspondant au critère, remplacez where
par first
.Uniquement ces libellés
data:post.labels where (l => l.name in ["Frites","Chocolat","Hamburger"])
Sauf ces libellés
data:post.labels where (l => l.name not in ["Frites","Chocolat","Hamburger"])
Uniquement ce libellé
data:post.labels where (l => l.name == "Frites")
Sauf ce libellé
data:post.labels where (l => l.name != "Frites")
Uniquement les libellés contenant cette chaîne de caractères
data:post.labels where (l => l.name contains "Frit")
Sauf les libellés contenant cette chaîne de caractères
data:post.labels where (l => l.name not contains "Frit")
Uniquement les libellés ayant plus de 10 caractères
data:post.labels where (l => l.name.size gt 10)
Uniquement les libellés ayant moins de 10 caractères
data:post.labels where (l => l.name.size lt 10)
Limiter la quantité de libellés
Pour n'afficher qu'un nombre restreint de libellés, il faut employer l'opérateurlimit
.La syntaxe
array limit number
Uniquement les 3 premiers libellés
data:post.labels limit 3
Uniquement la première moitié des libellés
data:post.labels limit (data:post.labels.size / 2)
Uniquement les 3 premiers libellés filtrés
(data:post.labels where (l => l.name.size gt 10)) limit 3
De plousse en plousse difficile
A présent, compliquons un peu la tâche. Imaginez que l'on veuille filtrer le même tableau de libellés avec des critères qui varient en fonction d'autres critères.Par exemple, utiliser un filtre spécifique dans les pages index et un autre filtre dans les autres pages.
Il faut employer un sélecteur ternaire. Dans ce cas, il s'agira d'imbriquer les opérations.
Syntaxe
condition ? array : array
Choix entre 2 filtres
data:blog.pageType == "index" ? data:post.labels where (l => l.name in ["Frites","Chocolat","Hamburger"]) : data:post.labels
Et la virgule ?
Dans le code fourni par défaut, la virgule apparaît derrière chaque libellé, excepté le dernier libellé.En appliquant un filtre, la condition qui empêche d'afficher cette dernière virgule n'est plus en mesure de fonctionner correctement, parce que la condition utilise le tableau original.
Pour rétablir un sens cohérent à cette condition, il faut lui dire qu'il faut se référer au tableau filtré. Pour cela, il faut déplacer le filtre dans un alias de variable et modifier la donnée contenue dans la condition.
<b:with value='data:post.labels where (l => l.name in ["Frites","Chocolat","Hamburger"])' var='filtreLabel'> <b:loop index='i' values='data:filtreLabel' var='label'> <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:filtreLabel.size != data:i + 1'>,</b:if> </b:loop> </b:with>
Après avoir effectué ces modifications, la dernière virgule n'apparaîtra plus.
Autres tutos
- Peut-on trier les tableaux de nombres ?
- Comment contourner le changement automatique du type d'une donnée dans une opération XML Blogger ?
- Modifier le menu des boutons de partage
- Ajouter des boutons au menu de partage
- Une pagination automatique avec le gadget Pages
- Favicons multi-sets : icon, apple-touch-icon et msapplication
- Masquer des éléments des thèmes dynamiques
- Créer des sous-catégories dans le gadget Libellés
- Une pagination automatique avec le gadget Libellés
- Filtrer les libellés dans les articles
- Créer un sélecteur d'articles
- Ajouter son blog au module de recherche Firefox
- inReplyTo : Développer un module de commentaires avec réponses