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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 55: سطر 55:
  
 
=== at_least (خاص بالإصدار 4.0.1) ===
 
=== at_least (خاص بالإصدار 4.0.1) ===
يَحُدّ من عددٍ ما إلى حد القيمة الأدنى.
+
يحدّد قيمة عددٍ ما بالقيمة الدنيا.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 69: سطر 69:
  
 
=== at_most (خاص بالإصدار 4.0.1) ===
 
=== at_most (خاص بالإصدار 4.0.1) ===
يَحُدّ من عددٍ ما إلى حد القيمة الأعلى.
+
يحدّد قيمة عددٍ ما بالقيمة العليا.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 105: سطر 105:
  
 
=== ceil ===
 
=== ceil ===
يقرّب هذا المرشّح الدخل إلى أقرب عدد صحيح. تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشّح.
+
يقرّب هذا المرشّح الدخل إلى أقرب وأكبر عدد صحيح، إذ تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشّح.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 120: سطر 120:
 
<code>184</code>
 
<code>184</code>
 
|}
 
|}
سنستخدم في المثال التالي قيمة الدخل كسلسلة نصية:
+
سنستخدم في المثال التالي قيمة الدخل على أنها سلسلة نصية:
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 134: سطر 134:
 
يزيل هذا المرشّح أي قيم <code>nil</code> من المصفوفة.
 
يزيل هذا المرشّح أي قيم <code>nil</code> من المصفوفة.
  
افترض في المثال التالي أن <code>site.pages</code> عبارة عن مجموعة من صفحات محتوى موقع ويب، وبعض هذه الصفحات لها سِمة تسمى <code>category</code> تحدّد فئة محتوى الصفحة. إذا ربطنا <code>map</code> هذه الفئات مع مصفوفة، فقد تكون بعض قيم عناصر المصفوفة <code>nil</code> إن لم تتضمن صفحةٌ ما السمة <code>category</code>.
+
افترض في المثال التالي أن <code>site.pages</code> عبارة عن مجموعة من صفحات محتوى موقع ويب، وبعض هذه الصفحات لها سِمة attribute تسمى <code>category</code> تحدّد فئة محتوى الصفحة. إذا ربطنا <code>map</code> هذه الفئات مع مصفوفة، فقد تكون بعض قيم عناصر المصفوفة <code>nil</code> إن لم تتضمن صفحةٌ ما السمة <code>category</code>.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 178: سطر 178:
  
 
=== concat (خاص بالإصدار 4.0.0) ===
 
=== concat (خاص بالإصدار 4.0.0) ===
يربط (يضم معًا) مصفوفات متعددة، إذ تحتوي المصفوفة الناتجة على جميع العناصر من مصفوفات الدخل.
+
يربط هذا المرشّح (أو يضم معًا) مصفوفات متعددة، إذ تحتوي المصفوفة الناتجة على جميع العناصر من مصفوفات الدخل.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 230: سطر 230:
  
 
=== date ===
 
=== date ===
يحوّل هذا المرشّح العلامة الزمنية timestamp إلى تنسيق تاريخ date آخر، فتنسيق هذه الصيغة هو <code>[http://strftime.net/ strftime]</code> نفسه. يستخدم الدخل تنسيق <code>[https://ruby-doc.org/stdlib-3.0.2/libdoc/time/rdoc/Time.html#method-c-parse Time.parse]</code> الخاص بلغة روبي Ruby نفسه.
+
يحوّل هذا المرشّح العلامة الزمنية timestamp إلى تنسيق تاريخ date آخر، فتنسيق هذه الصيغة هو <code>[http://strftime.net/ strftime]</code> نفسه، بينما يستخدم الدخل تنسيق <code>[https://ruby-doc.org/stdlib-3.0.2/libdoc/time/rdoc/Time.html#method-c-parse Time.parse]</code> الخاص بلغة روبي Ruby نفسه.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 280: سطر 280:
  
 
=== default ===
 
=== default ===
يضبط قيمة افتراضية للمتغير الذي لا يملك قيمة مُسنَدة. سيظهر المرشّح <code>default</code> قيمته إذا كان الدخل <code>nil</code> أو <code>false</code> أو فارغ.
+
يضبط قيمة افتراضية للمتغير الذي لا يملك قيمة مُسنَدة. سيظهِر المرشّح <code>default</code> قيمته إذا كان الدخل قيمة <code>nil</code> أو <code>false</code> أو قيمة فارغة.
  
 
لم تُحدَّد قيمة المتغير <code>product_price</code>، لذلك اُستخدِمت القيمة الافتراضية في المثال التالي:
 
لم تُحدَّد قيمة المتغير <code>product_price</code>، لذلك اُستخدِمت القيمة الافتراضية في المثال التالي:
سطر 321: سطر 321:
 
|}
 
|}
  
=== بالسماح بالقيمة <code>false</code> (خاص بالإصدار 5.0.0) ===
+
=== السماح بالقيمة <code>false</code> (خاص بالإصدار 5.0.0) ===
يمكن السماح للمتغيرات أن تعيد القيمة <code>false</code> بدلًا من القيمة الافتراضية من خلال استخدام المعامل <code>allow_false</code>.
+
يمكن السماح للمتغيرات بأن تعيد القيمة <code>false</code> بدلًا من القيمة الافتراضية من خلال استخدام العامل <code>allow_false</code>.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 339: سطر 339:
 
يقسم هذا المرشّح عددًا على عددٍ آخر.
 
يقسم هذا المرشّح عددًا على عددٍ آخر.
  
تُقرَّب النتيجة إلى أقرب عدد صحيح (كالمرشّح  <code>floor</code>) إذا كان المقسوم عليه عددًا صحيحًا.
+
تُقرَّب النتيجة إلى أقرب وأصغر عدد صحيح (كالمرشّح  <code>floor</code>) إذا كان المقسوم عليه عددًا صحيحًا.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 355: سطر 355:
  
 
==== التحكم بعملية التقريب ====
 
==== التحكم بعملية التقريب ====
ينتج عن المرشّح <code>divided_by</code> نتيجة من نوع المقسوم عليه نفسه، أي إذا قسمت على عدد صحيح، فستكون النتيجة عددًا صحيحًا. إذا قسمت على عدد عشري float، فستكون النتيجة عددًا عشريًا.
+
ينتج عن المرشّح <code>divided_by</code> نتيجة من نوع المقسوم عليه، أي إذا قسمت على عدد صحيح، فستكون النتيجة عددًا صحيحًا. إذا قسمت على عدد عشري float، فستكون النتيجة عددًا عشريًا.
  
 
المقسوم عليه في المثال التالي هو عدد صحيح:
 
