Параметры Collections в pdoResources

Всем привет, возник вопрос как можно использовать параметры коллекции, задаваемые в админке при вызове сниппета pdoResorces, который собственно выводит элементы коллекции?
Интересуют следующие параметры:
1)Поле сортировки
2)Направление сортировки
3)Размер страницы (Не знаю почему так назвали — это количество элементов на странице)

Хотелось бы что бы это выглядело как нибудь так:
{'pdoResources'|snippet:[
    'parents'=>$_modx->resource.id,
    'limit'=>$collection_limit, // Сюда параметр - Размер страницы
    'sortdir'=>$collection_dir, // Сюда параметр - Направление сортировки
    'sortby'=>$collection_field, //Сюда параметр - Поле сортировки
    'tpl'=>'@FILE chunks/mktu/d_mktu_item.tpl'
]}
Семён Кудрявцев
22 сентября 2017, 11:09
modx.pro
2 168
0

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

snyadanak
22 сентября 2017, 15:05
0
Ты хочешь для каждой коллекции разные параметры limit, sortdir,sortby?

Я просто пытаюсь сориентироваться что нужно)
    Семён Кудрявцев
    22 сентября 2017, 15:07
    0
    Разумеется) Для этого в компоненте и сделаны — Виды коллекций, где каждую можно настроить по-своему.
    Например для блога, одни настройки сортировки и количества на странице, а для другого раздела другие настройки.
      snyadanak
      22 сентября 2017, 15:09
      0
      Так а если TV параметры создать для коллекций, например tv_limit, tv_sortdir, tv_sortby

      И выводить соответственно
      {'pdoResources'|snippet:[
          'parents'=>$_modx->resource.id,
          'limit'=>$_modx->resource.tv_limit, // Сюда параметр - Размер страницы
          'sortdir'=>$_modx->resource.tv_sortdir, // Сюда параметр - Направление сортировки
          'sortby'=>$_modx->resource.tv_sortby, //Сюда параметр - Поле сортировки
          'tpl'=>'@FILE chunks/mktu/d_mktu_item.tpl'
      ]}
      Не знаком с Collection, но почему бы не вариант?)
        Семён Кудрявцев
        22 сентября 2017, 15:19
        0
        Да как вариант это конечно подойдёт, но какой смысл в двух местах в админке указывать одно и тоже?
        Задача тем и сложна, что бы в одном месте в админке настроил параметры для каждой коллекции и потом их в любых местах подставляешь. А так придётся ещё и дублировать эти параметры в тв-поля…
          snyadanak
          22 сентября 2017, 15:31
          0
          Так в тв же есть значение по умолчанию)
    Павел Романов
    23 сентября 2017, 17:43
    0
    Collection хранит данные настройки в таблице modx_collection_templates.
    Соответственно, можно их оттуда вытащить. Например, Rowboat:
    [[Rowboat?
       &table=`modx_collection_templates`
       &where=`{"id":"1"}`
       &tpl=`tpl`
    ]]

    В чанке используйте поля:
    [[+sort_field]]
    [[+sort_dir]]
    [[+page_size]]
      Павел Романов
      23 сентября 2017, 18:17
      0
      Вдогонку ))
      Сниппет getColl:
      <?php
      $modx->addPackage('collections', $modx->getOption('core_path').'components/collections/model/');
      $coll = $modx->getObject('CollectionTemplate', $id);
      if(!$coll || !$field) return;
      return $coll->$field;

      Вызовы:
      [[getColl? &id=`1` &field=`sort_field`]]
      [[getColl? &id=`1` &field=`sort_dir`]]
      [[getColl? &id=`1` &field=`page_size`]]
        Семён Кудрявцев
        24 сентября 2017, 06:57
        0
        Павел, спасибо большое, за идею — это то, что нужно!
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8