ФорумПрограммированиеPHP для идиотовРасширения PHP → Smarty. Обход цикла и определение каждой 4-ой итерации

Smarty. Обход цикла и определение каждой 4-ой итерации

  • adw0rd

    Сообщения: 22933 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:20

    Подскажите, как мне определять каждую 4-ую итерацию в смарти, чтобы вставлять разделитель?

    В Django это выглядит так:

    <li {% if forloop.counter0|divisibleby:"4" %} style="clear:both" {% endif %}>
    <a href="/book/{{ book.id }}/"><img src="/{{ book.preview }}" />
    <h2>{{ book.title }}</h2></a>
    </li>
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:24, спустя 3 минуты 41 секунду

    http://smarty.net/manual/ru/language.function.foreach.php



    Циклы {foreach} также имеют собственные переменные, которые содержат свойства {foreach}. Они обозначаются так: {$smarty.foreach.foreachname.varname} {$smarty.foreach.foreachname.varname}, где foreachname - это название цикла (значение атрибута name).

    iteration

    iteration используется для отображения текущего номера итерации цикла. Итерации всегда начинаются с 1 и увеличиваются на одну при каждом прохождении цикла.
    first

    first устанавливается в true, если текущая итерация первая.
    last

    last устанавливается в true, если текущая итерация последняя.
    show

    Атрибут show может принимать логические значения (истина или ложь). Если ложь, то цикл foreach не будет отображаться. Если присутствует тэг foreachelse, то он будет отображен.
    Спустя 15 сек.
    не за что)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22933 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:27, спустя 3 минуты 20 секунд

    phpdude, это я уже читал, но это не ответ на вопрос. Как тут определить каждую 4-ую итерацию?
    {foreach from=$products item=product}
    title: {$product.title}<br />
    generic: {$product.generic}<br />
    strength: {$product.strength}<br />
    strength_comment: {$product.strength_comment}<br />
    price: {$product.price}<br />
    <br />
    {/foreach}
    Спустя 79 сек.
    Как сюда вставить конструкцию

    {% if forloop.counter0|divisibleby:"4" %}ЭТО 4-АЯ ИТЕРАЦИЯ {% endif %}
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22933 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:32, спустя 5 минут 28 секунд

    Нашел, что-то примерно такое:

    {if $smarty.section.i.index is div by 4}
    4-ая
    {/if}
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22933 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:41, спустя 8 минут 17 секунд

    Еще так можно:
    {if $smarty.foreach.products.index % 4 == 0}
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22933 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 5:46, спустя 5 минут 25 секунд

    Но вообще, лучше использовать iteration, а не index, ибо index как правило начинается с нуля.
    Вот готовый пример сценария:


    {foreach from=$products item=product name=products}

    title: {$product.title}<br />
    generic: {$product.generic}<br />
    strength: {$product.strength}<br />
    strength_comment: {$product.strength_comment}<br />
    price: {$product.price}<br />

    {if $smarty.foreach.products.iteration % 4 == 0}
    — this {$smarty.foreach.products.iteration} iteration —<br>
    {/if}

    {/foreach}
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 ноября 2009 г. 6:05, спустя 18 минут 39 секунд

    {if $smarty.foreach.products.iteration % 4 == 0}

    прости, я просто дума что a % b ты сам сообразишь ))))))))))))))))))

    зы: без обид чмоке)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!