Μετάβαση στο κύριο περιεχόμενο

Αναφορά Liquid

Το Joryio εξατομικεύει τα μηνύματα με τη Liquid - γράφετε placeholders όπως {{ user.firstName }} και φίλτρα όπως {{ price | currency }}, και αυτά επιλύονται ανά παραλήπτη τη στιγμή της αποστολής. Αυτή η σελίδα είναι η πλήρης αναφορά: κάθε namespace μεταβλητών και κάθε προσαρμοσμένο φίλτρο του Joryio, με παραδείγματα.

Νέοι στη Liquid του Joryio; Ξεκινήστε με τα Πρότυπα Liquid για τα βασικά, και επιστρέψτε εδώ όταν χρειαστείτε τις λεπτομέρειες.

Όλα τα παρακάτω φίλτρα είναι καταχωρημένα σε έναν κοινό μηχανισμό Liquid που χρησιμοποιείται από κάθε διαδρομή απόδοσης, οπότε το ίδιο πρότυπο αποδίδεται πανομοιότυπα σε πρότυπα email, SMS, WhatsApp, push, in-app και webhook - σε καμπάνιες, journeys και προεπισκοπήσεις εξίσου. Ό,τι βλέπετε στην προεπισκόπηση είναι αυτό που στέλνει κάθε κανάλι.

Δύο «συγχωρητικές» προεπιλογές που αξίζει να γνωρίζετε:

  • Μια μεταβλητή χωρίς τιμή αποδίδεται ως κενό κείμενο - ποτέ ως σφάλμα.
  • Ένα άγνωστο φίλτρο αφήνει την τιμή να περάσει αμετάβλητη αντί να αποτύχει.

Μεταβλητές

Τα διαθέσιμα namespaces, με μια ματιά. Ακολουθήστε τους συνδέσμους για τις πλήρεις λεπτομέρειες καθενός.

NamespaceΤι περιέχειΛεπτομέρειες
user.firstName, user.lastName, user.email, user.phone, user.id, user.externalId, user.whatsappNameΤα προεπιλεγμένα γνωρίσματα της επαφήςΜεταβλητές μηνυμάτων
user.custom.<attribute>Οποιοδήποτε προσαρμοσμένο γνώρισμα της επαφής (π.χ. user.custom.plan)Μεταβλητές μηνυμάτων
trigger.properties.<field>Πώς μπήκαν στο journey - το συμβάν εισόδου, σταθερό για ολόκληρη την εκτέλεσηΜεταβλητές μηνυμάτων
event.properties.<field>, event.nameΤο τελευταίο πράγμα που έκαναν - το πιο πρόσφατο συμβάν που προώθησε το journeyΜεταβλητές μηνυμάτων
reply.text, reply.type, reply.profile.nameΦιλικά ψευδώνυμα για την τελευταία εισερχόμενη απάντηση της επαφής σε WhatsApp ή SMSΜεταβλητές μηνυμάτων
blocks.<slug>Ένα επαναχρησιμοποιήσιμο Μπλοκ περιεχομένου, αποδιδόμενο επιτόπουΜπλοκ περιεχομένου
unsubscribe_url, preferences_url, resubscribe_urlΣύνδεσμοι συνδρομής ανά παραλήπτη (email, SMS, συνεδρία WhatsApp)Πρότυπα Liquid
Φίλτρα products και entityΕγγραφές καταλόγου προϊόντων ή προσαρμοσμένης οντότητας από μια αποθηκευμένη ΕπιλογήΤροφοδοσίες καταλόγου παρακάτω

Τα trigger.*, event.* και reply.* επιλύονται μόνο μέσα σε ένα journey· τα υπόλοιπα λειτουργούν παντού.

Φίλτρα

Αλυσιδώστε φίλτρα με |, περάστε ορίσματα μετά το :. Για παράδειγμα:

{{ user.firstName | capitalize | default: "there" }}
{{ order.total | currency: "EUR" }}

Κείμενο