المقسوم عليه في المثال التالي هو عدد صحيح:
سطر 383: سطر 383:
  
 
==== تغيير أنواع المتغيرات ====
 
==== تغيير أنواع المتغيرات ====
قد ترغب في استخدام متغير كمقسوم عليه، حيث لا يمكنك في هذه الحالة إضافة <code>‎.0</code> لتحويله إلى عدد عشري ببساطة، ولكن يمكنك إسناد <code>assign</code> نسخة محوَّلة من المتغير إلى عدد عشري باستخدام المرشّح <code>times</code>.
+
قد ترغب في استخدام متغير كمقسوم عليه، حيث لا يمكنك في هذه الحالة إضافة <code>‎.0</code> لتحويله إلى عدد عشري ببساطة، ولكن يمكنك إسناد <code>assign</code> نسخة من المتغير محوَّلة إلى عدد عشري باستخدام المرشّح <code>times</code>.
  
سنقسم في المثال التالي على متغير يحتوي على عدد صحيح، لذلك نحصل على عدد صحيح:
+
سنقسم في المثال التالي على متغير يحتوي على عدد صحيح، لذلك سنحصل على عدد صحيح:
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 398: سطر 398:
 
<code>2</code>
 
<code>2</code>
 
|}
 
|}
نضرب المتغير بالعدد <code>1.0</code> باستخدام المرشّح <code>times</code> لنحصل على عدد عشري، ثم نقسمه على عدد عشري بدلًا من ذلك في المثال التالي:
+
نضرب المتغير بالعدد <code>1.0</code> باستخدام المرشّح <code>times</code> لنحصل على عدد عشري، ثم نقسم على عدد عشري في المثال التالي:
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 414: سطر 414:
  
 
=== downcase ===
 
=== downcase ===
يجعل هذا المرشّح كل حرف في سلسلة نصية أحرفًا صغيرة، وليس له تأثير على السلاسل النصية التي تتكون بالفعل من أحرف صغيرة.
+
يجعل هذا المرشّح كل حرف في سلسلة نصية بحالة الأحرف الصغيرة، وليس له تأثير على السلاسل النصية التي تتكون من أحرف صغيرة مسبقًا.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 489: سطر 489:
  
 
=== first ===
 
=== first ===
يعيد هذا المرشّح العنصر الأول من المصفوفة.
+
يعيد هذا المرشّح العنصر الأول من مصفوفة.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 514: سطر 514:
 
<code>zebra</code>
 
<code>zebra</code>
 
|}
 
|}
يمكنك استخدام المرشّح <code>first</code> مع الصيغة النقطية عندما تحتاج إلى استخدام المرشّح ضمن وسم:<syntaxhighlight lang="liquid">
+
يمكنك استخدام المرشّح <code>first</code> مع الصيغة النقطية dot notation عندما تحتاج إلى استخدام المرشّح ضمن وسم كما يلي:<syntaxhighlight lang="liquid">
 
{% if my_array.first == "zebra" %}
 
{% if my_array.first == "zebra" %}
 
   Here comes a zebra!
 
   Here comes a zebra!
سطر 521: سطر 521:
  
 
=== floor ===
 
=== floor ===
يقرّب هذا المرشّح الدخل إلى أقرب عدد صحيح. تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشح.
+
يقرّب هذا المرشّح الدخل إلى أقرب وأصغر عدد صحيح، حيث تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشح.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 551: سطر 551:
  
 
=== join ===
 
=== join ===
يدمج هذا المرشّح العناصر الموجودة في مصفوفة في سلسلة نصية واحدة باستخدام الوسيط كفاصل بينها.
+
يدمج هذا المرشّح العناصر الموجودة في مصفوفة ضمن سلسلة نصية واحدة باستخدام وسيطه كفاصل بينها.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 567: سطر 567:
  
 
=== last ===
 
=== last ===
يعيد هذا المرشّح العنصر الأخير من المصفوفة.
+
يعيد هذا المرشّح العنصر الأخير من مصفوفة.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 591: سطر 591:
 
<code>tiger</code>
 
<code>tiger</code>
 
|}
 
|}
يمكنك استخدام المرشّح <code>last</code> مع الصيغة النقطية عندما تحتاج إلى استخدام المرشّح ضمن وسم:<syntaxhighlight lang="liquid">
+
يمكنك استخدام المرشّح <code>last</code> مع الصيغة النقطية عندما تحتاج إلى استخدام هذا المرشّح ضمن وسم كما يلي:<syntaxhighlight lang="liquid">
 
{% if my_array.last == "tiger" %}
 
{% if my_array.last == "tiger" %}
 
   There goes a tiger!
 
   There goes a tiger!
سطر 598: سطر 598:
  
 
=== lstrip ===
 
=== lstrip ===
يزيل هذا المرشّح كل المسافات (مسافات tab والمسافات الفارغة والأسطر الجديدة) من جانب السلسلة النصية، ولا يؤثر على المسافات بين الكلمات.
+
يزيل هذا المرشّح كل المسافات (مسافات tab والمسافات الفارغة والأسطر الجديدة) من جانب السلسلة النصية الأيسر، ولا يؤثر على المسافات بين الكلمات.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 612: سطر 612:
  
 
=== map ===
 
=== map ===
يُنشئ هذا المرشّح مصفوفة من القيم عن طريق استخراج قيم خاصية مسمَّاة من كائن آخر.
+
يُنشئ هذا المرشّح مصفوفة من القيم عن طريق استخراج قيم خاصيةٍ مسمَّاة من كائن آخر.
  
افترض في المثال التالي أن الكائن <code>site.pages</code> يحتوي على جميع البيانات الوصفية metadata لموقع ويب. يؤدي استخدام <code>assign</code> مع المرشّح <code>map</code> إلى إنشاء متغير يحتوي فقط على قيم خصائص الفئة <code>category</code> لكل شيء في الكائن <code>site.pages</code>.
+
افترض في المثال التالي أن الكائن <code>site.pages</code> يحتوي على جميع البيانات الوصفية metadata لموقع ويب. يؤدي استخدام الوسم <code>assign</code> مع المرشّح <code>map</code> إلى إنشاء متغير يحتوي فقط على قيم خصائص الفئة <code>category</code> لكل شيء في الكائن <code>site.pages</code>.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 654: سطر 654:
  
 
=== modulo ===
 
=== modulo ===
يعيد هذا المرشّح الباقي عملية قسمة.
+
يعيد هذا المرشّح الباقي من عملية قسمة.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 672: سطر 672:
  
 
=== newline_to_br ===
 
