Αναφορά 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.
Σχετικά
- Πρότυπα Liquid - εισαγωγή και το εργαλείο επιλογής Εξατομίκευσης
- Μεταβλητές μηνυμάτων - τα
trigger.*,event.*καιreply.*στα journeys - Μπλοκ περιεχομένου - επαναχρησιμοποιήσιμα αποσπάσματα μέσω
blocks.slug