ΦίλτροΤι κάνειΠαράδειγμα → Έξοδος
capitalizeΚεφαλαιοποιεί το πρώτο γράμμα και μετατρέπει τα υπόλοιπα σε πεζά{{ "mAYA" | capitalize }}Maya
uppercaseΜετατρέπει όλη τη συμβολοσειρά σε κεφαλαία{{ "sale" | uppercase }}SALE
lowercaseΜετατρέπει όλη τη συμβολοσειρά σε πεζά{{ "SALE" | lowercase }}sale
truncateΚόβει μια συμβολοσειρά σε ένα μήκος (προεπιλογή 50) και προσθέτει μια κατάληξη (προεπιλογή ...). Η κατάληξη προστίθεται μετά το κόψιμο, επιπλέον του μήκους{{ "The quick brown fox jumps" | truncate: 9 }}The quick...
strip_htmlΑφαιρεί τις ετικέτες HTML{{ "<b>Sale</b> today" | strip_html }}Sale today
url_encodeΚωδικοποιεί μια συμβολοσειρά για URL (για κατασκευή συνδέσμων){{ "red shoes" | url_encode }}red%20shoes
pluralizeΜε δεδομένο έναν αριθμό, επιστρέφει τη λέξη στον ενικό ή στον πληθυντικό. Ο πληθυντικός από προεπιλογή είναι ο ενικός + s· περάστε τρίτο όρισμα για ανώμαλους πληθυντικούς3 {{ 3 | pluralize: "item" }}3 items
defaultΕφεδρική τιμή όταν η τιμή είναι null, απροσδιόριστη ή κενή συμβολοσειρά{{ user.firstName | default: "there" }}there (όταν είναι κενή)

Αριθμοί και χρήματα

ΦίλτροΤι κάνειΠαράδειγμα → Έξοδος
currencyΜορφοποιεί έναν αριθμό ως χρηματικό ποσό. Ο κωδικός νομίσματος από προεπιλογή είναι USD· περάστε οποιονδήποτε κωδικό ISO. Χρησιμοποιεί μορφοποίηση en-US (σύμβολο πρώτα, κόμμα για χιλιάδες){{ 1249.5 | currency }}$1,249.50 · {{ order.total | currency: "EUR" }}€49.90

Ημερομηνίες

ΦίλτροΤι κάνειΠαράδειγμα → Έξοδος
date_formatΜορφοποιεί μια ημερομηνία. Στυλ: short (προεπιλογή), long, full. Ένα άγνωστο στυλ επιστρέφει στο short. Αγγλικά (en-US) ονόματα μηνών/ημερών{{ order.createdAt | date_format }}Jul 12, 2026 · {{ order.createdAt | date_format: "long" }}July 12, 2026 · "full"Sunday, July 12, 2026
add_daysΠροσθέτει N ημέρες σε μια ημερομηνία (αρνητικό για αφαίρεση). Επιστρέφει χρονική σήμανση ISO - αλυσιδώστε το date_format για να γίνει αναγνώσιμη{{ order.createdAt | add_days: 7 | date_format }}Jul 19, 2026
time_agoΦιλικός σχετικός χρόνος (με λεπτομέρεια έτους/μήνα/εβδομάδας/ημέρας/ώρας/λεπτού/δευτερολέπτου){{ user.custom.lastOrderAt | time_ago }}3 days ago

Πίνακες (arrays)

ΦίλτροΤι κάνειΠαράδειγμα → Έξοδος
joinΕνώνει τα στοιχεία ενός πίνακα σε μια συμβολοσειρά. Ο διαχωριστής από προεπιλογή είναι , {{ names | join }}Ana, Ben, Gal · {{ names | join: " / " }}Ana / Ben / Gal
mapΕξάγει μία ιδιότητα από κάθε στοιχείο, επιστρέφοντας νέο πίνακα{{ items | map: "name" | join }}Mug, Tee
firstΤο πρώτο στοιχείο{{ items | first }}
lastΤο τελευταίο στοιχείο{{ items | last }}
sizeΤο μήκος ενός πίνακα ή μιας συμβολοσειράς (0 για οτιδήποτε άλλο){{ cart.items | size }}3
countΟ αριθμός των στοιχείων ενός πίνακα (0 αν δεν είναι πίνακας){{ cart.items | count }}3