=== newline_to_br ===
يدخل هذا المرشّح فاصل أسطر (<code><nowiki><br /‎></nowiki></code>) الخاص بلغة HTML أمام كل سطر جديد (<code>‎\n</code>) في سلسلة نصية.
+
يدخل هذا المرشّح الفاصل السطري (<code><nowiki><br /‎></nowiki></code>) الخاص بلغة HTML أمام كل سطر جديد (<code>‎\n</code>) في سلسلة نصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 712: سطر 712:
  
 
=== prepend ===
 
=== prepend ===
يضيف هذا المرشّح السلسلة النصية المحدَّدة إلى بداية سلسلة نصية أخرى.
+
يضيف هذا المرشّح سلسلة نصية محدَّدة إلى بداية سلسلة نصية أخرى.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 754: سطر 754:
  
 
=== remove_first ===
 
=== remove_first ===
يزيل ظهور السلسلة النصية الفرعية المحدَّدة الأول فقط من سلسلة نصية.
+
يزيل الظهور الأول فقط لسلسلة نصية فرعية محدَّدة من سلسلة نصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 768: سطر 768:
  
 
=== replace ===
 
=== replace ===
يستبدل هذا المرشّح كلَّ ظهور للوسيط الأول في سلسلة نصية بالوسيط الثاني.
+
يستبدل هذا المرشّح كلَّ ظهور لوسيطه الأول في سلسلة نصية بوسيطه الثاني.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 782: سطر 782:
  
 
=== replace_first ===
 
=== replace_first ===
يستبدل الظهور الأول فقط للوسيط الأولى في سلسلة نصية بالوسيط الثاني.
+
يستبدل الظهور الأول فقط لوسيطه الأول في سلسلة نصية بوسيطه الثاني.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 796: سطر 796:
  
 
=== reverse ===
 
=== reverse ===
يعكس هذا المرشّح ترتيب العناصر في المصفوفة، ولكن لا يمكنه عكس سلسلة نصية.
+
يعكس هذا المرشّح ترتيب العناصر في مصفوفة، ولكن لا يمكنه عكس سلسلة نصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 811: سطر 811:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|}
 
|}
لا يمكن استخدام المرشّح <code>reverse</code> مباشرةً مع سلسلة نصية، ولكن يمكنك تقسيم split السلسلة إلى مصفوفة، ثم عكس المصفوفة، وإعادة ضمها عن طريق ربط المرشّحات معًا.
+
لا يمكن استخدام المرشّح <code>reverse</code> مع سلسلة نصية مباشرةً، ولكن يمكنك تقسيم split السلسلة إلى مصفوفة، ثم عكس المصفوفة، وإعادة ضمها عن طريق ربط المرشّحات معًا كما يلي:
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 825: سطر 825:
  
 
=== round ===
 
=== round ===
يُستخدَم لتقريب عدد إلى أقرب عدد صحيح أو إلى العدد المُمرَّر كوسيط الذي يمثل المنازل العشرية.
+
يُستخدَم لتقريب عدد إلى أقرب عدد صحيح أو إلى العدد المُمرَّر كوسيط الذي يمثل عدد المنازل العشرية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 882: سطر 882:
 
<code>4</code>
 
<code>4</code>
 
|}
 
|}
يمكنك استخدام المرشّح <code>size</code> مع الصيغة النقطية عندما تحتاج إلى استخدام المرشَح ضمن وسم:<syntaxhighlight lang="liquid">
+
يمكنك استخدام المرشّح <code>size</code> مع الصيغة النقطية عندما تحتاج إلى استخدام هذا المرشَح ضمن وسم كما يلي:<syntaxhighlight lang="liquid">
 
{% if site.pages.size > 10 %}
 
{% if site.pages.size > 10 %}
 
   This is a big website!
 
   This is a big website!
سطر 889: سطر 889:
  
 
=== slice ===
 
=== slice ===
يعيد هذا المرشّح سلسلة نصية فرعية مؤلفة من محرف واحد أو تعيد سلسلة من عناصر المصفوفة التي تبدأ بالدليل المحدَّد باستخدام الوسيط الأول. يحدّد الوسيط الثاني الاختياري طول السلسلة الفرعية أو عدد عناصر المصفوفة المُعادة.
+
يعيد هذا المرشّح سلسلة نصية فرعية مؤلفة من محرف واحد أو يعيد سلسلة من عناصر المصفوفة التي تبدأ بالدليل المحدَّد باستخدام الوسيط الأول. يحدّد الوسيط الثاني الاختياري طول السلسلة الفرعية أو عدد عناصر المصفوفة المُعادة.
  
تٌرقَّم أدلة السلسلة النصية أو المصفوفة بدءًا من 0.
+
تٌرقَّم أدلة السلسلة النصية أو المصفوفة بدءًا من الصفر 0.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 942: سطر 942:
  
 
=== sort ===
 
=== sort ===
يرتب عناصر المصفوفة بترتيب حسّاس لحالة الأحرف.
+
يرتب هذا المرشّح عناصر المصفوفة بترتيب حسّاس لحالة الأحرف.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 982: سطر 982:
  
 
=== split ===
 
=== split ===
يقسم هذا المرشّح سلسلة نصية إلى مصفوفة باستخدام الوسيط كفاصل بينها. يُستخدَم المرشّح <code>split</code> لتحويل العناصر المفصول بينها بفواصل من سلسلة نصية إلى مصفوفة.
+
يقسم هذا المرشّح سلسلة نصية إلى مصفوفة باستخدام وسيطه كفاصل بين العناصر، حيث يُستخدَم المرشّح <code>split</code> لتحويل العناصر المفصول بينها بفواصل من سلسلة نصية إلى مصفوفة.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬009: سطر 1٬009:
  
 
=== strip ===
 
=== strip ===
يزيل هذا المرشّح كل المسافات (مسافاتtabs والمسافات الفارغة والأسطر الجديدة) من جانبي السلسلة النصية الأيسر والأيمن، ولا يؤثر على المسافات بين الكلمات.
+
يزيل هذا المرشّح كل المسافات (مسافات tabs والمسافات الفارغة والأسطر الجديدة) من جانبي السلسلة النصية الأيسر والأيمن، ولا يؤثر على المسافات بين الكلمات.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬023: سطر 1٬023:
  
 
=== strip_html ===
 
=== strip_html ===
يزيل وسوم لغة HTML من السلسلة النصية.
+
يزيل وسوم لغة HTML من سلسلة نصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬037: سطر 1٬037:
  
 
=== strip_newlines ===
 
=== strip_newlines ===
يزيل محارف الأسطر الجديدة (فواصل الأسطر) من السلسلة النصية.
+
يزيل محارف الأسطر الجديدة (فواصل الأسطر) من سلسلة نصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬074: سطر 1٬074:
  
 
=== truncate ===
 
