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

الأقسام والكتل

إعلان الأقسام، وموزّع الأجسام، والتصيير المزدوج، والأشرطة، ومصادر المنتجات، ووحدات منصّة التشغيل.

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

هذه الصفحة لمن يريد أن يركّب التاجر صفحته بنفسه من المحرّر المرئي. في نهايتها تعرف كيف تعلن قسماً، وكيف يصل جسمه إلى الصفحة، وما القواعد التي تكسر التصيير إن نسيتها.

النموذج#

  1. يعلن الثيم أنواع الأقسام في config/settings_schema.json تحت sections (النوع، الإعدادات، الكتل، الصفحات المسموحة).
  2. يركّب التاجر مثيلات من هذه الأنواع في المحرّر، فتُحفظ في مستند الإعدادات تحت pages.<page>.
  3. عند التصيير تحلّ المنصّة المستند إلى page_sections: مثيلات مرئية ومرتّبة ومعتمدة، مع منتجات محلولة لمن يعلن مصادر، وبلا عدّادات تنازلية منتهية.
  4. يضع القالب {% include 'snippets/sections.liquid' %} حيث يريد ظهور أقسام التاجر، ويكتب الثيم snippets/section-body.liquid لتصيير جسم كل نوع.

موزّع الأجسام#

الملف الوحيد الذي تكتبه هو snippets/section-body.liquid: تبديل على section.type:

snippets/section-body.liquidLiquid
{% case section.type %}
{% when 'hero_banner' %}{% include 'snippets/section-hero-banner.liquid' %}
{% when 'featured_products' %}{% include 'snippets/section-featured-products.liquid' %}
{% when 'rich_text' %}{% include 'snippets/section-rich-text.liquid' %}
{% endcase %}

داخل كل جسم يتوفّر section بالحقول id وtype وsettings وblocks وband وproducts وproducts_total. الغلاف <section class="sec sec--<type>" data-dukkan-section data-section-id="…"> تُصدره المنصّة من snippets/sections.liquid المحقون؛ لا تكتبه أنت أبداً.

القواعد التي تكسر التصيير#

  • الأجسام تُصيَّر مرتين. يصيّر الموزّع كل جسم في التقاط أولاً ليكتشف الفراغ، ثم فعلياً. يجب أن يكون الجسم خالياً من الآثار الجانبية: لا {% increment %} ولا {% decrement %} ولا حالة cycle.
  • الجسم الفارغ لا يُصدر غلافاً. ما يُصيَّر إلى مسافات بيضاء فقط يختفي مع غلافه، فلا يترك قسم غير مضبوط شريطاً فارغاً. استثمر ذلك: لا تُصدر شيئاً عندما لا يوجد ما يُعرض.
  • التناوب. كل قسم فردي غير فارغ وغير شريطي يحمل الصنف sec--alt؛ صمّم معالجة متناوبة عليه. الأقسام التي تعلن "band": true (شرائط بعرض الصفحة) تُستثنى من العدّ فلا يقلب إدراج بانر تناوب ما حوله، وتُعرض في السياق كـ section.band.
  • لا تُصدر علامات الغلاف. أي data-dukkan-section أو data-section-id= في مخرجاتك يُرفض عند الدفع.

الصفحات المسموحة#

يعلن كل نوع الصفحات التي يمكن وضعه عليها عبر enabled_on بمجموعة من home وproduct وcategory وcart. غيابه يعني الصفحة الرئيسية فقط. تضييقه لاحقاً يُسقط المثيلات المحفوظة على الصفحات المحذوفة بصمت ولا يعطّل حفظ التاجر.

مصادر المنتجات#

إعداد من نوع product أو category يحمل "source": true يجعل المنصّة تجلب منتجاته قبل التصيير وتضعها في section.products (وفي block.products للكتل). لا يجلب الثيم شيئاً؛ يصيّر ما يصله بترتيب التاجر، بما فيه المنتجات غير المتاحة كي تعرض حالة «نفد» صادقة بدل إخفائها.

  • الحدّ لكل قسم يأتي من settings.limit، وإن غاب فمن settings.count.
  • section.products_total مجموع أسعار المتاحين منها بالوحدات الصغرى، محسوب على المنصّة لأزرار «اشترِها معاً».
  • اترك مصدر التصنيف فارغاً لتعود إلى السلوك الافتراضي (المنتجات المميّزة أولاً).
snippets/section-featured-products.liquidLiquid
{% if section.products.size > 0 %}
<h2>{{ section.settings.title }}</h2>
<ul>
  {% for product in section.products %}
  <li><a href="{{ product.url }}">{{ product.name }}</a> {{ product.price | money }}</li>
  {% endfor %}
</ul>
{% endif %}

الكتل#

الكتلة مثيل مضمّن داخل القسم (شريحة في بانر، سؤال في قائمة أسئلة، عنصر في حزمة). تُعلن أنواعها في blocks داخل تعريف القسم، وتصل مرتّبة في section.blocks بالحقول id وtype وsettings وproducts.

مستند العرض والتثبيت الأول#

config/showcase.json مستند إعدادات كامل يعمل كعرض في معرض الثيمات وكمصدر للتركيب عند التثبيت الأول. تُزال مفاتيح التعليق التالية من المخرجات:

المفتاح أين الأثر عند التثبيت
__demo_only: true قسم يُسقط كلياً (استعجال أو دليل اجتماعي مصطنع يبقى للعرض فقط)
__install_empty: true قسم يبقى النوع بإعدادات فارغة كعنصر نائب صادق
__demo_only_keys: ["k"] المستند أو قسم تُزال تلك المفاتيح (بيانات تواصل وهمية، تواريخ مصطنعة)
__requires: { products?, categories?, images?, promotion?, whatsapp? } قسم أو كتلة يُسقط ما لم يستوفِ المتجر الشرط؛ products لا يتجاوز 12

قاعدة الكتالوج الرقيق: تحت 4 منتجات يبقى أول قسم يتطلب منتجات في كل صفحة فقط.

وحدات منصّة التشغيل#

الثيم CSS فقط؛ التفاعل يأتي من منصّة التشغيل بسمات تصريحية:

السمة الأثر
data-dukkan-add-to-cart، data-dukkan-cart-count، data-dukkan-cart-anchor الإضافة إلى السلة وشارتها
data-dukkan-add-many مع data-dukkan-fly-item="<variantId>" إضافة حزمة مع أثر الطيران لكل عنصر
data-dukkan-reveal-item كشف عند التمرير؛ تُختم <html> بـ data-dukkan-reveal عند الرغبة بالحركة، ويحصل العنصر على data-dukkan-inview
data-dukkan-sticky-atc مع data-dukkan-atc-watch زر شراء ثابت يظهر عندما يغيب صندوق الشراء
data-dukkan-to-top زر العودة إلى الأعلى
data-dukkan-scheme-toggle تبديل الوضع الليلي؛ صمّم لوحتك تحت [data-scheme="dark"]
data-dukkan-stock-alert مع data-product-id نموذج «أعلمني عند التوفّر»
data-dukkan-quick-view على رابط صفحة المنتج معاينة سريعة؛ يعمل الرابط عادياً بلا JavaScript

لا تُخفِ محتوى إلا خلف data-dukkan-reveal على الجذر؛ بدونه يجب أن يكون كل شيء مرئياً.