Συγκεντρωτικά και φιλτράρισμα

Αυτά λειτουργούν σε πίνακες εγγραφών - είδη καλαθιού, παραγγελίες ή Επιλογές καταλόγου. Κάθε όρισμα field υποστηρίζει διαδρομές με τελείες μέσα σε ένθετα αντικείμενα (π.χ. "price.amount").

ΦίλτροΤι κάνειΠαράδειγμα → Έξοδος
sumΑθροίζει ένα αριθμητικό πεδίο σε όλο τον πίνακα (οι τιμές που λείπουν μετρούν ως 0){{ orders | sum: "totalAmount" }}540
avgΥπολογίζει τον μέσο όρο ενός αριθμητικού πεδίου (0 για κενό πίνακα){{ orders | avg: "totalAmount" }}180
maxΗ μεγαλύτερη αριθμητική τιμή ενός πεδίου (οι μη αριθμητικές τιμές αγνοούνται· 0 αν δεν υπάρχει καμία){{ products | max: "price" }}129.9
minΗ μικρότερη αριθμητική τιμή ενός πεδίου{{ products | min: "price" }}19.9
whereΦιλτράρει τον πίνακα. Τρεις μορφές κλήσης: το where: "featured" κρατά τα «αληθή» στοιχεία· το where: "category", "shoes" κρατά τα ίσα στοιχεία· το where: "price", "gt", 100 συγκρίνει με τελεστή: eq, neq, gt, gte, lt, lte, contains, in (λειτουργούν και οι συμβολικές μορφές ==, !=, >, >=, <, <=){{ items | where: "category", "shoes" | count }}2
sortΤαξινομεί κατά πεδίο, με σειρά asc (προεπιλογή) ή desc. Χωρίς πεδίο, ταξινομεί τις ίδιες τις τιμές{{ products | sort: "price", "desc" | first }} → το ακριβότερο προϊόν

Ένα ολοκληρωμένο παράδειγμα - οι τρεις πιο πρόσφατες παραγγελίες του παραλήπτη:

{% assign recent = orders | sort: 'createdAt', 'desc' %}
{% for order in recent limit: 3 %}
- {{ order.createdAt | date_format }}: {{ order.totalAmount | currency }}
{% endfor %}
Total spent: {{ orders | sum: 'totalAmount' | currency }}

Τροφοδοσίες καταλόγου

Δύο φίλτρα φέρνουν συλλογές εγγραφών μέσα σε ένα μήνυμα, το καθένα βασισμένο σε μια αποθηκευμένη Επιλογή (Selection) με εμβέλεια τον χώρο εργασίας σας. Και τα δύο επιστρέφουν πίνακα - χρησιμοποιήστε τα σε μια ετικέτα assign και έπειτα κάντε επανάληψη με βρόχο.

products - κατάλογος προϊόντων καταστήματος

Αντλεί από τον συγχρονισμένο κατάλογο προϊόντων σας (Shopify / WooCommerce / Magento) μέσω μιας Επιλογής προϊόντων. Υπάρχει ένας μόνο κατάλογος προϊόντων, οπότε το όρισμα είναι το όνομα της Επιλογής:

{% assign products = 'featured' | products %}
{% for item in products %}
- {{ item.name }}: {{ item.price | currency }}
{% endfor %}

entity - τροφοδοσία προσαρμοσμένης οντότητας

Αντλεί εγγραφές από μια Προσαρμοσμένη οντότητα. Το πρώτο όρισμα είναι το όνομα της οντότητας, το δεύτερο (προαιρετικό) είναι το όνομα της Επιλογής:

