تخطَّ إلى المحتوى

وسوم Liquid

الوسوم المتاحة، وقواعد layout وblock وinclude، وما يُرفض، وتحذير الحالة داخل الأقسام.

آخر تحديث 2 أيلول 2026قراءة 1 د
في هذه الصفحة

يشغّل محرّك دكان LiquidJS بوسومه القياسية وخيارات مشدّدة. هذه الصفحة تجمع ما تحتاج معرفته عن الوسوم دون تكرار توثيق Liquid العام.

الخيارات المشدّدة#

الخيار الأثر
مرشّحات صارمة مرشّح مجهول = خطأ تصيير
خصائص ذاتية فقط لا يُحلّ إلا ما يملكه الكائن فعلاً؛ لا constructor ولا سلسلة النماذج
صدقية JavaScript "" و0 وnull وfalse كلها خاطئة؛ استخدم != blank وsize > 0 بوعي
تهريب المخرجات كل {{ }} يُهرَّب إلا مخرجات المرشّحات الآمنة
لا مراجع نسبية include بالمسار الكامل داخل الحزمة فقط
حدود راجع الحدود

layout وblock#

templates/category.liquidLiquid
{% layout 'layout/theme.liquid' %}
{% block content %}
  <h1>{{ category.name }}</h1>
{% endblock %}
  • يجب أن يكون {% layout %} أول وسم في القالب، ومساره كاملاً.
  • يعلن الهيكل كتلاً بـ {% block NAME %}…{% endblock %} ومحتواها الافتراضي داخلها؛ يملؤها القالب بالاسم نفسه.
  • يمكن للهيكل أن يعلن أكثر من كتلة (head_extra، content)؛ ما لم يملأه القالب يبقى على افتراضي الهيكل.
  • لا يوجد متغير لمحتوى القالب داخل الهيكل؛ {% block %} هو الطريق الوحيد.

include#

Liquid
{% 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.

Liquid
{% 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، وعلامات غلاف الأقسام. القائمة بنصوصها في فحص الثيم.