Base de connaissancesFonctionnalitésAvancé

Appliquer des conditions d'affichage aux gadgets

Appliquer des conditions d'affichage aux gadgets
Énoncé du problème : Je veux que mon gadget s'affiche à la fois sur la page d'accueil et sur les pages de recherche,
Ou encore, sur une page d'un article particulier et sur les pages des libellés.
Certes, il existe des solutions publiées sur le web, mais répondent-elles réellement à ces critères ?
La méthode décrite dans cette publication n'est pas nouvelle mais reste inédite pour ce sujet. Elle vous ouvre la voie vers une multitude de combinaisons que vous n'auriez jamais pu soupçonner jusqu'à présent... Suivez le guide...

Installer un gadget

Pour les besoins de l'exemple, nous allons utiliser le gadget "Texte". Vous pouvez installer celui-là ou un autre. Les méthodes sont valables pour tous les gadgets.

  • Tableau de bord
  • Mise en page
  • Ajouter un gadget
  • Général
  • Gadget Texte

Lorsque le gadget est installé sur votre blog, rendez-vous dans l'éditeur XML du modèle et retrouvez le code du gadget :

  • Tableau de bord
  • Thème
  • Modifier le code XML
  • Accéder au widget "Text1"

Dans l'éditeur, vous devrez trouver un code similaire à celui-ci :

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
  <b:includable id='main'></b:includable>
</b:widget>


Solution 1 : Condition à l'ensemble du gadget

Pour définir une condition à l'ensemble du gadget, il suffit d'ajouter une condition dans la balise b:widget.

<b:widget cond='CONDITION' id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
  <b:includable id='main'></b:includable>
</b:widget>


Solution 2 : Condition d'exécution des inclusions originales

La 2e solution permet d'appliquer des conditions à certains composants originaux du gadget à partir d'une même inclusion.

Pour ce cas particulier, vous remplacez complètement le contenu original de l'inclusion, par un simple appel de l'inclusion à l'aide du préfixe super.. Dans la même balise, vous ajoutez une condition.

L'appel ira rechercher le code original de l'inclusion hébergée sur le serveur Blogger.

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
<b:includable id='main'> <b:include cond='CONDITION' name='super.main'/> </b:includable>
</b:widget>


Solution 3 : Condition d'exécution des inclusions personnalisées

La 3e solution est plus compliquée, mais, elle permet d'appliquer des conditions à certains composants du gadget. Ainsi, si le gadget contient plusieurs inclusions, il vous est possible d'interdire ou d'autoriser l’exécution de cette inclusion.

Tout d'abord, renommez l'identifiant de l'inclusion main. Donnez-lui le nom originalMain.

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
  <b:includable id='originalMain'></b:includable>
</b:widget>

L'inclusion main étant requise et comme elle n'existe plus, il faut la recréer à nouveau.

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
<b:includable id='main'> </b:includable>
<b:includable id='originalMain'></b:includable> </b:widget>

C'est dans la nouvelle inclusion main que nous allons fixer les conditions d'affichage.

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
<b:includable id='main'> <b:include cond='CONDITION' name='originalMain'/> </b:includable>
<b:includable id='originalMain'></b:includable> </b:widget>


Quelles sont les conditions que l'on peut employer ?

Il existe autant de conditions qu'il y a de données, de valeurs et de signes opérateurs. C'est-à-dire, un nombre très très très très très élevé de combinaisons. En voici une liste microscopique :

Uniquement à la page d'accueil
cond='data:view.isHomepage'

Uniquement dans les index
cond='data:view.isSearch'

Uniquement dans les archives
cond='data:view.isArchive'

Uniquement dans les pages autonomes
cond='data:view.isPage'

Uniquement dans les pages des articles
cond='data:view.isPost'

Uniquement dans les pages des libellés
cond='data:view.isLabelSearch'

Uniquement dans les pages 404
cond='data:view.isError'

Uniquement sur la page d'un article déterminé
cond='data:view.postId == ID_ARTICLE'

Uniquement sur une page autonome déterminée
cond='data:view.pageId == ID_PAGE'

Vous pouvez également combiner plusieurs conditions. Vous trouverez toutes les références sur la page Opérateurs.


Astuce pour les développeurs

Cette méthode de gestion des inclusions ouvre la porte à de nombreuses possibilités.
Par exemple, vous pouvez créer diverses versions d'un gadget et les inclure dans plusieurs inclusions que vous pouvez appeler en fixant certaines conditions.

<b:widget id='Text1' locked='false' title='TITRE_GADGET' type='Text'>
<b:includable id='main'> <b:include cond='data:view.isHomepage' name='contentA'/> <b:include cond='data:view.isPost' name='contentB'/> </b:includable>
<b:includable id='contentA'> <!-- Code du gadget version 1 --> </b:includable>
<b:includable id='contentB'> <!-- Code du gadget version 2 --> </b:includable>
</b:widget>

L'inclusion contentA s'affichera uniquement à la page d'accueil, tandis que l'inclusion contentB s'affichera uniquement dans les pages des articles.
Assistance publique pour le produit Blogger sur les supports  d'aides :

Certifiée par Google - Experte Platine TC (Ambassador & Advanced Troubleshooter):
  • Affectation Google France, produit Blogger, du 11/07/2011 au 28/07/2014.
  • Affectation Google US, produit Blogger depuis le 28/07/2014.

Posts les plus consultés de ce blog

DéveloppementsGadgets AddToBlogger
Populaire
DéveloppementsMulti-versions
Facebook : Bouton partager [Share button]
Populaire
DéveloppementsMulti-versions
Populaire
Base de connaissancesFonctionnalitésÉditeurs
Populaire