الفرق بين المراجعتين ل"Liquid/template"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'== الوسوم Tags ذات النوع قالب Template == تخبر وسومُ القوالب لغةَ Liquid مكان تعطيل المعالجة التعليقات أ...')
 
سطر 80: سطر 80:
  
 
=== render (خاص بالإصدار 5.0.0) ===
 
=== render (خاص بالإصدار 5.0.0) ===
 +
يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.<syntaxhighlight lang="liquid">
 +
{% render "template-name" %}
 +
</syntaxhighlight>لاحظ أنك لست بحاجة إلى كتابة لاحقة الملف ‎<code>.liquid</code>.
 +
 +
لا يمكن للشيفرة الموجود في القالب المُصيَّر الوصول تلقائيًا إلى المتغيرات المُسنَدة باستخدام [[الوسوم المتغيرة variable tags]] في القالب الأب، ولا يمكن الوصول إلى المتغيرات المُسنَدة داخل القالب المُصيَّر عن طريق الشيفرة الموجودة في أي قالب آخر.
 +
 +
=== معاملات render ===
 +
يمكن تمرير المتغيرات المُسنَدة باستخدام الوسوم المتغيرة إلى قالب عن طريق إدراجها كمعاملات للوسم <code>render</code>.<syntaxhighlight lang="liquid">
 +
{% assign my_variable = "apples" %}
 +
{% render "name", my_variable: my_variable, my_other_variable: "oranges" %}
 +
</syntaxhighlight>يمكن تمرير كائن واحد أو أكثر إلى قالب.<syntaxhighlight lang="liquid">
 +
{% assign featured_product = all_products["product_handle"] %}
 +
{% render "product", product: featured_product %}
 +
</syntaxhighlight>
 +
 +
==== with ====
 +
يمكن تمرير كائن واحد إلى قالب باستخدام المعامل <code>with</code> والمعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 +
{% assign featured_product = all_products["product_handle"] %}
 +
{% render "product" with featured_product as product %}
 +
</syntaxhighlight>سيحتفظ المتغير <code>product</code> في القالب المصيَّر في المثال السابق بقيمة <code>featured_product</code> من القالب الأب.
 +
 +
==== for ====
 +
يمكن تصيير قالب مرة واحدة لكل قيمة لكائن قابل للعدّ باستخدام المعامل <code>for</code> والمعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 +
{% assign variants = product.variants %}
 +
{% render "product_variant" for variants as variant %}
 +
</syntaxhighlight>سيُصيَّر القالب مرة واحدة في المثال السابق لكل <code>product_variant</code>، وسيحتوي المتغير <code>variant</code> على كائن <code>product_variant</code> مختلف لكل تكرار.
 +
 +