{% assign episodes = 'tv_series' | entity: 'latest' %}
{% for item in episodes %}
- {{ item.name }}
{% endfor %}

Μπορείτε να περάσετε μεταβλητές σε μια παραμετροποιημένη Επιλογή οντότητας - για παράδειγμα, να της τροφοδοτήσετε το συμβάν εισόδου του journey:

{% assign items = 'products' | entity: 'product_by_id', trigger %}

Σημειώσεις για τη συμπεριφορά τους:

  • Οι Επιλογές που είναι ίδιες για κάθε παραλήπτη (χωρίς φίλτρα γνωρισμάτων χρήστη ή περιβάλλοντος) αποθηκεύονται σε cache για περίπου 5 λεπτά, ώστε οι μαζικές αποστολές να μην ξαναρωτούν ανά παραλήπτη. Οι εξατομικευμένες Επιλογές οντοτήτων αξιολογούνται εκ νέου για κάθε παραλήπτη.
  • Αν η Επιλογή οντότητας/προϊόντων δεν βρεθεί (ή το ερώτημα αποτύχει), το φίλτρο επιστρέφει κενό πίνακα - ο βρόχος for απλώς δεν αποδίδει τίποτα, ποτέ σφάλμα.
  • Οι επιλογές Κατάλογος προϊόντων και Προσαρμοσμένη οντότητα του εργαλείου επιλογής εξατομίκευσης χτίζουν το απόσπασμα assign για λογαριασμό σας (δείτε τις Μεταβλητές μηνυμάτων).
Παρωχημένο: catalog

Το παλαιότερο φίλτρο catalog είναι παρωχημένο ψευδώνυμο του entity και εξακολουθεί να λειτουργεί, ώστε τα υπάρχοντα πρότυπα να μην σπάνε. Προτιμήστε στο εξής το entity για προσαρμοσμένες οντότητες και το products για τον κατάλογο του καταστήματος.

Πού διαφέρει το Joryio από την τυπική Liquid

Ορισμένα φίλτρα συμπεριφέρονται σκόπιμα διαφορετικά από τα ομώνυμά τους σε Shopify/LiquidJS:

  • Το capitalize μετατρέπει επίσης σε πεζά το υπόλοιπο της συμβολοσειράς (το "mAYA" γίνεται Maya, όχι MAYA).
  • Το default αντιμετωπίζει την κενή συμβολοσειρά ως απούσα, οπότε το {{ user.firstName | default: "there" }} καταφεύγει στην εφεδρική τιμή ακόμη κι όταν το γνώρισμα υπάρχει αλλά είναι κενό.
  • Το truncate προσθέτει την κατάληξη μετά το μήκος κοπής (η τυπική Liquid μετρά τις τελείες μέσα στο μήκος).
  • Τα where και sort είναι υπερσύνολα των ενσωματωμένων: δέχονται τις τυπικές μορφές κλήσης και προσθέτουν τελεστές σύγκρισης / κατεύθυνση ταξινόμησης, καθώς και πεδία με διαδρομές τελειών.

Η τυπική Liquid εξακολουθεί να λειτουργεί

Όλα τα παραπάνω χτίζονται πάνω στην τυπική LiquidJS: οι ενσωματωμένες ετικέτες - {% if %} / {% elsif %} / {% else %}, {% for %}, {% assign %}, {% case %} και οι υπόλοιπες - και τα ενσωματωμένα φίλτρα (upcase, downcase, date, replace, split, plus, times και πολλά ακόμη) λειτουργούν όλα σε οποιοδήποτε πρότυπο του Joryio. Όπου ένα φίλτρο του Joryio μοιράζεται όνομα με ένα ενσωματωμένο (capitalize, default, where, sort, join, map, first, last, size), εκτελείται η έκδοση του Joryio που περιγράφεται σε αυτήν τη σελίδα. Δείτε την πλήρη λίστα ενσωματωμένων στο liquidjs.com/filters/overview.html.

Σχετικά