La clé properties permet de modifier facilement les informations des entités affichées un peu partout (les informations d'une order, d'un parcel, ou de line items, ou même des pop-ins).
Pour les orders, parcels et line items
La structure de l'objet properties
est la suivante:
properties
(object) > page
(object) > entity
(array de taille 0 à 3) > propriétés
(array de string)
properties: claim: order: [ ['id', 'delivery.type'], # Ligne 1 ['date'] # Ligne 2 ] line_item: [...] pack: parcel: [...] line_item: [...]
Dans l'exemple ci-dessus, la première ligne d'order contiendra les propriétés order.id
et order.delivery.type
tels que récupérés en appelant l'OMS, et séparés par le caractère pipe |
Pour les pop-ins
La pop-in affichée sur diverses pages peut également être personnalisée. Le format de la config est cependant un peu différent:
properties: popin: line_item: [ ['features.name'], # Titre de la pop-in ['|rawstring:Référence', 'item_id'] # Ligne 1 Sous l'image ['|rawstring:Prix', 'payment.price'] # Ligne 2 Sous l'image ['|rawstring:Couleur', 'features.color'] # Ligne 3 Sous l'image ['|rawstring:Taille', 'features.size'] # Ligne 4 Sous l'image ]
Dans l'exemple ci-dessus, la première ligne définit le titre de la pop-in, et toutes les lignes suivantes seront affichées sous l'image. Les éléments ne seront pas séparés par le pipe |
, mais divisés en colonnes (voir screenshot ci-dessus).
Pour voir les properties par défaut, utiliser la commande dumpConfig()
Formatter les propriétés
Souvent, les propriétés des objets nécessitent d'être formattés pour des raisons esthétiques.
Il est possible d'utiliser un ou plusieurs formatteurs avec la sytaxe suivante 'property|formatter:option|formatter|formatter'.
Pour que la première lettre du type de livraison soit en majuscule, on utilisera 'delivery.type|capitalize'
par exemple.
Si je veux récupérer le 3ième élément d'un tableau (index 2), j'utiliserai delivery.destination.address.lines|arrayelement:2.
Parenthèses
Une syntaxe de parenthèsage est disponible pour les expressions les plus complexes.
Les propriètés les plus imbriquées dans des parenthèses seront évaluées en priorité. Ainsi, la proprièté "parcels|forcount:line_item_ids|concatraw: / |concatraw: (line_items|length)"
affichera 1 / 2.
En l'absence de parenthèses, les formatteurs sont appliqués de gauche à droite.
formatter | effet | option | example |
---|---|---|---|
lowercase | Remplace toutes les lettres par des minuscules | features.name|lowercase | |
uppercase | Remplace toutes les lettres par des majuscules | features.name|uppercase | |
capitalize | Remplace toutes les lettres par des minuscules, sauf la première, en majuscule | features.name|capitalize | |
length | Retourne l'attribut length d'un tableau ou d'une string | piece_ids|length | |
currencyraw | Formatte un nombre en une currency, avec un symbole défini dans l'option | La currency à utiliser | payment.price|currencyraw:USD |
currency | Formatte un nombre en une currency, avec un symbole défini dans une autre propriété | La propriété contenant la currency | payment.price|currency:payment.currency |
rawstring | Permet de remplacer le résultat par une string définie dans l'option | String à afficher | |rawstring:Charasse |
concat | Concatène une autre property, sans espace | Propriété à concaténer | carrier|concat:tracking_code |
concatraw | Concatène une string définie dans l'option | String à concaténer | state|concatraw:par l'entrepôt |
trans | Traduit le résultat (si la clé de traduction existe bien) | |rawstring:states.|concat:state|trans | |
transcount | Prend un nombre en entrée et appelle une traduction avec pluralisation | Clé de traduction | line_items|length|transcount:order.item_count |
transcountnotnull | Prend un nombre en entrée et appelle une traduction avec pluralisation. N'affiche rien si le nombre vaut 0. (v5.5) | Clé de traduction | line_items|length|transcount:order.item_count avec line_items = [] : |
forcount | Parcours un tableau et compte la taille d'une proprièté de chaque de ce tableau. (v5.5) | Une proprièté | parcels|forcount:piece_ids|transcount:order.item_count 5 items |
filterlength | Parcours un tableau et compte le nombre d'élèment de ce tableau dont une proprièté vaut une des valeurs fournies. (v5.5) | Une proprière=une liste de valeurs séparées par une virgule | line_items|filterlength:state=removed,mistaken|transcount:order.cancel_count (5 canceled) |
arrayelement | Récupère l'élément d'un tableau à l'index défini en option | Index de l'élément | types|arrayelement:0 |
moment | Formatte un timestamp en utilisant un format de momentjs | Format de la date | date|moment:DD/MM/YYYY |
trackingcode | Affiche le tracking code s'il y en a, traduit la clé passée en paramètre sinon | Clé à traduire s'il n'y a pas de tracking code | tracking_code|trackingcode:parcel.no_tracking_information "XV265564654" ou "Colis sans information de tracking" s'il n'y a pas de tracking code |
Attention à la façon dont les propriétés sont surchargées. Un tableau de 2 éléments surchargé par un tableau vide reste un tableau de 2 éléments.
Défaut | Surcharge onboarding | Résultat |
---|---|---|
['id'] | ['label'] | ['label'] |
['id', 'label', 'delivery'] | ['date'] | ['date', 'label', 'delivery'] |
['id', 'label', 'delivery'] | ['date', '', ''] | ['date', '', ''], mais affiché commme ['date'] |
L'avantage: il est possible de rajouter une ligne à l'order de la façon suivante, sans que les deux premières lignes ne soient écrasées.
order: [[], [], ['informations.message_cadeau']]