Liquid/iteration

من موسوعة حسوب
مراجعة 01:57، 2 أغسطس 2021 بواسطة Ola-abbas (نقاش | مساهمات) (أنشأ الصفحة ب'== الوسوم Tags ذات النوع التكراري Iteration == تشغّل الوسوم التكرارية كتلًا من الشيفرة تكراريًا. === for...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الوسوم Tags ذات النوع التكراري Iteration

تشغّل الوسوم التكرارية كتلًا من الشيفرة تكراريًا.

for

ينفّذ كتلة من الشيفرة تكراريًا. اطّلع على قائمة كاملة بالسمات المتاحة attributes داخل حلقة for من خلال forloop (object).

الدخل
{% for product in collection.products %}
  {{ product.title }}
{% endfor %}
الخرج
hat shirt pants

else

يحدّد حالة احتياطية لحلقة for والتي ستُشغَّل إذا كان طول الحلقة صفرًا.

الدخل
{% for product in collection.products %}
  {{ product.title }}
{% else %}
  The collection is empty.
{% endfor %}
الخرج
The collection is empty.‎

break

يسبّب توقف تكرار الحلقة عندما تواجه وسم break.

الدخل
{% for i in (1..5) %}
  {% if i == 4 %}
    {% break %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}
الخرج
1 2 3

continue

يسبّب أن تتخطى الحلقة التكرار الحالي عندما تواجه وسم continue.

الدخل
{% for i in (1..5) %}
  {% if i == 4 %}
    {% continue %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}
الخرج
1 2 3 5

معاملات حلقة for

limit

يحدّد الحلقة بعدد محدّد من التكرارات.

الدخل
<!-- if array = [1,2,3,4,5,6] -->
{% for item in array limit:2 %}
  {{ item }}
{% endfor %}
الخرج
1 2

offset

يبدأ الحلقة عند دليل محدَّد.

الدخل
<!-- if array = [1,2,3,4,5,6] -->
{% for item in array offset:2 %}
  {{ item }}
{% endfor %}
الخرج
3 4 5 6

مرّر الكلمة الخاصة continue، لبدء حلقة من حيث توقفت الحلقة الأخيرة باستخدام نفس المكرّر.

الدخل
<!-- if array = [1,2,3,4,5,6] -->
{% for item in array limit: 3 %}
  {{ item }}
{% endfor %}
{% for item in array limit: 3 offset: continue %}
  {{ item }}
{% endfor %}
الخرج
1 2 3

4 5 6

range

يحدّد مجالًا من الأعداد لتكرارها. يمكن تحديد المجال من خلال كلِّ من الأعداد الحرفية والمتغيرة، ويمكن سحبها من المتغير.

الدخل
{% for i in (3..5) %}
  {{ i }}
{% endfor %}

{% assign num = 4 %}
{% assign range = (1..num) %}
{% for i in range %}
  {{ i }}
{% endfor %}
الخرج
3 4 5

1 2 3 4

reversed

يعكس ترتيب الحلقة. انتبه إلى أن هذا العامل يختلف عن الموشّح reverse.

الدخل
<!-- if array = [1,2,3,4,5,6] -->
{% for item in array reversed %}
  {{ item }}
{% endfor %}
الخرج
6 5 4 3 2 1

cycle

عبارة عن حلقات عبر مجموعة من السلاسل النصية وطباعة هذه السلاسل النصية بالترتيب الذي جرى تمريرها به كوسطاء، إذ يُطبَع وسيط السلسلة النصية التالية في كل مرة يُستدعَى بها cycle.

يجب استخدام cycle ضمن كتلة حلقة for.

الدخل
{% cycle "one", "two", "three" %}
{% cycle "one", "two", "three" %}
{% cycle "one", "two", "three" %}
{% cycle "one", "two", "three" %}
الخرج
one

two

three

one

تشمل استخدامات cycle ما يلي:

  • تطبيق أصناف فردية أو زوجية على صفوف في جدول.
  • تطبيق صنف فريد على product thumbnail الأخيرة للمنتج في صف.

معاملات cycle

تقبل cycle معامل "مجموعة الدورات" في الحالات التي تحتاج فيها إلى كتل cycle متعددة في قالب واحد. إذا لم يتوفر أي اسم لمجموعة الدورات، فيُفترَض أن تكون الاستدعاءات المتعددة التي لها المعاملات نفسها مجموعة واحدة.

الدخل
{% cycle "first": "one", "two", "three" %}
{% cycle "second": "one", "two", "three" %}
{% cycle "second": "one", "two", "three" %}
{% cycle "first": "one", "two", "three" %}
الخرج
one

one

two

two

tablerow

يولّد جدول HTML، إذ يجب أن يُغلَّف بوسم فتح <table> ووسم إغلاق <‎/table> خاصين بلغة HTML. اطّلع على قائمة كاملة بالسمات attributes المتاحة داخل حلقة tablerow من خلال tablerow (object).

الدخل
<table>
{% tablerow product in collection.products %}
  {{ product.title }}
{% endtablerow %}
</table>
الخرج
<table>
  <tr class="row1">
    <td class="col1">
      Cool Shirt
    </td>
    <td class="col2">
      Alien Poster
    </td>
    <td class="col3">
      Batman Poster
    </td>
    <td class="col4">
      Bullseye Shirt
    </td>
    <td class="col5">
      Another Classic Vinyl
    </td>
    <td class="col6">
      Awesome Jeans
    </td>
  </tr>
</table>

معاملات حلقة tablerow

cols

يحدّد عدد الأعمدة التي يجب أن تحتوي عليها الجداول.

الدخل
{% tablerow product in collection.products cols:2 %}
  {{ product.title }}
{% endtablerow %}
الخرج
<table>
  <tr class="row1">
    <td class="col1">
      Cool Shirt
    </td>
    <td class="col2">
      Alien Poster
    </td>
  </tr>
  <tr class="row2">
    <td class="col1">
      Batman Poster
    </td>
    <td class="col2">
      Bullseye Shirt
    </td>
  </tr>
  <tr class="row3">
    <td class="col1">
      Another Classic Vinyl
    </td>
    <td class="col2">
      Awesome Jeans
    </td>
  </tr>
</table>

limit

يخرج من حلقة tablerow بعد دليل معين.

{% tablerow product in collection.products cols:2 limit:3 %}
  {{ product.title }}
{% endtablerow %}

offset

يبدأ حلقة tablerow بعد دليل معين.

{% tablerow product in collection.products cols:2 offset:3 %}
  {{ product.title }}
{% endtablerow %}

range