pdoMenu сортировка ресурсов по порядку

Приветствую!

Id ресурсов для вывода указываю в системной настройке set_col_menu, например 11,3,8. Ресурсы нужно выводить из нескольких родителей.

{'pdoMenu'|snippet: [
	'parents' => '0,2,3',
	'level' => '1',
	'resources' => $_modx->config.set_col_menu,
	'tplOuter' => '@INLINE <ul class="mar">{$wrapper}</ul>',
	'tpl' => '@INLINE <li><a href="{$link}"]>{$pagetitle}</a></li>',
]}
Если оставить пустым 'sortby' => '', то все равно выводит в разнобой.
Как сделать вывод пунктов меню в таком порядке, как в системной настройке?
Rootiys
30 октября 2016, 12:08
modx.pro
5 882
0

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

Евгений
01 ноября 2016, 09:01
0
То есть нужно вывести в том же порядке как в админке? Тогда:
&sortby='menuindex',
&sortdir='ASC' или 'DESC'
    Rootiys
    01 ноября 2016, 09:05
    0
    Нет.
    Нужно вывести в таком порядке:
    &resources=`12,45,1,4,9`
    Причем ресурсы из разных контейнеров.
    Евгений
    01 ноября 2016, 09:10
    0
    Попробуй так:
    &ortby='',
    &sortdir='',
    По идее должно работать, я уже это проходил
      Rootiys
      03 ноября 2016, 10:14
      0
      &ortby='',
      &sortdir='',
      Если ресурсы выводить из одного контейнера, то все работает.
      Но если я вывожу ресурсы из разных контейнеров и сами контейнеры, то не получатся.
        Олег
        10 декабря 2016, 11:03
        0
        Вы нашли решение?
          Роман
          20 января 2018, 19:49
          0
          С тем же столкнулся, как вывести?
            Андрей
            20 июня 2018, 09:35
            0
            Такая же история, нашли решение?
              Роман
              20 июня 2018, 09:37
              0
              Выше была ошибка в написании, нужно вот так:

              &sortby=``
              &sortdir=``
                Андрей
                20 июня 2018, 10:46
                0
                Роман, благодарю за оперативный ответ.
                Действительно, как указано в документации:
                «Направление сортировки: по убыванию или возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources.»
                Видимо это справедливо если в списке ресурсов указаны страницы одного уровня, иначе получается:
                Структура:
                1
                23
                3
                —19
                14
                —5
                —11
                —12
                &resources=`1,23,3,5,11,12,19`
                Выводит: 1, 23, 3, 19, 5, 11, 12
                  Роман
                  20 июня 2018, 11:17
                  0
                  Все верно, те то страницы второго уровня! Тут три варианта:
                  1) выводить ресурсы на один уровень
                  2) писать свой шаблон для первого и второго уровня
                  3) делать статическое меню
                    Роман
                    20 июня 2018, 11:18
                    0
                    п.с. для благодарности, можно ставить плюс ответу
      Алексей Смирнов
      13 марта 2021, 19:49
      +1
      Просто оставлю это тут, а то нужно раз в 100 лет и вспомнить как искать сложно:
      'resources' => '12,66,345,16,300,800',
      'orderby' =>'FIELD(id, 12,66,345,16,300,800)'
        Александр Мельник
        13 марта 2021, 21:10
        0
        Действительно важный и полезный код.
        Впервые вижу возможность задавать orderby в таком виде.
        Всегда приходилось извращятся, переводить строку с идентификаторами в массив, циклом проходить по нему, вызывая на каждой итерации getResource($id)
          Алексей Смирнов
          13 декабря 2021, 16:13
          0
          ОШИБКА.
          вместо orderby следует указывать sortby.
          Иногда нужно писать не id, а modResource.id — может зависеть от сниппета который используется.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          14