وسوم Liquid
الوسوم المتاحة، وقواعد layout وblock وinclude، وما يُرفض، وتحذير الحالة داخل الأقسام.
في هذه الصفحة
يشغّل محرّك دكان LiquidJS بوسومه القياسية وخيارات مشدّدة. هذه الصفحة تجمع ما تحتاج معرفته عن الوسوم دون تكرار توثيق Liquid العام.
الخيارات المشدّدة#
| الخيار | الأثر |
|---|---|
| مرشّحات صارمة | مرشّح مجهول = خطأ تصيير |
| خصائص ذاتية فقط | لا يُحلّ إلا ما يملكه الكائن فعلاً؛ لا constructor ولا سلسلة النماذج |
| صدقية JavaScript | "" و0 وnull وfalse كلها خاطئة؛ استخدم != blank وsize > 0 بوعي |
| تهريب المخرجات | كل {{ }} يُهرَّب إلا مخرجات المرشّحات الآمنة |
| لا مراجع نسبية | include بالمسار الكامل داخل الحزمة فقط |
| حدود | راجع الحدود |
layout وblock#
{% layout 'layout/theme.liquid' %}
{% block content %}
<h1>{{ category.name }}</h1>
{% endblock %}- يجب أن يكون
{% layout %}أول وسم في القالب، ومساره كاملاً. - يعلن الهيكل كتلاً بـ
{% block NAME %}…{% endblock %}ومحتواها الافتراضي داخلها؛ يملؤها القالب بالاسم نفسه. - يمكن للهيكل أن يعلن أكثر من كتلة (
head_extra،content)؛ ما لم يملأه القالب يبقى على افتراضي الهيكل. - لا يوجد متغير لمحتوى القالب داخل الهيكل؛
{% block %}هو الطريق الوحيد.
include#
{% include 'snippets/product-card.liquid' %}
{% include 'snippets/pager.liquid', pager_base: category.url %}
{% assign icon = 'cart' %}{% include 'snippets/icons.liquid' %}- المسار كامل من جذر الحزمة مع الامتداد؛ الملف الغائب يفشل التصيير برسالة
template not found. - يشارك المقطع نطاق المتغيرات مع من ضمّنه (نمط
includeلاrender)، ويقبل معاملات مسمّاة تُصبح متغيرات. - تضمين
assets/theme.cssداخل<style>هو الطريقة المعتمدة لشحن CSS.
وسوم التحكم والحلقات#
if/elsif/else/unless، case/when، for مع forloop وbreak/continue وlimit/offset/reversed، tablerow، assign، capture، comment، liquid، echo: كلها متاحة كما في LiquidJS.
{% for product in products limit: 8 %}
{% if forloop.first %}<ul>{% endif %}
<li>{{ product.name }}</li>
{% if forloop.last %}</ul>{% endif %}
{% endfor %}increment وdecrement وcycle#
تحذير
تحتفظ هذه الوسوم بحالة بين الاستدعاءات. داخل أجسام الأقسام تُصيَّر كل كتلة مرتين (التقاط ثم إصدار)، فتنحرف عدّاداتها ودوراتها. لا تستخدمها في snippets/section-body.liquid ولا فيما يضمّنه. استخدم forloop.index وassign بدلاً منها.
raw (الوسم)#
{% raw %}…{% endraw %} وسم قياسي لإخراج نص يحوي أقواس Liquid حرفياً؛ مسموح، لأنه يُهرَّب كأي نص. لا تخلط بينه وبين المرشّح | raw المعطَّل.
ما يُرفض عند الدفع#
أي <script> غير JSON-LD، ومعالجات الأحداث السطرية، وjavascript:، وdata:text/html، و<iframe>، والمرشّح | raw، وعلامات غلاف الأقسام. القائمة بنصوصها في فحص الثيم.