=== truncate ===
يقصّر من طول السلسلة النصية وصولًا إلى عدد المحارف الذي مُرِّر كوسيط. إذا كان عدد المحارف المحدَّد أقل من طول السلسلة، فستُلحَق علامة القطع ellipsis (...) بالسلسلة النصية وتُضمَّن في عدد المحارف.
+
يقصّر من طول السلسلة النصية وصولًا إلى عدد المحارف الذي مُرِّر كوسيط. إذا كان عدد المحارف المحدَّد أقل من طول السلسلة، فستُلحَق علامة القطع ellipsis (...) بالسلسلة النصية وتُضمَّن في عدد المحارف.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬088: سطر 1٬088:
  
 
==== علامات القطع المخصصة ====
 
==== علامات القطع المخصصة ====
يأخذ المرشّح <code>truncate</code> وسيطًا ثانيًا اختياريًا يحدّد تسلسل المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد تسلسل مختلف.
+
يأخذ المرشّح <code>truncate</code> وسيطًا ثانيًا اختياريًا يحدّد سلسلة المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد سلسلة مختلفة.
  
يُحسَب طول الوسيط الثاني مقابل عدد المحارف المحدَّد بواسطة الوسيط الأول. إذا أردت اقتطاع سلسلة نصية إلى 10 محارف بالضبط مع استخدام علامة القطع المكونة من 3 محارف مثلًا، فاستخدم القيمة 13 لوسيط المرشّح <code>truncate</code> الأول، لأن علامة القطع تُعَد 3 محارف.
+
يُحسَب طول الوسيط الثاني مع عدد المحارف المحدَّد بواسطة الوسيط الأول، فإذا أردت اقتطاع سلسلة نصية إلى 10 محارف بالضبط مع استخدام علامة القطع المكونة من 3 محارف مثلًا، فاستخدم القيمة 13 لوسيط المرشّح <code>truncate</code> الأول، لأن علامة القطع تُعَد 3 محارف.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬103: سطر 1٬103:
 
|}
 
|}
  
==== استخدام المرشّح truncate دون علامات القطع ====
+
==== استخدام المرشّح truncate بدون علامات القطع ====
يمكنك اقتطاع السلسلة النصية إلى عدد المحارف المحدَّدة الدقيق بواسطة الوسيط الأول، ويمكنك تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.
+
يمكنك اقتطاع السلسلة النصية إلى عدد المحارف المحدَّد بواسطة الوسيط الأول، مع تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬118: سطر 1٬118:
  
 
=== truncatewords ===
 
=== truncatewords ===
يقصّر من طول السلسلة النصية وصولًا إلى عدد الكلمات الممرَّرة كوسيط. إذا كان عدد الكلمات المحدَّد أقل من عدد الكلمات في السلسلة النصية، فستُلحَق علامة القطع (...) بالسلسلة النصية.
+
يقصّر هذا المرشّح من طول السلسلة النصية وصولًا إلى عدد الكلمات الممرَّرة كوسيط. إذا كان عدد الكلمات المحدَّد أقل من عدد الكلمات في السلسلة النصية، فستُلحَق علامة القطع (...) بالسلسلة النصية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬132: سطر 1٬132:
  
 
==== علامات القطع المخصصة ====
 
==== علامات القطع المخصصة ====
يأخذ المرشّح <code>truncatewords</code> وسيطًا ثانيًا اختياريًا يحدّد تسلسل المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد تسلسل مختلف.
+
يأخذ المرشّح <code>truncatewords</code> وسيطًا ثانيًا اختياريًا يحدّد سلسلة المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد سلسلة مختلفة.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬145: سطر 1٬145:
 
|}
 
|}
  
==== استخدام المرشّح truncatewords دون علامات القطع ====
+
==== استخدام المرشّح truncatewords بدون علامات القطع ====
 
يمكنك تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.
 
يمكنك تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.
 
{| class="wikitable"
 
{| class="wikitable"
سطر 1٬176: سطر 1٬176:
  
 
=== upcase ===
 
=== upcase ===
يجعل هذا المرشّح كل حرف في السلسلة النصية حرفًا كبيرًا، وليس له أي تأثير على السلاسل النصية التي تتكوّن كلها من أحرف كبيرة.
+
يجعل هذا المرشّح كل حرف في السلسلة النصية حرفًا كبيرًا، وليس له أي تأثير على السلاسل النصية التي تتكوّن كلها من أحرف كبيرة مسبقًا.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬201: سطر 1٬201:
  
 
=== url_decode (خاص بالإصدار 4.0.0) ===
 
=== url_decode (خاص بالإصدار 4.0.0) ===
يفك هذا المرشّح تشفير سلسلة نصية مُشفَّرة كعنوان URL أو باستخدام المرشّح <code>url_encode</code>.
+
يفك هذا المرشّح تشفير سلسلة نصية مُشفَّرة كعنوان URL أو مُشفَّرة باستخدام المرشّح <code>url_encode</code>.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬215: سطر 1٬215:
  
 
=== url_encode ===
 
=== url_encode ===
يحوّل محارف عنوان URL غير آمنة في سلسلة نصية إلى محارف مُشفَّرة كنسبة مئوية.
+
يحوّل محارف عنوان URL غير آمن في سلسلة نصية إلى محارف مُشفَّرة كنسبة مئوية.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل
سطر 1٬241: سطر 1٬241:
  
 
=== where (خاص بالإصدار 4.0.2) ===
 
=== where (خاص بالإصدار 4.0.2) ===
ينشئ هذا المرشّح مصفوفة تتضمن فقط الكائنات ذات قيمة خاصية معينة، أو أي قيمة [[truthy]] افتراضيًا.
+
ينشئ هذا المرشّح مصفوفة تتضمن فقط الكائنات التي تملك قيمة خاصية معينة، أو أي قيمة [[truthy]] افتراضيًا.
  
 
افترض في المثال التالي أن لديك قائمة بالمنتجات وتريد عرض منتجات مطبخك منفصلة عن بعضها البعض. يمكنك باستخدام المرشّح <code>where</code> إنشاء مصفوفة تحتوي فقط على المنتجات التي لها النوع <code>"type"</code> مطبخ <code>"kitchen"</code>.
 
افترض في المثال التالي أن لديك قائمة بالمنتجات وتريد عرض منتجات مطبخك منفصلة عن بعضها البعض. يمكنك باستخدام المرشّح <code>where</code> إنشاء مصفوفة تحتوي فقط على المنتجات التي لها النوع <code>"type"</code> مطبخ <code>"kitchen"</code>.
سطر 1٬302: سطر 1٬302:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|}
 
|}
يمكن أيضًا استخدام المرشّح <code>where</code> للعثور على كائن واحد في مصفوفة عند دمجه مع المرشّح <code>first</code>. لنفترض مثلًا أنك تريد عرض القميص shirt في مجموعة الخريف الجديدة.
+
يمكن أيضًا استخدام المرشّح <code>where</code> للعثور على كائن في مصفوفة عند دمجه مع المرشّح <code>first</code>. لنفترض مثلًا أنك تريد عرض القميص shirt في مجموعتك الجديدة لفصل الخريف.
 
