Как в Fenom сделать выборку ресурсов без сниппета?

Друзья! Подскажите пожалуйста, что делаю не так.
Хочу сделать выборку последних добавленных ресурсов — товаров.

Есть дерево ресурсов — товаров minishop2
-Главная (1)
-Каталог (3)
---Категория товаров (4)
-------Товар()


---Категория товаров (5)
-------Товар()



На главной вызываю так, снипет все же использую

{set $newproducts = $_modx->runSnippet('!msProducts', [
'parents' => 3,
'includeThumbs' => 'small,mobilesmall',
'showHidden' => 0,
'showUnpublished' => 0,
'limit' => 4,
'where' => [
    'class_key:=' => 'msProduct',
]
])}
{foreach $newproducts as $item}
{$item['menutitle']}
{/foreach}

Еще пробовал так, без снипета

{var $newproduct = $_modx->getResources(
    [
    'parents' => 3,
    'published' => 1, 
    'deleted' => 0, 
    'showHidden' => 0,
    'showUnpublished' => 0,
    'sortby' => 'menuindex', 
    'select' => 'id,menutitle'
    ])
 }
 
{foreach $newproduct as $item}
   {$item.menutitle}
{/foreach}

И ничего не выбирает в обоих случаях, Fenom включен по полной и везде работает, но вот тут конструкция не получается, что не так я делаю? Как написать правильно?
Ключевое, не хочу использовать чанки.
Роман
28 января 2020, 12:48
modx.pro
946
0

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

Станислав
28 января 2020, 13:04
0
Если последние добавленные, то нужно наверно какое то время определить, когда товар считать новым и сравнивать с текущей датой
    Роман
    28 января 2020, 13:13
    0
    Да по дате публикации просто. Я не указал этот параметр в вызове, но суть не в нем, просто совсем не распечатывает ничего ни один ни другой вызов.
      Станислав
      28 января 2020, 13:26
      0
      логи включайте и смотрите какой запрос получился
        Роман
        28 января 2020, 14:12
        0
        В логах все есть, все товары и ресурсы, и если массив распечатать все там есть. Но что то не так в синтаксисе foreach
    Сергей Шлоков
    28 января 2020, 14:10
    0
    Прикольно ты в условие where засовываешь параметры сниппета и ждешь, что что-то получится ))
      Роман
      28 января 2020, 14:13
      0
      Вот в том то и дело, запутался )) поэтому сюда и написал.
      Тимур
      28 января 2020, 14:33
      0
      {set $items = '!msProducts' | snippet : [
          'parents' => 3,
          'includeThumbs' => 'small,mobilesmall',
          'showHidden' => 0,
          'showUnpublished' => 0,
          'limit' => 4
          ......
      ]}
      
      {foreach $items as $item}
          {$item.pagetitle}
      {/foreach}
        Роман
        28 января 2020, 14:37
        0
        Так же как и я делал, так не работает, foreach почему то не работает, не понимаю почему. Если распечатать
        {$items | print_r}
        
        В массиве все есть как он и сам. Такое ощущение что для forech нужен другой массив, сниппет не возвращает массив в $items {set $items = '!msProducts' | snippet
          Тимур
          28 января 2020, 14:38
          0
          После работы сниппета переменная $items является строкой, а не массивом. Поэтому foreach и не работает. Сейчас напишу решение
            Роман
            28 января 2020, 14:48
            0
            Не понимаю что не так
            {set $newproduct = $_modx->runSnippet('!msProducts', [
            'parents' => 3,
            'includeThumbs' => 'small,mobilesmall',
            'showHidden' => 0,
            'showUnpublished' => 0,
            'limit' => 14,
            'tpl' => ''
            ])}
            {foreach $newproduct as $item}
            {$item['pagetitle']}+{$item.pagetitle}
            {/foreach}
            
            <pre>
            {$newproduct | print_r}
            </pre>

            Print массив распетаывает как надо

            Array
            (
                [id] => 10
                [type] => document
                [contentType] => text/html
                [pagetitle] => Товар 1
                [longtitle] => Товар 1
                .....
            )
            Array
            (
                [id] => 12
                [type] => document
                [contentType] => text/html
                [pagetitle] => Товар 2
                [longtitle] => Товар 1
                .....
            )
            Array
            (
                [id] => 13
                [type] => document
                [contentType] => text/html
                [pagetitle] => Товар 3
                [longtitle] => Товар 1
                .....
            )

            Но foreach не работает :(
              Тимур
              28 января 2020, 14:54
              0
              foreach работает с массивами. А переменная $newproduct является строкой.
              А в чем проблема использования чанков?
                Роман
                28 января 2020, 14:56
                0
                каждый вызов чанка на странице это минус к скорости как мне сказали. А как сделать массивом строку на fenom?
                  Тимур
                  28 января 2020, 15:00
                  0
                  Можешь вытащить любое значение через:
                  'tpl' => '@CODE {$pagetitle}'
                  Получишь список заголовков например
                    Роман
                    28 января 2020, 15:02
                    0
                    эх, у меня большой кусок HTML что бы так использовать :(
                      Тимур
                      28 января 2020, 15:05
                      0
                      Напиши в вк, чтобы тут не флудить
                        Роман
                        28 января 2020, 15:15
                        0
                        та нет у меня вк давно :))
                          Тимур
                          28 января 2020, 15:24
                          0
                          Почта в профиле есть, можешь туда написать
                          Роман
                          28 января 2020, 15:28
                          0
                          В общем понял в чем дело, работает с pdoResources, не работает просто с msProducts почему то, наверное остановлюсь на pdoResources, задолбался уже. Добавлю where classkey msproducts
      Роман
      28 января 2020, 15:30
      0
      В итоге foreach не работает с msProducts, но работает с pdoResources. Без чанка пока вывожу так:

      {set $products = '!pdoResources' | snippet : [
          'return' => 'json',
          ....
      ] | json_decode : true}
      {foreach $products as $product}
      ...
      {/foreach}
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        19