Как добавить итерации в этот цикл жидкости for

Как я добавляю числа, итерирующие этот цикл for вместо {{i}}. Обратите внимание, что этот цикл не имеет определенного ограничения, поскольку он получит все заказанные элементы, независимо от их количества.

<img src="https://billiger.de/sale?shop_id=Acaraa&oid={{ order.order_number }}

{% for line_item in order.line_items %}
&aid_{{i}}={{ line_item.product_id }}&name_{{i}}={{ line_item.product.title }}&cnt_{{i}}={{ line_item.quantity }}&val_{{i}}={{ line_item.product.price | divided_by: 1.19  | times: line_item.quantity | money_without_currency}}
{% endfor %}

" width="1" height="1" border="0" alt="" />

Таким образом, цикл должен выглядеть так

&aid_1=ARTICLE-ID-1&name_1=ARTICLE-NAME-1&cnt_1=ARTICLE-COUNT-1&val_1=ARTICLE-VALUE-1
&aid_2=ARTICLE-ID-2&name_2=ARTICLE-NAME-2&cnt_2=ARTICLE-COUNT-2&val_2=ARTICLE-VALUE-2
&aid_3=ARTICLE-ID-3&name_3=ARTICLE-NAME-3&cnt_3=ARTICLE-COUNT-3&val_3=ARTICLE-VALUE-3

PS: приведенный выше код будет использоваться в файле шаблона shopify.

Спасибо


person arabtornado    schedule 18.12.2018    source источник
comment
Я предполагаю, что это PHP-порт библиотеки шаблонов Shopify Liquid для Ruby? Если да, то если порт завершен, я предполагаю, что он должен иметь forloop.index (или его аналог с нулевым индексом index0).   -  person Darragh Enright    schedule 18.12.2018
comment
Я не буду публиковать ответ, потому что я делаю предположение, что вы используете портированную библиотеку, но я не знаю, какая из них как пара подошла мне в Google. Можно ссылку на библиотеку?   -  person Darragh Enright    schedule 18.12.2018
comment
@DarraghEnright Мне очень жаль, что я не упомянул в своем вопросе, что мой вопрос связан с жидким файлом шаблона Shopify   -  person arabtornado    schedule 18.12.2018
comment
Нет проблем, но вы используете порт PHP, верно? Это оно?   -  person Darragh Enright    schedule 18.12.2018


Ответы (1)


Объект forloop имеет ряд вспомогательных методов, в том числе для подсчета текущей итерации цикла:

  • forloop.index, который считает итерацию цикла, начиная с 1
  • forloop.index0, который считает итерацию цикла, начиная с 0

В вашем примере вы должны изменить свой код, чтобы использовать соответствующий метод вместо {{i}}; то есть:

<img src="https://billiger.de/sale?shop_id=Acaraa&oid={{ order.order_number }}

{% for line_item in order.line_items %}
&aid_{{forloop.index}}={{ line_item.product_id }}&name_{{forloop.index}}={{ line_item.product.title }}&cnt_{{forloop.index}}={{ line_item.quantity }}&val_{{forloop.index}}={{ line_item.product.price | divided_by: 1.19  | times: line_item.quantity | money_without_currency}}
{% endfor %}

" width="1" height="1" border="0" alt="" />

Я предполагаю, что вы хотите начать подсчет итераций с 1 здесь, но просто используйте forloop.index0, если вы хотите начать с 0.

Вот документация для forloop.index для Shopify официальная библиотека Liquid (на Ruby).

Поскольку вы пометили свой вопрос как PHP, может показаться, что вы используете php-liquid порт библиотеки — он появляется в списке Shopify Ликвидные порты.

У этого порта нет подробной документации, но если вы посмотрите на модульные тесты вы увидите, что эти помощники forloop реализованы.

Надеюсь это поможет :)

person Darragh Enright    schedule 18.12.2018
comment
Ой! Исправлена ​​опечатка в коде - я написал foreach.index, когда хотел написать forloop.index. Исправлено сейчас :) - person Darragh Enright; 18.12.2018
comment
Большое спасибо за ответ, он отлично сработал для меня :) - person arabtornado; 18.12.2018
comment
С удовольствием, рад, что помогло :) - person Darragh Enright; 18.12.2018