{| class="wikitable"
 
{| class="wikitable"
 
!الدخل
 
!الدخل

مراجعة 01:42، 5 أغسطس 2021

المرشّحات Filters

abs

يعيد هذا المرشّح قيمة العدد المطلقة.

الدخل الخرج
{{ -17 | abs }}
{{ 4 | abs }}
17
4

يعمل المرشّح abs أيضًا مع سلسلة نصية تحتوي على عدد فقط.

الدخل الخرج
{{ "-19.86" | abs }}
19.86

append

يضيف هذا المرشّح السلسلة النصية المحدَّدة إلى نهاية سلسلة نصية أخرى.

الدخل الخرج
{{ "/my/fancy/url" | append: ".html" }}
/my/fancy/url.html

يمكن للمرشّح append أيضًا قبول متغير كوسيطٍ له.

الدخل الخرج
{% assign filename = "/index.html" %}
{{ "website.com" | append: filename }}
website.com/index.html

at_least (خاص بالإصدار 4.0.1)

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

الدخل الخرج
{{ 4 | at_least: 5 }}
{{ 4 | at_least: 3 }}
5

4

at_most (خاص بالإصدار 4.0.1)

يحدّد قيمة عددٍ ما بالقيمة العليا.

الدخل الخرج
{{ 4 | at_most: 5 }}
{{ 4 | at_most: 3 }}
4

3

capitalize

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

الدخل الخرج
{{ "title" | capitalize }}
Title

يُكتَب الحرف الأول فقط من السلسلة النصية كحرف كبير، لذلك لا تُكتَب الأحرف الأولى من الكلمات اللاحقة بأحرف كبيرة:

الدخل الخرج
{{ "my GREAT title" | capitalize }}
My great title

ceil

يقرّب هذا المرشّح الدخل إلى أقرب وأكبر عدد صحيح، إذ تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشّح.

الدخل الخرج
{{ 1.2 | ceil }}
{{ 2.0 | ceil }}
{{ 183.357 | ceil }}
2

2

184

سنستخدم في المثال التالي قيمة الدخل على أنها سلسلة نصية:

الدخل الخرج
{{ "3.5" | ceil }}
4

compact (خاص بالإصدار 4.0.0)

يزيل هذا المرشّح أي قيم nil من المصفوفة.

افترض في المثال التالي أن site.pages عبارة عن مجموعة من صفحات محتوى موقع ويب، وبعض هذه الصفحات لها سِمة attribute تسمى category تحدّد فئة محتوى الصفحة. إذا ربطنا map هذه الفئات مع مصفوفة، فقد تكون بعض قيم عناصر المصفوفة nil إن لم تتضمن صفحةٌ ما السمة category.

الدخل الخرج
{% assign site_categories = site.pages | map: "category" %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
- business
- celebrities
-
- lifestyle
- sports
-
- technology

لكن يمكننا إزالة جميع قيم nil في المصفوفة باستخدام المرشّح compact عند إنشاء المصفوفة site_categories.

الدخل الخرج
{% assign site_categories = site.pages | map: "category" | compact %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
- business
- celebrities
- lifestyle
- sports
- technology

concat (خاص بالإصدار 4.0.0)

يربط هذا المرشّح (أو يضم معًا) مصفوفات متعددة، إذ تحتوي المصفوفة الناتجة على جميع العناصر من مصفوفات الدخل.

الدخل الخرج
{% assign fruits = "apples, oranges, peaches" | split: ", " %}
{% assign vegetables = "carrots, turnips, potatoes" | split: ", " %}

{% assign everything = fruits | concat: vegetables %}

{% for item in everything %}
- {{ item }}
{% endfor %}
- apples
- oranges
- peaches
- carrots
- turnips
- potatoes

يمكنك تجميع مرشّحات concat متعددة معًا لضم أكثر من مصفوفتين.

الدخل الخرج
{% assign furniture = "chairs, tables, shelves" | split: ", " %}

{% assign everything = fruits | concat: vegetables | concat: furniture %}

{% for item in everything %}
- {{ item }}
{% endfor %}
- apples
- oranges
- peaches
- carrots
- turnips
- potatoes
- chairs
- tables
- shelves

date

يحوّل هذا المرشّح العلامة الزمنية timestamp إلى تنسيق تاريخ date آخر، فتنسيق هذه الصيغة هو strftime نفسه، بينما يستخدم الدخل تنسيق Time.parse الخاص بلغة روبي Ruby نفسه.

الدخل الخرج
{{ article.published_at | date: "%a, %b %d, %y" }}
Fri, Jul 17, 15
الدخل الخرج
{{ article.published_at | date: "%Y" }}
2015

يعمل المرشّح date مع السلاسل النصية إذا احتوت على تواريخ جيدة التنسيق.

الدخل الخرج
{{ "March 14, 2016" | date: "%b %d, %y" }}
Mar 14, 16

يمكنك الحصول على الوقت الحالي من خلال تمرير الكلمة الخاصة "now" (أو "today") إلى المرشّح date.

الدخل الخرج
This page was last updated at {{ "now" | date: "%Y-%m-%d %H:%M" }}.
This page was last updated at 2021-04-28 17:52.

لاحظ أن القيمة ستكون هي الوقت الحالي لآخر إنشاء للصفحة من القالب، وليس وقت تقديم الصفحة إلى المستخدم في حالة التخزين المؤقت أو إنشاء موقع ساكن.

default

يضبط قيمة افتراضية للمتغير الذي لا يملك قيمة مُسنَدة. سيظهِر المرشّح default قيمته إذا كان الدخل قيمة nil أو false أو قيمة فارغة.

لم تُحدَّد قيمة المتغير product_price، لذلك اُستخدِمت القيمة الافتراضية في المثال التالي:

الدخل الخرج
{{ product_price | default: 2.99 }}
2.99

حُدِّدت قيمة المتغير product_price، لذلك لم تُستخدَم القيمة الافتراضية في المثال التالي:

الدخل الخرج
{% assign product_price = 4.99 %}
{{ product_price | default: 2.99 }}

4.99

قيمة المتغير product_price فارغة، لذلك اُستخدِمت القيمة الافتراضية في المثال التالي:

الدخل الخرج
{% assign product_price = "" %}
{{ product_price | default: 2.99 }}

2.99

السماح بالقيمة false (خاص بالإصدار 5.0.0)

يمكن السماح للمتغيرات بأن تعيد القيمة false بدلًا من القيمة الافتراضية من خلال استخدام العامل allow_false.

الدخل الخرج
{% assign display_price = false %}
{{ display_price | default: true, allow_false: true }}

false

divided_by

يقسم هذا المرشّح عددًا على عددٍ آخر.

تُقرَّب النتيجة إلى أقرب وأصغر عدد صحيح (كالمرشّح floor) إذا كان المقسوم عليه عددًا صحيحًا.

الدخل الخرج
{{ 16 | divided_by: 4 }}
{{ 5 | divided_by: 3 }}
4
1

التحكم بعملية التقريب

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

المقسوم عليه في المثال التالي هو عدد صحيح:

الدخل الخرج
{{ 20 | divided_by: 7 }}
2

المقسوم عليه في المثال التالي هو عدد عشري:

الدخل الخرج
{{ 20 | divided_by: 7.0 }}
2.857142857142857

تغيير أنواع المتغيرات

قد ترغب في استخدام متغير كمقسوم عليه، حيث لا يمكنك في هذه الحالة إضافة ‎.0 لتحويله إلى عدد عشري ببساطة، ولكن يمكنك إسناد assign نسخة من المتغير محوَّلة إلى عدد عشري باستخدام المرشّح times.

سنقسم في المثال التالي على متغير يحتوي على عدد صحيح، لذلك سنحصل على عدد صحيح:

الدخل الخرج
{% assign my_integer = 7 %}
{{ 20 | divided_by: my_integer }}

2

نضرب المتغير بالعدد 1.0 باستخدام المرشّح times لنحصل على عدد عشري، ثم نقسم على عدد عشري في المثال التالي:

الدخل الخرج
{% assign my_integer = 7 %}
{% assign my_float = my_integer | times: 1.0 %}
{{ 20 | divided_by: my_float }}

2.857142857142857

downcase

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

الدخل الخرج
{{ "Parker Moore" | downcase }}
parker moore
الدخل الخرج
{{ "apple" | downcase }}
apple

escape

يطبّق هذا المرشّح عملية الهروب على سلسلة نصية عن طريق استبدال المحارف بتسلسلات الهروب escape sequences (بحيث يمكن استخدام هذه السلسلة في عنوان URL مثلًا)، ولا يغيّر السلاسل النصية التي ليس لديها أي شيء لتطبيق عملية الهروب عليه.

الدخل الخرج
{{ "Have you read 'James & the Giant Peach'?" | escape }}
Have you read &#39;James &amp; the Giant Peach&#39;?
الدخل الخرج
{{ "Tetsuro Takara" | escape }}
Tetsuro Takara

escape_once

يطبّق عملية الهروب على سلسلة نصية بدون تغيير الكيانات المُطبَّق عليها الهروب مسبقًا، ولا يغيّر السلاسل النصية التي ليس لديها أي شيء لتطبيق عملية الهروب عليه.

الدخل الخرج
{{ "1 < 2 & 3" | escape_once }}
1 &lt; 2 &amp; 3
الدخل الخرج
{{ "1 &lt; 2 &amp; 3" | escape_once }}
1 &lt; 2 &amp; 3

first

يعيد هذا المرشّح العنصر الأول من مصفوفة.

الدخل الخرج
{{ "Ground control to Major Tom." | split: " " | first }}
Ground
الدخل الخرج
{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %}

{{ my_array.first }}

zebra

يمكنك استخدام المرشّح first مع الصيغة النقطية dot notation عندما تحتاج إلى استخدام المرشّح ضمن وسم كما يلي:

{% if my_array.first == "zebra" %}
  Here comes a zebra!
{% endif %}

floor

يقرّب هذا المرشّح الدخل إلى أقرب وأصغر عدد صحيح، حيث تحاول لغة Liquid تحويل الدخل إلى عدد قبل تطبيق المرشح.

الدخل الخرج
{{ 1.2 | floor }}
{{ 2.0 | floor }}
{{ 183.357 | floor }}
1
2
183

قيمة الدخل في المثال التالي عبارة عن سلسلة نصية:

الدخل الخرج
{{ "3.5" | floor }}
3

join

يدمج هذا المرشّح العناصر الموجودة في مصفوفة ضمن سلسلة نصية واحدة باستخدام وسيطه كفاصل بينها.

الدخل الخرج
{% assign beatles = "John, Paul, George, Ringo" | split: ", " %}

{{ beatles | join: " and " }}

John and Paul and George and Ringo

last

يعيد هذا المرشّح العنصر الأخير من مصفوفة.

الدخل الخرج
{{ "Ground control to Major Tom." | split: " " | last }}

Tom.‎

الدخل الخرج
{% assign my_array = "zebra, octopus, giraffe, tiger" | split: ", " %}

{{ my_array.last }}

tiger

يمكنك استخدام المرشّح last مع الصيغة النقطية عندما تحتاج إلى استخدام هذا المرشّح ضمن وسم كما يلي:

{% if my_array.last == "tiger" %}
  There goes a tiger!
{% endif %}

lstrip

يزيل هذا المرشّح كل المسافات (مسافات tab والمسافات الفارغة والأسطر الجديدة) من جانب السلسلة النصية الأيسر، ولا يؤثر على المسافات بين الكلمات.

الدخل الخرج
{{ "          So much room for activities          " | lstrip }}!
So much room for activities          !

map

يُنشئ هذا المرشّح مصفوفة من القيم عن طريق استخراج قيم خاصيةٍ مسمَّاة من كائن آخر.

افترض في المثال التالي أن الكائن site.pages يحتوي على جميع البيانات الوصفية metadata لموقع ويب. يؤدي استخدام الوسم assign مع المرشّح map إلى إنشاء متغير يحتوي فقط على قيم خصائص الفئة category لكل شيء في الكائن site.pages.

الدخل الخرج
{% assign all_categories = site.pages | map: "category" %}

{% for item in all_categories %}
- {{ item }}
{% endfor %}
- business
- celebrities
- lifestyle
- sports
- technology

minus

يطرح عددًا من عدد آخر.

الدخل الخرج
{{ 4 | minus: 2 }}
{{ 16 | minus: 4 }}
{{ 183.357 | minus: 12 }}
2
12
171.357

modulo

يعيد هذا المرشّح الباقي من عملية قسمة.

الدخل الخرج
{{ 3 | modulo: 2 }}
{{ 24 | modulo: 7 }}
{{ 183.357 | modulo: 12 }}
1
3
3.357

newline_to_br

يدخل هذا المرشّح الفاصل السطري (<br /‎>) الخاص بلغة HTML أمام كل سطر جديد (‎\n) في سلسلة نصية.

الدخل الخرج
{% capture string_with_newlines %}
Hello
there
{% endcapture %}

{{ string_with_newlines | newline_to_br }}
<br />
Hello<br />
there<br />

plus

يجمع هذا المرشّح عددين.

الدخل الخرج
{{ 4 | plus: 2 }}
{{ 16 | plus: 4 }}
{{ 183.357 | plus: 12 }}
6
20
195.357

prepend

يضيف هذا المرشّح سلسلة نصية محدَّدة إلى بداية سلسلة نصية أخرى.

الدخل الخرج
{{ "apples, oranges, and bananas" | prepend: "Some fruit: " }}
Some fruit: apples, oranges, and bananas

يمكن أن يقبل المرشّح prepend أيضًا متغيرًا كوسيطٍ له.

الدخل الخرج
{% assign url = "example.com" %}
{{ "/index.html" | prepend: url }}
example.com/index.html

remove

يزيل كل ظهور لسلسلة نصية فرعية محدَّدة من سلسلة نصية.

الدخل الخرج
{{ "I strained to see the train through the rain" | remove: "rain" }}
I sted to see the t through the

remove_first

يزيل الظهور الأول فقط لسلسلة نصية فرعية محدَّدة من سلسلة نصية.

الدخل الخرج
{{ "I strained to see the train through the rain" | remove_first: "rain" }}
I sted to see the train through the rain

replace

يستبدل هذا المرشّح كلَّ ظهور لوسيطه الأول في سلسلة نصية بوسيطه الثاني.

الدخل الخرج
{{ "Take my protein pills and put my helmet on" | replace: "my", "your" }}
Take your protein pills and put your helmet on

replace_first

يستبدل الظهور الأول فقط لوسيطه الأول في سلسلة نصية بوسيطه الثاني.

الدخل الخرج
{{ "Take my protein pills and put my helmet on" | replace_first: "my", "your" }}
Take your protein pills and put my helmet on

reverse

يعكس هذا المرشّح ترتيب العناصر في مصفوفة، ولكن لا يمكنه عكس سلسلة نصية.

الدخل الخرج
{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %}

{{ my_array | reverse | join: ", " }}
plums, peaches, oranges, apples

لا يمكن استخدام المرشّح reverse مع سلسلة نصية مباشرةً، ولكن يمكنك تقسيم split السلسلة إلى مصفوفة، ثم عكس المصفوفة، وإعادة ضمها عن طريق ربط المرشّحات معًا كما يلي:

الدخل الخرج
{{ "Ground control to Major Tom." | split: "" | reverse | join: "" }}
.moT rojaM ot lortnoc dnuorG

round

يُستخدَم لتقريب عدد إلى أقرب عدد صحيح أو إلى العدد المُمرَّر كوسيط الذي يمثل عدد المنازل العشرية.

الدخل الخرج
{{ 1.2 | round }}
{{ 2.7 | round }}
{{ 183.357 | round: 2 }}
1
3
183.36

rstrip

يزيل كل المسافات (مسافات tab والمسافات الفارغة والأسطر الجديدة) من جانب السلسلة الأيمن، ولا يؤثر على المسافات بين الكلمات.

الدخل الخرج
{{ "          So much room for activities          " | rstrip }}!
          So much room for activities!

size

يعيد هذا المرشّح عدد المحارف في سلسلة نصية أو عدد العناصر في مصفوفة.

الدخل الخرج
{{ "Ground control to Major Tom." | size }}
28
الدخل الخرج
{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %}

{{ my_array.size }}

4

يمكنك استخدام المرشّح size مع الصيغة النقطية عندما تحتاج إلى استخدام هذا المرشَح ضمن وسم كما يلي:

{% if site.pages.size > 10 %}
  This is a big website!
{% endif %}

slice

يعيد هذا المرشّح سلسلة نصية فرعية مؤلفة من محرف واحد أو يعيد سلسلة من عناصر المصفوفة التي تبدأ بالدليل المحدَّد باستخدام الوسيط الأول. يحدّد الوسيط الثاني الاختياري طول السلسلة الفرعية أو عدد عناصر المصفوفة المُعادة.

تٌرقَّم أدلة السلسلة النصية أو المصفوفة بدءًا من الصفر 0.

الدخل الخرج
{{ "Liquid" | slice: 0 }}
L
الدخل الخرج
{{ "Liquid" | slice: 2 }}
q
الدخل الخرج
{{ "Liquid" | slice: 2, 5 }}
quid

قيمة الدخل عبارة عن مصفوفة في المثال التالي:

الدخل الخرج
{% assign beatles = "John, Paul, George, Ringo" | split: ", " %}
{{ beatles | slice: 1, 2 }}
PaulGeorge

إذا كان الوسيط الأول عبارة عن عدد سالب، تُحسَب الأدلة من نهاية السلسلة النصية.

الدخل الخرج
{{ "Liquid" | slice: -3, 2 }}
ui

sort

يرتب هذا المرشّح عناصر المصفوفة بترتيب حسّاس لحالة الأحرف.

الدخل الخرج
{% assign my_array = "zebra, octopus, giraffe, Sally Snake" | split: ", " %}

{{ my_array | sort | join: ", " }}
Sally Snake, giraffe, octopus, zebra

يحدّد الوسيط الاختياري خاصيةً من عناصر المصفوفة لاستخدامها في عملية الترتيب.

{% assign products_by_price = collection.products | sort: "price" %}
{% for product in products_by_price %}
  <h4>{{ product.title }}</h4>
{% endfor %}

sort_natural (خاص بالإصدار 4.0.0)

يرتب العناصر في مصفوفة بترتيب غير حساس لحالة الأحرف.

الدخل الخرج
{% assign my_array = "zebra, octopus, giraffe, Sally Snake" | split: ", " %}

{{ my_array | sort_natural | join: ", " }}
giraffe, octopus, Sally Snake, zebra

يحدّد الوسيط الاختياري خاصيةً من عناصر المصفوفة لاستخدامها في عملية الترتيب.

{% assign products_by_company = collection.products | sort_natural: "company" %}
{% for product in products_by_company %}
  <h4>{{ product.title }}</h4>
{% endfor %}

split

يقسم هذا المرشّح سلسلة نصية إلى مصفوفة باستخدام وسيطه كفاصل بين العناصر، حيث يُستخدَم المرشّح split لتحويل العناصر المفصول بينها بفواصل من سلسلة نصية إلى مصفوفة.

الدخل الخرج
{% assign beatles = "John, Paul, George, Ringo" | split: ", " %}

{% for member in beatles %}
  {{ member }}
{% endfor %}
  John

  Paul

  George

  Ringo

strip

يزيل هذا المرشّح كل المسافات (مسافات tabs والمسافات الفارغة والأسطر الجديدة) من جانبي السلسلة النصية الأيسر والأيمن، ولا يؤثر على المسافات بين الكلمات.

الدخل الخرج
{{ "          So much room for activities          " | strip }}!
So much room for activities!

strip_html

يزيل وسوم لغة HTML من سلسلة نصية.

الدخل الخرج
{{ "Have <em>you</em> read <strong>Ulysses</strong>?" | strip_html }}
Have you read Ulysses?

strip_newlines

يزيل محارف الأسطر الجديدة (فواصل الأسطر) من سلسلة نصية.

الدخل الخرج
{% capture string_with_newlines %}
Hello
there
{% endcapture %}

{{ string_with_newlines | strip_newlines }}
Hellothere

times

يضرب عددًا بعدد آخر.

الدخل الخرج
{{ 3 | times: 2 }}
{{ 24 | times: 7 }}
{{ 183.357 | times: 12 }}
6
168
2200.284

truncate

يقصّر من طول السلسلة النصية وصولًا إلى عدد المحارف الذي مُرِّر كوسيط. إذا كان عدد المحارف المحدَّد أقل من طول السلسلة، فستُلحَق علامة القطع ellipsis (...) بالسلسلة النصية وتُضمَّن في عدد المحارف.

الدخل الخرج
{{ "Ground control to Major Tom." | truncate: 20 }}
Ground control to...

علامات القطع المخصصة

يأخذ المرشّح truncate وسيطًا ثانيًا اختياريًا يحدّد سلسلة المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد سلسلة مختلفة.

يُحسَب طول الوسيط الثاني مع عدد المحارف المحدَّد بواسطة الوسيط الأول، فإذا أردت اقتطاع سلسلة نصية إلى 10 محارف بالضبط مع استخدام علامة القطع المكونة من 3 محارف مثلًا، فاستخدم القيمة 13 لوسيط المرشّح truncate الأول، لأن علامة القطع تُعَد 3 محارف.

الدخل الخرج
{{ "Ground control to Major Tom." | truncate: 25, ", and so on" }}
Ground control, and so on

استخدام المرشّح truncate بدون علامات القطع

يمكنك اقتطاع السلسلة النصية إلى عدد المحارف المحدَّد بواسطة الوسيط الأول، مع تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.

الدخل الخرج
{{ "Ground control to Major Tom." | truncate: 20, "" }}
Ground control to Ma

truncatewords

يقصّر هذا المرشّح من طول السلسلة النصية وصولًا إلى عدد الكلمات الممرَّرة كوسيط. إذا كان عدد الكلمات المحدَّد أقل من عدد الكلمات في السلسلة النصية، فستُلحَق علامة القطع (...) بالسلسلة النصية.

الدخل الخرج
{{ "Ground control to Major Tom." | truncatewords: 3 }}
Ground control to...

علامات القطع المخصصة

يأخذ المرشّح truncatewords وسيطًا ثانيًا اختياريًا يحدّد سلسلة المحارف المراد إلحاقها بالسلسلة المقتطَعة. علامة القطع هي (...) افتراضيًا، ولكن يمكنك تحديد سلسلة مختلفة.

الدخل الخرج
{{ "Ground control to Major Tom." | truncatewords: 3, "--" }}
Ground control to--

استخدام المرشّح truncatewords بدون علامات القطع

يمكنك تجنّب إظهار المحارف اللاحقة من خلال تمرير سلسلة نصية فارغة كوسيط ثانٍ.

الدخل الخرج
{{ "Ground control to Major Tom." | truncatewords: 3, "" }}
Ground control to

uniq

يزيل العناصر المكرَّرة في المصفوفة.

الدخل الخرج
{% assign my_array = "ants, bugs, bees, bugs, ants" | split: ", " %}

{{ my_array | uniq | join: ", " }}
ants, bugs, bees

upcase

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

الدخل الخرج
{{ "Parker Moore" | upcase }}
PARKER MOORE
الدخل الخرج
{{ "APPLE" | upcase }}
APPLE

url_decode (خاص بالإصدار 4.0.0)

يفك هذا المرشّح تشفير سلسلة نصية مُشفَّرة كعنوان URL أو مُشفَّرة باستخدام المرشّح url_encode.

الدخل الخرج
{{ "%27Stop%21%27+said+Fred" | url_decode }}
'Stop!' said Fred

url_encode

يحوّل محارف عنوان URL غير آمن في سلسلة نصية إلى محارف مُشفَّرة كنسبة مئوية.

الدخل الخرج
{{ "john@liquid.com" | url_encode }}
john%40liquid.com

لاحظ أن المرشّح url_encode سيحول المسافة إلى إشارة + بدلًا من استخدام محرف النسبة المئوية المُشفَّر.

الدخل الخرج
{{ "Tetsuro Takara" | url_encode }}
Tetsuro+Takara

where (خاص بالإصدار 4.0.2)

ينشئ هذا المرشّح مصفوفة تتضمن فقط الكائنات التي تملك قيمة خاصية معينة، أو أي قيمة truthy افتراضيًا.

افترض في المثال التالي أن لديك قائمة بالمنتجات وتريد عرض منتجات مطبخك منفصلة عن بعضها البعض. يمكنك باستخدام المرشّح where إنشاء مصفوفة تحتوي فقط على المنتجات التي لها النوع "type" مطبخ "kitchen".

الدخل الخرج
All products:
{% for product in products %}
- {{ product.title }}
{% endfor %}

{% assign kitchen_products = products | where: "type", "kitchen" %}

Kitchen products:
{% for product in kitchen_products %}
- {{ product.title }}
{% endfor %}
All products:
- Vacuum
- Spatula
- Television
- Garlic press

Kitchen products:
- Spatula
- Garlic press

افترض أن لديك قائمة بالمنتجات وتريد فقط إظهار المنتجات المتاحة للشراء. يمكنك استخدام المرشّح where مع اسم خاصية ولكن بدون قيمة مستهدفة لتضمين جميع المنتجات ذات القيمة truthy وهي "available".

الدخل الخرج
All products:
{% for product in products %}
- {{ product.title }}
{% endfor %}

{% assign available_products = products | where: "available" %}

Available products:
{% for product in available_products %}
- {{ product.title }}
{% endfor %}
All products:
- Coffee mug
- Limited edition sneakers
- Boring sneakers

Available products:
- Coffee mug
- Boring sneakers

يمكن أيضًا استخدام المرشّح where للعثور على كائن في مصفوفة عند دمجه مع المرشّح first. لنفترض مثلًا أنك تريد عرض القميص shirt في مجموعتك الجديدة لفصل الخريف.

الدخل الخرج
{% assign new_shirt = products | where: "type", "shirt" | first %}

Featured product: {{ new_shirt.title }}
Featured product: Hawaiian print sweater vest

مصادر