يمكن الوصول إلى كائن <code>[https://shopify.dev/api/liquid/objects/for-loops forloop]</code> داخل القالب المُصيَّر عند استخدام المعامل <code>for</code>.
 +
 +
=== include ===
 +
<blockquote>'''ملاحظة''': أُلغِي الوسم <code>include</code>، لذلك استخدم الوسم <code>render</code> بدلًا منه.</blockquote>يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.<syntaxhighlight lang="liquid">
 +
{% include "template-name" %}
 +
</syntaxhighlight>يعمل الوسم <code>include</code> بطريقة مشابهة للوسم <code>render</code>، ولكنه يسمح للشيفرة الموجودة داخل القالب المُصيَّر بالوصول إلى المتغيرات واستبدالها ضمن القالب الأب. أُلغِي هذا الوسم بسبب الطريقة التي يتعامل بها مع المتغيرات التي تقلّل من الأداء وتصعّب قراءة شيفرة Liquid وصيانتها.
 +
 +
لاحظ أنه لا يمكن استخدام الوسم <code>include</code> داخل القالب عند تصييره باستخدام الوسم <code>render</code>.
 +
 +
== مصادر ==
 +
 +
* [https://shopify.github.io/liquid/tags/template/ صفحة Template في توثيق Liquid الرسمي.]

مراجعة 21:45، 2 أغسطس 2021

الوسوم Tags ذات النوع قالب Template

تخبر وسومُ القوالب لغةَ Liquid مكان تعطيل المعالجة التعليقات أو الرموز التي ليست تابعة للغة Liquid، وكيفية إنشاء علاقات بين ملفات القوالب.

comment

يسمح لك بوضع شيفرة غير مُصيَّرة ضمن قالب Liquid، إذ لن يُطبَع أيّ نص موجود بين كتل فتح وإغلاق الوسم comment، ولن يُنفَّذ شيفرة Liquid الموجودة ضمنها أيضًا.

الدخل
{% assign verb = "turned" %}
{% comment %}
{% assign verb = "converted" %}
{% endcomment %}
Anything you put between {% comment %} and {% endcomment %} tags
is {{ verb }} into a comment.
الخرج

Anything you put between tags

is turned into a comment.‎

raw

يعطّل معالجة الوسوم مؤقتًا، وهذا مفيد لإنشاء محتوى معيّن يستخدم صيغة متضاربة conflicting syntax مثل Mustache أو Handlebars.

الدخل
{% raw %}
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
{% endraw %}
الخرج
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.

liquid (خاص بالإصدار 5.0.0)

يُستخدَم لإحاطة وسوم متعددة ضمن مجموعة واحدة من المحدّدات، للسماح بكتابة منطق لغة Liquid بصورة موجَزة.

{% liquid
case section.blocks.size
when 1
  assign column_size = ''
when 2
  assign column_size = 'one-half'
when 3
  assign column_size = 'one-third'
else
  assign column_size = 'one-quarter'
endcase %}

استخدم الوسم echo لإخراج البيانات، لأنه يجب إغلاق أي كتل وسوم مفتوحة ضمن الوسم liquid بالوسم نفسه.

echo (خاص بالإصدار 5.0.0)

يُستخدَم لإخراج تعبير في شيفرة HTML المصيَّرة، وهذا مماثل لتغليف التعبير بالرموز {{ و }} ولكنه يعمل ضمن وسوم liquid ويدعم المرشّحات filters.

الدخل
{% liquid
for product in collection.products
  echo product.title | capitalize
endfor %}
الخرج
Hat Shirt Pants

render (خاص بالإصدار 5.0.0)

يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.

{% render "template-name" %}

لاحظ أنك لست بحاجة إلى كتابة لاحقة الملف ‎.liquid.

لا يمكن للشيفرة الموجود في القالب المُصيَّر الوصول تلقائيًا إلى المتغيرات المُسنَدة باستخدام الوسوم المتغيرة variable tags في القالب الأب، ولا يمكن الوصول إلى المتغيرات المُسنَدة داخل القالب المُصيَّر عن طريق الشيفرة الموجودة في أي قالب آخر.

معاملات render

يمكن تمرير المتغيرات المُسنَدة باستخدام الوسوم المتغيرة إلى قالب عن طريق إدراجها كمعاملات للوسم render.

{% assign my_variable = "apples" %}
{% render "name", my_variable: my_variable, my_other_variable: "oranges" %}

يمكن تمرير كائن واحد أو أكثر إلى قالب.

{% assign featured_product = all_products["product_handle"] %}
{% render "product", product: featured_product %}

with

يمكن تمرير كائن واحد إلى قالب باستخدام المعامل with والمعامل الاختياري as.

{% assign featured_product = all_products["product_handle"] %}
{% render "product" with featured_product as product %}

سيحتفظ المتغير product في القالب المصيَّر في المثال السابق بقيمة featured_product من القالب الأب.

for

يمكن تصيير قالب مرة واحدة لكل قيمة لكائن قابل للعدّ باستخدام المعامل for والمعامل الاختياري as.

{% assign variants = product.variants %}
{% render "product_variant" for variants as variant %}

سيُصيَّر القالب مرة واحدة في المثال السابق لكل product_variant، وسيحتوي المتغير variant على كائن product_variant مختلف لكل تكرار.

يمكن الوصول إلى كائن forloop داخل القالب المُصيَّر عند استخدام المعامل for.

include

ملاحظة: أُلغِي الوسم include، لذلك استخدم الوسم render بدلًا منه.

يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.

{% include "template-name" %}

يعمل الوسم include بطريقة مشابهة للوسم render، ولكنه يسمح للشيفرة الموجودة داخل القالب المُصيَّر بالوصول إلى المتغيرات واستبدالها ضمن القالب الأب. أُلغِي هذا الوسم بسبب الطريقة التي يتعامل بها مع المتغيرات التي تقلّل من الأداء وتصعّب قراءة شيفرة Liquid وصيانتها.

لاحظ أنه لا يمكن استخدام الوسم include داخل القالب عند تصييره باستخدام الوسم render.

مصادر