Créer des sous-catégories dans le gadget Libellés

Créer des sous-catégories dans le gadget Libellés

Cette fonctionnalité n'est pas fournie dans le pack original de Blogger. Mais est-il réellement possible d'automatiser une liste ?
Si vous êtes arrivé sur cette page, il est fort probable que ça soit réalisable via l'éditeur XML de votre modèle.

Compatibilité

  • Gadget Version : 1
  • Template Version : 1 - 2


Présentation

En théorie, on ne peut pas créer des sous-catégories, parce qu'il n'existe pas de donnée qui associe un libellé à un libellé parent.
C'est pour cette raison que vous ne trouverez pas de gadgets préfabriqués conçus pour la distribution.
Par contre, les pages de recherche de libellés filtrent les posts avec un ou plusieurs libellés et le langage XML de Blogger est doté de fonctionnalités traitants les tableaux.
Avec ces moyens mis à notre disposition et avec un peu d'imagination, on peut retravailler le code XML du gadget Label et automatiser une liste à plusieurs niveaux.
Mais au final, cela restera du bricolage, tant parce qu'il faut définir explicitement dans le code, tous les libellés qu'il faut associer.

Dans ce développement, nous allons créer 3 catégories, contenant chacune 2-3 sous catégories, afin d'obtenir ce résultat :
  • Mes vidéos
    • Films
    • Séries
    • Clips
  • Mes photos
    • Vacances
    • Travail
  • Mes recettes
    • Chocolat
    • Frites

En pratique, la catégorie "Mes vidéos" mènera dans le répertoire contenant les posts ayants ce libellé, et la sous-catégorie "Films" mènera dans le répertoire contenant les posts ayants ce libellé et le libellé "Mes vidéos".

Pour que l'ensemble travaille correctement, vous devrez également faire en sorte que les posts contiennent ces libellés.
Par exemple, mon article "Faire la crêpe à la plage" doit contenir les libellés "Mes recettes" et "Chocolat"...


Découpage du gadget

Pour commencer, rendez-vous dans l'éditeur XML de votre modèle et ajoutez le code de ce nouveau widget après une balise <b:section...>.

<b:widget id='Label301' locked='false' title='Libellés' type='Label'>
  <b:includable id='main'>

  </b:includable>
  <b:includable id='cloud'>

  </b:includable>
  <b:includable id='list'>

  </b:includable>
  <b:includable id='subListSwitch'>

  </b:includable>
  <b:includable id='subList'>

  </b:includable>
</b:widget>

Vous constatez que ce gadget contient plusieurs inclusions vides. Ne paniquez pas. Nous allons les remplir étape par étape.


L'inclusion "main"

Dans l'inclusion principale, nous organisons les éléments de base : Un titre, un sélecteur qui mène vers les inclusions "cloud" ou "list", et la petite clef administrateur.
Copiez le code tel quel.

  <b:includable id='main'>
    <b:if cond='data:title != ""'>
      <h2><data:title/></h2>
    </b:if>
    <div expr:class='"widget-content " + data:display + "-label-widget-content"'>
      <b:include expr:name='data:display'/>
      <b:include name='quickedit'/>
    </div>
  </b:includable>


L'inclusion "cloud"

Dans cette inclusion, nous allons simplement ajouter le code des libellés organisés "en nuage". Ainsi, vous aurez toujours cette option sous la main.
Copiez le code tel quel.

  <b:includable id='cloud'>
    <b:loop values='data:labels' var='label'>
      <span expr:class='"label-size label-size-" + data:label.cssSize'>
        <b:if cond='data:view.url == data:label.url'>
          <span expr:dir='data:blog.languageDirection'><data:label.name/></span>
          <b:else/>
          <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
        </b:if>
        <b:if cond='data:showFreqNumbers'>
          <span class='label-count' dir='ltr'>(<data:label.count/>)</span>
        </b:if>
      </span>
    </b:loop>
  </b:includable>


L'inclusion "list"

C'est à partir de cette étape que nous allons commencer réellement à travailler.
L'inclusion affiche la liste des libellés du premier niveau.
Dans la première balise <b:with>, vous remplacez le contenu du tableau par vos propres libellés.

  <b:includable id='list'>
    <b:with value='["Mes vidéos","Mes photos","Mes recettes"]' var='mainList'>
      <ul>
        <b:loop values='data:labels where (l => l.name in data:mainList)' var='label'>
          <li>
            <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
            <b:if cond='data:showFreqNumbers'>
              <span dir='ltr'>(<data:label.count/>)</span>
            </b:if>
            <b:include name='subListSwitch'/>
          </li>
        </b:loop>
      </ul>
    </b:with>
  </b:includable>


L'inclusion "subListSwitch"

Dans cette inclusion, nous créons un cas pour chaque libellé du premier niveau. Dans chaque cas, vous associez les libellés enfants.

  <b:includable id='subListSwitch'>
    <b:switch var='data:label.name'>

      <b:case value='Mes vidéos'/>
        <b:with value='["Films","Séries","Clips"]' var='subList'>
          <b:include name='subList'/>
        </b:with>

      <b:case value='Mes photos'/>
        <b:with value='["Vacances","Travail"]' var='subList'>
          <b:include name='subList'/>
        </b:with>

      <b:case value='Mes recettes'/>
        <b:with value='["Chocolat","Frites"]' var='subList'>
          <b:include name='subList'/>
        </b:with>

    </b:switch>
  </b:includable>


L'inclusion "subList"

Et enfin, la dernière inclusion reconstitue les liens des sous-catégories. Ces liens contiendront le libellé parent + le libellé de la sous-catégorie.

  <b:includable id='subList'>
    <ul>
      <b:loop values='data:labels where (l => l.name in data:subList)' var='subCategory'>
        <li>
          <a expr:dir='data:blog.languageDirection' expr:href='data:blog.searchUrl + "/label/" + data:label.name.escaped + "%2B" + data:subCategory.name.escaped'><data:subCategory.name/></a>
        </li>
      </b:loop>
    </ul>
  </b:includable>

Et voilà, vous venez d'écrire votre tout premier gadget. Félicitation !


Spotlight

Populaires cette semaine