Получение последнего ресурса в шаблоне - через idx или как-то иначе.

Всем добрый день

Подскажите пожалуйста, я могу каким то образом получить последний элемент из idx или id и его проверить?

Объясню ситуацию.

У меня сниппет, который выводит ресурсы сначала из одной папки, потом из второй.

Мне в шаблоне вывода нужно разобрать элементы. Если idx == 1 я проверяю и с этим проблем не возникает.

Но вот когда мне нужно добавить условия, вот такие:

— если есть второй idx и он является последним в этой папке, то сделать это.
— если есть второй idx или иначе ресурс в этой папке, но он не последний — добавить это
— если есть последний ресурс и он не второй — закрыть это

В общем в коде ситуация такая
<div> Первый элемент и он без проблем  </div> //тут есть атрибут вызова
<div> // тут есть то, что этот вызов принимает и скрывает или открывает обертку
    <div> Элемент 2 </div>
    <div> Элемент 3 </div>
    <div> Элемент 4 </div>
</div>
Вот проблема как раз с этой оберткой. Потому что закрывающий и открывающий тег div обертки должен работать только от условий. Если элементов больше чем один и если их больше чем два.


Мне говорили, что есть какой то параметр last, но я ничего не нашел в сети на эту тему.

Вообще может есть другой способ, проще. Подскажите пожалуйста)) Буду благодарен :)
Разработчик
21 декабря 2022, 13:57
modx.pro
589
0

Комментарии: 2

Алексей Смирнов
21 декабря 2022, 18:45
0
Вы пишите свой сниппет, верно?
И наверняка при выводе одной папки вы знаете кол-во в этой самой папке...?
Просто посчитайте количество и проверьте по условию.
    Разработчик
    22 декабря 2022, 01:28
    0
    Не совсем, точнее это было нужно немного для другого ))

    У меня на странице выводятся все продукты компании. Но эти продукты группируются по папкам. Получается на одной странице есть результаты из каждой папки, при том у второго и последнего блока должны быть div обертки. Проблему решил следующим образом

    <div class="py-8 bg-light">
                    <div class="container">
                        <div class="group-last-child">
                            [[!pdoResources?
                               &depth=`1`
                               &where=`{"isfolder":"1"}`
                               &tvPrefix=``
                               &tpl=`Tpl-lvl-1-catalog-All-Deposits`
                               &sortby=`{"menuindex":"ASC"}`
                               &includeTVs=`valuta, time-if-deposit`
                            ]]       
                        </div>
                    </div>
                </div>

    Это сниппет — Tpl-lvl-1-catalog-All-Deposits

    [[!mySnippetFilter?
       &parents=`[[+id]]`
       &depth=`5`
       &tplFirst=``
       &resources=``
       &tvPrefix=``
       &tpl=`Tpl-lvl-2-Bank-All-Deposits`
       &sortby=`{"menuindex":"ASC"}`
       &includeTVs=`valuta, time-if-deposit, from-sum-deposit, bet-for-deposit`
       &setTotal=`1`
       &toPlaceholder=`myOut`
    ]]  
    [[+myOut]]

    Данный снипет является оберткой над pdoResources, нужен для фильтрации результата

    Сниппет представляет собой

    $where = Array();
    
    if(count($_POST['tv'])) {
        $where = array_merge($where, $_POST['tv'] );
        if (count($where['from-sum-deposit:<='])) {
            unset($where['from-sum-deposit:<=']);
        };  
        if (!empty($where['srok']) and $where['srok'] == 'all' ) {
            unset($where['srok']);
        }
    }
    
    $scriptProperties['where'] = json_encode($where);
    $html = $modx->runSnippet('pdoResources', $scriptProperties);
    echo $html;

    А вывожу я все это при помощи Fenom на странице

    {set $total = $_modx->getPlaceholder('total')}
    {if $idx == 1}
    Тут код чанка для первого элемента
    {else}
    {$idx == 2? 'код открытия оболочки для второго и поледующих элементов, эта оболочка появляется и скрывается по кнопке' : ' '}
    код для элементов внутренних, начиная от второго и дальше
    {$idx == $total? 'проверка на последний элемент, получается если total равен idx тогда он последний и я закрываю два дива':''}
    {/if}

    Конечно тут накручено, но кое как с помощью получилось мне получить последний элемент в выдаче pdoResources))) Может и косячно, но пока работает)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2