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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة)
سطر 1: سطر 1:
== الوسوم Tags ذات النوع قالب Template ==
+
<noinclude>{{DISPLAYTITLE: وسوم القالب في Liquid}}</noinclude>
تخبر وسومُ القوالب لغةَ Liquid بمكان تعطيل معالجة التعليقات أو الرموز التي ليست تابعة للغة Liquid، وكيفية إنشاء علاقات بين ملفات القوالب.
+
تخبر وسومُ القالب Template tags لغةَ Liquid بمكان تعطيل معالجة التعليقات أو الرموز التي ليست تابعة للغة Liquid، وكيفية إنشاء علاقات بين ملفات القوالب.
  
=== comment ===
+
== <code>comment</code> ==
يسمح لك هذا الوسم بوضع شيفرة غير مُصيَّرة ضمن قالب Liquid، إذ لن يُطبَع أيّ نص موجود بين كتل فتح وإغلاق الوسم <code>comment</code>، ولن تُنفَّذ شيفرة Liquid الموجودة ضمنها أيضًا.
+
يسمح لك هذا الوسم بوضع شيفرة غير مُصيَّرة ضمن قالب Liquid، إذ لن يُطبَع أيّ نص موجود بين كتل فتح وإغلاق الوسم <code>comment</code>، ولن تُنفَّذ شيفرة Liquid الموجودة ضمنها أيضًا.<syntaxhighlight lang="liquid">
{| class="wikitable"
 
|+
 
!الدخل
 
!الخرج
 
|-
 
|<syntaxhighlight lang="liquid">
 
 
{% assign verb = "turned" %}
 
{% assign verb = "turned" %}
 
{% comment %}
 
{% comment %}
سطر 16: سطر 10:
 
Anything you put between {% comment %} and {% endcomment %} tags
 
Anything you put between {% comment %} and {% endcomment %} tags
 
is {{ verb }} into a comment.
 
is {{ verb }} into a comment.
 +
</syntaxhighlight>الخرج:<syntaxhighlight lang="liquid">
 +
 +
 +
Anything you put between  tags
 +
is turned into a comment.
 
</syntaxhighlight>
 
</syntaxhighlight>
<code>Anything you put between  tags</code>
+
== <code>raw</code> ==
 
+
يعطّل معالجة الوسوم مؤقتًا، وهذا مفيد لإنشاء محتوى معيّن يستخدم صيغة متضاربة conflicting syntax مثل [https://mustache.github.io/ Mustache] أو [https://handlebarsjs.com/ Handlebars].<syntaxhighlight lang="liquid">
<code>is turned into a comment.‎</code>
 
|}
 
=== raw ===
 
يعطّل معالجة الوسوم مؤقتًا، وهذا مفيد لإنشاء محتوى معيّن يستخدم صيغة متضاربة conflicting syntax مثل [https://mustache.github.io/ Mustache] أو [https://handlebarsjs.com/ Handlebars].
 
{| class="wikitable"
 
!الدخل
 
!الخرج
 
|-
 
|<syntaxhighlight lang="liquid">
 
 
{% raw %}
 
{% raw %}
 
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
 
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
 
{% endraw %}
 
{% endraw %}
</syntaxhighlight>
+
</syntaxhighlight>الخرج:<syntaxhighlight lang="liquid">
|<syntaxhighlight lang="liquid">
 
  
 
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
 
In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
  
 
</syntaxhighlight>
 
</syntaxhighlight>
|}
+
== <code>liquid</code> (خاص بالإصدار 5.0.0) ==
=== liquid (خاص بالإصدار 5.0.0) ===
+
يُستخدَم لإحاطة وسوم متعددة ضمن مجموعة واحدة من المحدّدات، للسماح بكتابة شيفرات Liquid بإيجاز.<syntaxhighlight lang="liquid">
يُستخدَم لإحاطة وسوم متعددة ضمن مجموعة واحدة من المحدّدات، للسماح بكتابة منطق لغة Liquid بإيجاز.<syntaxhighlight lang="liquid">
 
 
{% liquid
 
{% liquid
 
case section.blocks.size
 
case section.blocks.size
سطر 53: سطر 41:
 
</syntaxhighlight>استخدم الوسم <code>echo</code> لإخراج البيانات، لأنه يجب إغلاق أي كتل وسوم مفتوحة ضمن الوسم <code>liquid</code> بالوسم نفسه.
 
</syntaxhighlight>استخدم الوسم <code>echo</code> لإخراج البيانات، لأنه يجب إغلاق أي كتل وسوم مفتوحة ضمن الوسم <code>liquid</code> بالوسم نفسه.
  
=== echo (خاص بالإصدار 5.0.0) ===
+
== <code>echo</code> (خاص بالإصدار 5.0.0) ==
يُستخدَم لإخراج تعبير في شيفرة HTML المصيَّرة، وهذا مماثل لتغليف التعبير بالرموز <code><nowiki>{{</nowiki></code> و <code><nowiki>}}</nowiki></code> ولكنه يعمل ضمن وسم <code>liquid</code> ويدعم [[Liquid/filters|المرشّحات filters]].
+
يُستخدَم لإخراج تعبير في شيفرة HTML المصيَّرة، وهذا مماثل لتغليف التعبير بالرموز <code><nowiki>{{</nowiki></code> و <code><nowiki>}}</nowiki></code> ولكنه يعمل ضمن وسم <code>liquid</code> ويدعم [[Liquid/filters|المرشّحات filters]].<syntaxhighlight lang="liquid">
{| class="wikitable"
 
!الدخل
 
!الخرج
 
|-
 
|<syntaxhighlight lang="liquid">
 
 
{% liquid
 
{% liquid
 
for product in collection.products
 
for product in collection.products
 
   echo product.title | capitalize
 
   echo product.title | capitalize
 
endfor %}
 
endfor %}
 +
</syntaxhighlight>الخرج:<syntaxhighlight lang="liquid">
 +
Hat Shirt Pants
 
</syntaxhighlight>
 
</syntaxhighlight>
|<code>Hat Shirt Pants</code>
+
== <code>render</code> (خاص بالإصدار 5.0.0) ==
|}
 
=== render (خاص بالإصدار 5.0.0) ===
 
 
يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.<syntaxhighlight lang="liquid">
 
يُستخدَم لإدخال المحتوى المُصيَّر لقالب آخر ضمن القالب الحالي.<syntaxhighlight lang="liquid">
 
{% render "template-name" %}
 
{% render "template-name" %}
 
</syntaxhighlight>لاحظ أنك لست بحاجة إلى كتابة لاحقة الملف ‎<code>.liquid</code>.
 
</syntaxhighlight>لاحظ أنك لست بحاجة إلى كتابة لاحقة الملف ‎<code>.liquid</code>.
  
لا يمكن للشيفرة الموجود في القالب المُصيَّر الوصول تلقائيًا إلى المتغيرات المُسنَدة باستخدام [[Liquid/variable|الوسوم ذات النوع المتغير variable tags]] في القالب الأب، ولا يمكن الوصول إلى المتغيرات المُسنَدة داخل القالب المُصيَّر عن طريق الشيفرة الموجودة في أي قالب آخر.
+
لا يمكن للشيفرة الموجود في القالب المُصيَّر الوصول تلقائيًا إلى المتغيرات المُسنَدة باستخدام [[Liquid/variable|وسوم المتغير variable tags]] في القالب الأب، ولا يمكن الوصول إلى المتغيرات المُسنَدة داخل القالب المُصيَّر عن طريق الشيفرة الموجودة في أي قالب آخر.
 +
 
 +
== عاملات <code>render</code> ==
  
=== عاملات render ===
 
 
يمكن تمرير المتغيرات المُسنَدة باستخدام الوسوم ذات النوع المتغير إلى قالب عن طريق إدراجها كعاملات للوسم <code>render</code>.<syntaxhighlight lang="liquid">
 
يمكن تمرير المتغيرات المُسنَدة باستخدام الوسوم ذات النوع المتغير إلى قالب عن طريق إدراجها كعاملات للوسم <code>render</code>.<syntaxhighlight lang="liquid">
 
{% assign my_variable = "apples" %}
 
{% assign my_variable = "apples" %}
سطر 83: سطر 67:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==== with ====
+
=== <code>with</code> ===
 +
 
 
يمكن تمرير كائن واحد إلى قالب باستخدام العامل <code>with</code> والعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 
يمكن تمرير كائن واحد إلى قالب باستخدام العامل <code>with</code> والعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 
{% assign featured_product = all_products["product_handle"] %}
 
{% assign featured_product = all_products["product_handle"] %}
سطر 89: سطر 74:
 
</syntaxhighlight>سيحتفظ المنتج <code>product</code> في القالب المصيَّر في المثال السابق بالقيمة <code>featured_product</code> من القالب الأب.
 
</syntaxhighlight>سيحتفظ المنتج <code>product</code> في القالب المصيَّر في المثال السابق بالقيمة <code>featured_product</code> من القالب الأب.
  
==== for ====
+
=== <code>for</code> ===
 +
 
 
يمكن تصيير قالب مرة واحدة لكل قيمة لكائن قابل للعدّ باستخدام العامل <code>for</code> والعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 
يمكن تصيير قالب مرة واحدة لكل قيمة لكائن قابل للعدّ باستخدام العامل <code>for</code> والعامل الاختياري <code>as</code>.<syntaxhighlight lang="liquid">
 
{% assign variants = product.variants %}
 
{% assign variants = product.variants %}
سطر 97: سطر 83:
 
يمكن الوصول إلى كائن <code>[https://shopify.dev/api/liquid/objects/for-loops forloop]</code> داخل القالب المُصيَّر عند استخدام العامل <code>for</code>.
 
يمكن الوصول إلى كائن <code>[https://shopify.dev/api/liquid/objects/for-loops forloop]</code> داخل القالب المُصيَّر عند استخدام العامل <code>for</code>.
  
=== include ===
+
== <code>include</code> ==
<blockquote>'''ملاحظة''': أُلغِي الوسم <code>include</code>، لذلك استخدم الوسم <code>render</code> بدلًا منه.</blockquote>يُستخدَم لإدخال المحتوى المُصيَّر لقالبٍ ضمن القالب الحالي.<syntaxhighlight lang="liquid">
+
<blockquote>'''تنبيه''': أُلغِي الوسم <code>include</code>، لذلك استخدم الوسم <code>render</code> بدلًا منه.</blockquote>يُستخدَم لإدخال المحتوى المُصيَّر لقالبٍ ضمن القالب الحالي.<syntaxhighlight lang="liquid">
 
{% include "template-name" %}
 
{% include "template-name" %}
 
</syntaxhighlight>يعمل الوسم <code>include</code> بطريقة مشابهة للوسم <code>render</code>، ولكنه يسمح للشيفرة الموجودة داخل القالب المُصيَّر بالوصول إلى المتغيرات واستبدالها ضمن القالب الأب. أُلغِي هذا الوسم بسبب الطريقة التي يتعامل بها مع المتغيرات التي تقلّل من الأداء وتصعّب قراءة شيفرة Liquid وصيانتها.
 
</syntaxhighlight>يعمل الوسم <code>include</code> بطريقة مشابهة للوسم <code>render</code>، ولكنه يسمح للشيفرة الموجودة داخل القالب المُصيَّر بالوصول إلى المتغيرات واستبدالها ضمن القالب الأب. أُلغِي هذا الوسم بسبب الطريقة التي يتعامل بها مع المتغيرات التي تقلّل من الأداء وتصعّب قراءة شيفرة Liquid وصيانتها.
سطر 107: سطر 93:
  
 
* [https://shopify.github.io/liquid/tags/template/ صفحة Template في توثيق Liquid الرسمي.]
 
* [https://shopify.github.io/liquid/tags/template/ صفحة Template في توثيق Liquid الرسمي.]
 +
[[تصنيف:Liquid]]

مراجعة 13:05، 5 أغسطس 2021

تخبر وسومُ القالب Template tags لغةَ 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.

مصادر