Используя жидкость, хотите перебрать список объектов JSON и добавить код ко всем объектам, кроме второго до последнего. - PullRequest
0 голосов
/ 23 сентября 2019

Я создаю транзакционное электронное письмо и читаю объект JSON, который содержит информацию о продукте (изображение и описание продукта), и отображаю это содержимое в электронном письме.Для каждого элемента, который я отображаю, я добавляю HTML-код (заполнение), поскольку он проходит через объект.Я хочу перебрать объект JSON, но для последнего элемента НЕ добавляйте дополнительный HTML-код.

В настоящее время я настроил цикл for, который считывает продукты и добавляет строку таблицы, которая отображает строку в конце каждого продукта, который вызывается из объекта JSON.Я не могу найти способ, чтобы эта строка не появлялась в конечном объекте.

{% for products in merge_vars.order.products %}
{% for products in merge_vars.order.products %}
<!-- TOP CARD -->
<table>

    <tr>
        <td colspan="3" bgcolor="#FFFFFF" width="100%" height="20"
            style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;">&nbsp;
        </td>
    </tr>

    <tr>
        <!-- IMAGE -->
        <td class="img-small" align="left" width="80" valign="top" style="vertical-align: top; padding: 0 20px;">
            <img alt="{{ products.name }}" src="{{ products.image }}" width="80" height="80" border="0"
                 style="width:80px; height:80px;">
        </td>
        <!-- IMAGE END -->

        <!-- PRODUCT DESCRIPTION -->
        <td align="left" width="210" style="padding: 0 20px 0 0;">
            <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left">

                <tr>
                    <td align="left" style="font-size: 13px; line-height: 20px; letter-spacing: 0.4px; font-family: Verdana, Geneva, sans-serif; color: #666666; font-weight:normal;">
                        <span style="color: #868686;">
                        {{ products.description }}
                        </span>
                    </td>
                </tr>

            </table>
        </td>

    </tr>

    <!-- LINE and Bottom Padding -->
    <tr>
        <td colspan="3" bgcolor="#FFFFFF" width="100%" height="20"
            style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;">&nbsp;
        </td>
    </tr>
    <tr>
        <td colspan="3" bgcolor="#F7F7F7" width="100%" height="2"
            style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;">&nbsp;
        </td>
    </tr>
    <!-- LINE END -->

</table>
<!-- TOP CARD END -->
<!-- ADDITIONAL PRODUCTS END -->
{% endfor %}



Поэтому, когда я прохожу каждый объект, я получаю ожидаемый нижний отступ и строку, но я не могу получить этот отступ истрока НЕ ​​появляется в последнем элементе.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете достичь этого следующим образом:

{% unless forloop.last %}
    HTML Code you do not want to iterate for the last item in the loop.
{% endunless %}
...