Introduction : Les opérateurs Blogger / Blogger operators
Les opérateurs Blogger constituent un ensemble fondamental pour la manipulation et l'exécution d'opérations complexes au sein du fichier XML du template. Ces outils permettent d'effectuer des calculs arithmétiques, de comparer des valeurs ou encore de manipuler des structures de données telles que les tableaux, offrant ainsi un large éventail de possibilités pour la création de thèmes avancés.
Avantages des opérateurs Blogger
Les opérateurs Blogger, bien que moins étendus que ceux disponibles dans des langages de programmation comme Python ou JavaScript, présentent des caractéristiques uniques qui en font des outils puissants pour les développeurs. Leur syntaxe simple mais robuste facilite leur adoption, même par des utilisateurs expérimentés habitués à des environnements de développement plus complexes.
Points forts des opérateurs Blogger
-
Traitement avancé des données XML
Les opérateurs sont spécifiquement optimisés pour exploiter les structures hiérarchiques des données XML.
-
Performance exceptionnelle
Les opérations sont exécutées de manière quasi instantanée, garantissant une expérience utilisateur fluide.
-
Minimalisme du rendu
Contrairement aux scripts traditionnels, les opérateurs Blogger n'exposent pas leur logique dans le HTML final, assurant ainsi une propreté du code et une sécurité accrue.
Ces avantages font des opérateurs Blogger des outils idéaux pour les développeurs cherchant à optimiser leurs thèmes tout en réduisant la complexité du code.
Une évolution constante des opérateurs Blogger
L'évolution du langage Blogger a été significative depuis ses débuts en 2006. À l'époque de Blogger-Beta, le catalogue d'opérateurs se limitait à des fonctions élémentaires : comparaison, arithmétique et concaténation. En revanche, à partir de 2015, des "packs" d'améliorations ont marqué une rupture en introduisant de nouvelles capacités :
Innovations majeures des packs
-
Packs 1 & 2 (2015)
Ajout de balises spécifiques pour les expressions dynamiques.
Réglages avancés pour affiner les données XML.
Classification des données par type, permettant une manipulation plus précise et ciblée.
-
Packs 3 & 4 (2016)
Introduction d'une nouvelle génération d'opérateurs avec des fonctionnalités novatrices, parmi lesquelles :
La prise en charge d'un nombre quasi infini de combinaisons d'opérations.
L'imbrication complexe des expressions pour des cas d'utilisation avancés.
Des outils intégrés pour gérer et générer des structures tabulaires dans les thèmes Blogger.
L'introduction d'une syntaxe fonctionnelle, réduisant la redondance et augmentant la lisibilité du code.
Ces améliorations ont significativement augmenté la portée et la flexibilité des opérateurs Blogger, les rendant essentiels pour les projets complexes.
Un outil à fort potentiel pour les développeurs Blogger
Ces évolutions ont permis une optimisation sans précédent : des tâches qui nécessitaient auparavant des dizaines de lignes de code peuvent désormais être réalisées en une seule expression concise. Cette transformation illustre l'engagement de Blogger à fournir des outils adaptés aux exigences des développeurs et propriétaires de blogs.
En conclusion, les opérateurs Blogger ne sont pas seulement des outils techniques, mais également des catalyseurs pour créer des thèmes élégants, efficaces et hautement personnalisables. Leur adoption représente une étape majeure dans la maîtrise du langage XML des thèmes Blogger.
Implémentation des opérations
Les opérations sont intégrées comme valeurs d'attributs spécifiquement classifiés en tant qu'Attributs d'expression Blogger.
L'Attribut d'expression Blogger
Un Attribut d'expression Blogger peut être directement utilisé pour évaluer des conditions et réaliser des manipulations dynamiques.
<b:if cond='BLOGGER-OPERATION'> </b:if>
Dans cet exemple, cond
évalue dynamiquement une expression pour déterminer si le contenu interne doit être rendu. Cet attribut est exclusivement réservé aux opérations Blogger.
Conversion d'un Attribut HTML classique en Attribut d'expression
Les attributs HTML classiques, tels que class
ou id
, peuvent être transformés en Attributs d'expression Blogger à l'aide du préfixe expr:
.
<div expr:class='BLOGGER-OPERATION'> </div>
Dans cet exemple, l'attribut class
est modifié pour accepter une expression.
Cas d'erreur : Absence du préfixe expr:
Omettre le préfixe expr:
sur un attribut HTML classique empêche l'évaluation dynamique et provoque des erreurs dans le thème.
<div class='BLOGGER-OPERATION'> </div>
Dans cet exemple, l'attribut class
reste statique et ne peut pas interpréter les expressions dynamiques fournies.
Pour approfondir la classification et l'utilisation des attributs dans le code XML des thèmes Blogger, référez-vous à notre documentation :
Introduction aux attributs Blogger
Les opérateurs disponibles
Blogger offre une large gamme d'opérateurs pour manipuler et optimiser le fichier XML des thèmes. Voici un aperçu des principaux opérateurs disponibles, chacun accompagné d'un lien vers une documentation détaillée :
L'opérateur de concaténation
L'opérateur de concaténation est conçu pour assembler dynamiquement des chaînes de caractères avec des valeurs d'autres types ou du même type. Il est particulièrement utile pour créer des textes dynamiques, comme des titres personnalisés ou des descriptions enrichies.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Concaténation |
+ |
Syntaxes Infixes (par défaut) string + allType allType + string Syntaxes Fonctionnelles +(string,allType) +(allType,string) |
2+ | string |
Les opérateurs de comparaison
Les opérateurs de comparaison permettent de vérifier l'équivalence ou la différence entre deux valeurs. Le résultat, qui est une valeur booléenne (true
ou false
), est souvent utilisé pour évaluer des conditions dans des expressions dynamiques, comme l'affichage conditionnel de contenu.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Égalité |
== ou eq |
Syntaxes Infixes (par défaut) allType == allType allType eq allType Syntaxes Fonctionnelles ==(allType,allType) eq(allType,allType) |
2 | boolean |
Inégalité |
!= ou neq |
Syntaxes Infixes (par défaut) allType != allType allType neq allType Syntaxes Fonctionnelles !=(allType,allType) neq(allType,allType) |
2 | boolean |
Inférieur |
< ou lt |
Syntaxes Infixes (par défaut) number < number number lt number Syntaxes Fonctionnelles <(number,number) lt(number,number) |
2 | boolean |
Inférieur ou égal |
<= ou lte |
Syntaxes Infixes (par défaut) number <= number number lte number Syntaxes Fonctionnelles <=(number,number) lte(number,number) |
2 | boolean |
Supérieur ou égal |
>= ou gte |
Syntaxes Infixes (par défaut) number >= number number gte number Syntaxes Fonctionnelles >=(number,number) gte(number,number) |
2 | boolean |
Supérieur |
> ou gt |
Syntaxes Infixes (par défaut) number > number number gt number Syntaxes Fonctionnelles >(number,number) gt(number,number) |
2 | boolean |
Les opérateurs arithmétiques
Les opérateurs arithmétiques offrent une manière simple de réaliser des calculs numériques dans le fichier XML du thème. Ils permettent d’effectuer des opérations comme l’addition, la soustraction, ou encore des calculs avancés pour manipuler dynamiquement les valeurs.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Addition |
+ |
Syntaxe Infixe (par défaut) number + number Syntaxe Fonctionnelle +(number,number) |
2+ | number |
Soustraction |
- |
Syntaxe Infixe (par défaut) number - number Syntaxe Fonctionnelle -(number,number) |
2+ | number |
Multiplication |
* |
Syntaxe Infixe (par défaut) number * number Syntaxe Fonctionnelle *(number,number) |
2+ | number |
Division |
/ |
Syntaxe Infixe (par défaut) number / number Syntaxe Fonctionnelle /(number,number) |
2+ | number |
Modulo |
% |
Syntaxe Infixe (par défaut) number % number Syntaxe Fonctionnelle %(number,number) |
2+ | number |
L'opérateur de contenu
L’opérateur de contenu permet de vérifier si une sous-chaîne de caractères se trouve dans une autre chaîne. Cet opérateur est idéal pour effectuer des recherches ciblées ou des validations de données. Le résultat retourné est toujours une valeur booléenne (true
ou false
).
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Contient |
contains |
Syntaxe Infixe (par défaut) string contains string Syntaxe Fonctionnelle contains(string,string) |
2 | boolean |
Les opérateurs logiques
Les opérateurs logiques permettent de combiner plusieurs conditions pour évaluer des relations complexes. Ils travaillent exclusivement avec des valeurs booléennes, telles que true
ou false
, et retournent un résultat qui reflète la logique appliquée (ET, OU, NON).
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
ET |
&& ou and |
Syntaxes Infixes (par défaut) boolean && boolean boolean and boolean Syntaxes Fonctionnelles &&(boolean,boolean) and(boolean,boolean) |
2+ | boolean |
OU |
|| ou or |
Syntaxes Infixes (par défaut) boolean || boolean boolean or boolean Syntaxes Fonctionnelles ||(boolean,boolean) or(boolean,boolean) |
2+ | boolean |
Inverse |
! ou not |
Syntaxes Infixes (par défaut) !boolean not boolean |
1 | boolean |
Les opérateurs membres
Les opérateurs membres servent à vérifier si une valeur spécifique existe dans un tableau donné. Ces opérateurs sont particulièrement utiles pour manipuler et interroger des collections de données dynamiques. Le résultat est une valeur booléenne, indiquant si l’élément recherché est présent ou non.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Dans |
in |
Syntaxes Infixes (par défaut) string in array[string] boolean in array[boolean] number in array[number] Syntaxes Fonctionnelles in (string, array[string]) in (boolean, array[boolean]) in (number, array[number]) |
2 | boolean |
Contient |
contains |
Syntaxes Infixes (par défaut) array[string] contains string array[boolean] contains boolean array[number] contains number Syntaxes Fonctionnelles contains (array[string], string) contains (array[boolean], boolean) contains (array[number], number) |
2 | boolean |
Les sélecteurs
Les sélecteurs ternaires et binaires permettent de prendre des décisions simples et rapides en fonction d’une condition. Le sélecteur ternaire utilise trois opérandes pour choisir entre deux valeurs possibles en fonction d’une condition booléenne. Le sélecteur binaire, quant à lui, propose une valeur par défaut si la première est absente ou non définie.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Sélecteur Ternaire |
? : |
Syntaxe Infixe (par défaut) boolean ? value1 : value2 |
3 | value1 ou value2 |
Sélecteur Binaire |
?: |
Syntaxe Infixe (par défaut) value1 ?: value2 |
2 | value1 ou value2 |
Les opérateurs de tableaux
Les opérateurs de tableaux sont conçus pour manipuler les données contenues dans des collections. Que vous souhaitiez limiter le nombre d’éléments affichés, les trier ou définir des plages spécifiques, ces opérateurs offrent une flexibilité incomparable pour gérer les listes.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Jusqu'à |
take ou limit |
Syntaxes Infixes (par défaut) array take number array limit number Syntaxes Fonctionnelles take (array, number) limit (array, number) |
2 | array |
À partir de |
Skip ou offset |
Syntaxes Infixes (par défaut) array skip number array offset number Syntaxes Fonctionnelles skip (array, number) offset (array, number) |
2 | array |
Plage de nombres |
to |
Syntaxe Infixe (par défaut) number to number |
2 | array[number] |
Les opérateurs lambdas
Les opérateurs lambdas permettent d’exécuter des actions ciblées sur les éléments d’un tableau, en fonction de critères définis. Vous pouvez vérifier si un tableau satisfait une condition, compter les éléments correspondants, ou encore extraire un sous-ensemble spécifique. Ces opérateurs ajoutent une puissance analytique au traitement des données.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Au moins 1 |
any |
Syntaxe Infixe (par défaut) array any var => boolean |
2 | boolean |
Tout |
all |
Syntaxe Infixe (par défaut) array all var => boolean |
2 | boolean |
Aucun |
none |
Syntaxe Infixe (par défaut) array none var => boolean |
2 | boolean |
Compteur |
count |
Syntaxe Infixe (par défaut) array count var => boolean |
2 | number |
Mappage |
map ou select |
Syntaxes Infixes (par défaut) array map var => criterion array select var => criterion |
2 | array[criterion] |
Filtre |
filter ou where |
Syntaxes Infixes (par défaut) array filter var => boolean array where var => boolean |
2 | array |
Premier |
first |
Syntaxe Infixe (par défaut) array first var => boolean |
2 | Type enfant du tableau |
Les opérateurs d'images
Les opérateurs d'images permettent de manipuler les URLs des images pour répondre à des besoins spécifiques, tels que redimensionner, générer des tailles multiples ou créer des ensembles réactifs. Ils offrent une grande flexibilité dans l'adaptation des visuels aux différents contextes d'utilisation.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Redimensionner |
resizeImage |
Syntaxe Infixe (par défaut) image resizeImage number resizeImage string Syntaxe Fonctionnelle resizeImage(image,number,string) |
2 ou 3 | image |
Tableau d'images redimensionnées |
resizeImage |
Syntaxe Infixe (par défaut) image resizeImage array[number] resizeImage string Syntaxe Fonctionnelle resizeImage(image,array[number],string) |
2 ou 3 | array[object] |
Images réactives |
sourceSet |
Syntaxe Infixe (par défaut) image sourceSet array[number] sourceSet string Syntaxe Fonctionnelle sourceSet(image,array[number],string) |
2 ou 3 | string |
Les opérateurs d'URLs
Les opérateurs d'URLs facilitent la gestion et la modification des URLS du blog. Vous pouvez ajouter ou remplacer des paramètres, définir des fragments ou même ajuster les chemins d'accès des URLs. Ces opérateurs sont idéaux pour rendre les contenus dynamiques et personnalisés.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Nouveau chemin |
path |
Syntaxe Infixe (par défaut) URL path string Syntaxe Fonctionnelle path(URL,string) |
2 | string |
Remplacer les paramètres |
params |
Syntaxe Infixe (par défaut) URL params object Syntaxe Fonctionnelle params(URL,object) |
2 | string |
Ajouter des paramètres |
appendParams |
Syntaxe Infixe (par défaut) URL appendParams object Syntaxe Fonctionnelle appendParams(URL,object) |
2 | string |
Ajouter/Remplacer un fragment |
fragment |
Syntaxe Infixe (par défaut) URL fragment string Syntaxe Fonctionnelle fragment(URL,string) |
2 | string |
L'opérateur de dates
L’opérateur de dates simplifie la personnalisation du format des dates en s’appuyant sur le formatage ICU. Que ce soit pour afficher une date sous une forme conviviale ou pour suivre des conventions spécifiques, cet opérateur offre une solution précise et puissante.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Format |
format |
Syntaxe Infixe (par défaut) date format string Syntaxe Fonctionnelle format(date,string) |
2 | date |
L'opérateur d'extraits
L’opérateur d’extraits est conçu pour manipuler les chaînes de caractères et en extraire des portions personnalisées. Il permet de définir des limites comme la longueur, de conserver ou supprimer des liens, et même de gérer les sauts de ligne.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Créer un extrait |
snippet |
Syntaxe Infixe (par défaut) string snippet object Syntaxe Fonctionnelle snippet(string,object) |
2 | string |
Priorités des opérateurs
L'éditeur XML applique une logique cohérente et claire pour l'évaluation des expressions utilisant des opérateurs Blogger. Cette logique suit une structure basée sur des priorités classiques, tout en permettant une exécution de gauche à droite lorsque cela est nécessaire.
Règles générales de priorité
-
Parenthèses
Les expressions entre parenthèses sont toujours évaluées en priorité. Elles permettent de forcer un ordre d’évaluation et de garantir des résultats prévisibles.
-
Opérateurs arithmétiques
Les opérations comme la multiplication (
*
), la division (/
), et le modulo (%
) sont évaluées avant l’addition (+
) et la soustraction (-
). -
Opérateurs de comparaison
Les comparateurs (
>
,<
,==
,!=
) sont évalués après les opérations arithmétiques mais avant les opérateurs logiques. -
Opérateurs logiques
Les opérateurs
not
,and
, etor
sont évalués dans cet ordre, garantissant une logique stricte et rigoureuse. -
Exécution de gauche à droite
Lorsqu’aucune parenthèse ou règle de priorité spécifique ne s’applique, les opérateurs sont évalués dans leur séquence d’apparition, de gauche à droite.
Résumé des priorités
Blogger applique des priorités classiques pour les opérateurs standards tout en favorisant une évaluation de gauche à droite dans les cas où aucune priorité explicite n’est définie. Comprendre cette logique permet d’écrire des expressions claires et précises, en évitant les erreurs d’interprétation.
Les types de syntaxes
Blogger propose deux types de syntaxes pour travailler avec les opérateurs : la syntaxe par défaut (ou syntaxe infixe) et la syntaxe fonctionnelle. Chaque syntaxe a ses propres particularités et une histoire distincte dans l'évolution de la plateforme.
La Syntaxe Infixe (par défaut)
Introduite dès 2007, lors de la démocratisation du code XML des thèmes, la syntaxe infixe, est la première forme disponible pour manipuler des opérateurs dans l'éditeur XML des thèmes Blogger. Elle place l'opérateur entre les opérandes, offrant une lecture simple et intuitive, particulièrement utile pour les expressions courtes et directes.
Cas d'utilisation
- Utilisée pour les besoins de base, comme les calculs simples ou les comparaisons.
- Compatible avec tous les opérateurs disponibles.
Structure de la syntaxe
operand operator operand
Exemple d’application
data:view.isPost and data:blog.isPrivate
Le résultat sera vrai, si la page courante est une page d'article et si le blog est privé.
La Syntaxe fonctionnelle
Introduite en 2015, la syntaxe fonctionnelle est une alternative plus élaborée, idéale pour les expressions complexes ou lorsque plusieurs opérandes doivent être manipulées simultanément. Elle encapsule les opérations sous forme d’appels de fonction, ce qui améliore la lisibilité et l'organisation du code.
Cas d'utilisation
- Particulièrement utile pour les opérations imbriquées ou les calculs impliquant plusieurs opérandes.
- Compatibilité étendue avec les opérateurs ajoutés après 2015.
Structure de la syntaxe
operator(operand,operand,operand)
Exemple d’application
+(3,5,9,100)
Le résultat sera 117.
Limitation des expressions
Les attributs d’expression dans l'éditeur XML ont une limite stricte de 40 jetons maximum par valeur. Une fois ce quota dépassé, l’expression cesse de fonctionner. Dans certains cas, un commentaire explicatif peut apparaître dans le code source du blog à l’emplacement prévu pour le contenu.
Règles de consommation des jetons
Chaque élément utilisé dans une expression consomme un ou plusieurs jetons, selon les règles suivantes :
- 1 jeton par opérande.
- 1 jeton par opérateur.
- 1 jeton par tableau.
- 1 jeton par objet.
- 1 jeton par item contenu dans un tableau.
- 1 jeton par item contenu dans un objet.
Conséquences d’un dépassement
Lorsque le quota de 40 jetons est atteint :
L’expression cesse de fonctionner et aucun contenu ne sera affiché.
Un commentaire explicatif peut apparaître dans le code source pour signaler le problème.
La limite des 40 jetons impose de réfléchir à la structure et à l’efficacité des expressions. Cependant, en respectant ces règles et en optimisant les opérations, il est possible de tirer pleinement parti des fonctionnalités du langage XML des thèmes Blogger.