Получить количество элементов в плейсхолдере msProducts

Здравствуйте.
В верстке есть некий слайдер товаров. Элементы получаю через сниппет msProducts и вставляю в плейсхолдер 'favProducts' (т.к. эту штуку нужно выводить в нескольких местах) — все хорошо.
Но в этом слайдере есть ещё и буллеты (т.е. кружочки, число которых равно количеству товаров в слайдере) — заново запускать сниппет msProducts, что бы просто посчитать количество элементов, не хочется.
Может быть есть какой-нибудь способ получить количество элементов в плейсхолдере?
{'!msProducts' | snippet : [
'parents' => 3,
'limit' => 6,
'sortby' => 'menuindex',
'sortdir' => 'ASC',
'where' => ['Data.popular' => 1],
'includeThumbs' => 'medium',
'tpl' => 'msProductIndex',
'toPlaceholder' => 'favProducts'
]}
{var $favproducts = $_modx->getPlaceholder('favProducts')}
{*if}{$favproducts | lenght} <!-- так он считает количество символов, а мне нужно количество элементов -->{/if*}
Игорь
01 октября 2023, 10:57
modx.pro
370
0

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

Алексей Смирнов
01 октября 2023, 14:05
0
Если получить в коде fenom нужно, то можно схитрить и подсчитывать в чанке вашем msProductIndex на феном дописав:setPlaceholder('myovechka', $idx) — уточните в доке как вызываются модификаторы эти.
а уже ниже в вызове принимайте getPlaceholde('myovechka')
Должно сработать.
Ну а в JS проблем не должно быть определить кол-во. там 1й строкой можно.
    Игорь
    01 октября 2023, 20:10
    0
    да, я тоже сразу подумал про вариант с плейсхолдером в чанке… но, надеялся, что есть какое-то более правильное решение для fenom ) Спасибо
      Алексей Смирнов
      01 октября 2023, 21:04
      +1
      И на феноме можно, но это можно сделать если у вас минишоп 4й версии.
      если нет, то увы.
        Игорь
        01 октября 2023, 21:07
        0
        у меня сайт новый… все компоненты последних версий (буквально пару дней назад начал только делать), можно поподробнее?
        а minishop 3.0.7 — видимо не там качал (с modx.pro)… сейчас установил с modstore — страшно, но там ломаться пока особо нечему, сайт новый
          Игорь
          01 октября 2023, 21:19
          0
          установил mnishop 4.3.0 с Modstore — нормально. Как дальше? )
            Игорь
            01 октября 2023, 22:19
            0
            как там сделать?
              Алексей Смирнов
              01 октября 2023, 22:41
              0
              в новой версии можно вызвать msProduct в режиме data и на феноме посчитать кол-во в массиве. Хотя оно у вас по идее будет почти всегда равно 6. тк у вас лимит =6. Поэтому даже не знаю… есть ли смысл подсчета…
              Вывести данные можно добавив в параметры 'return' => 'data',
              При таком подходе возвращаться должен голый массив, если не ошибаюсь.
              те нужно:
              {set $mysnip = 'msProduct' | snippet : ['return' => 'data']}
              (проверьте только
              {$mysnip | print}
              И потом можно:
              {$mysnip | lenght}
              — кол-во.
                Игорь
                01 октября 2023, 23:11
                0
                ну так вопрос же и был, что не хочется ещё раз сниппет запускать, что бы просто количество элементов посчитать, когда уже есть готовый плейсхолдер со всеми данными (ну да, их limit=>6, но а вдруг меньше)
                  Алексей Смирнов
                  01 октября 2023, 23:24
                  0
                  Дык у вас один и будет.
                  Через или foreach переменную mysnip прогнать
                  или чанк распарсить через parsChunk с уже готовой разметкой. Это уже на свой вкус.
          Игорь
          02 октября 2023, 19:04
          0
          что-то у меня не получается с этим setPlaceholder — туплю наверное (… получается точно туплю — этот setPlaceholder нужно через сниппет делать в php?
          Игорь
          02 октября 2023, 19:44
          0
          … а нет, вроде все получается, это видимо я сам затупил ( Спасибо всем за помощь )
            Игорь
            02 октября 2023, 20:03
            0
            да, сделаю эти буллеты ещё через один плейсхолдер… наверное, глупый вопрос получился ( fenom — наше всё ))
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            12