Как отсортировать пункты меню из разных ресурсов? Новый

Дополнение: pdoMenu

Приветствую

Есть дерево ресурсов:
Ресурс 1
    - Ресурс 2
    - Ресурс 3
    - Ресурс 4
Ресурс 5
    - Ресурс 6
    - Ресурс 7
    - Ресурс 8
Ресурс 9
    - Ресурс 10
    - Ресурс 11
    - Ресурс 12

Надо чтобы порядок пунктов меню был такой:
Ресурс 12
Ресурс 5
Ресурс 2
Ресурс 9
Ресурс 1

Иными словами — нужно отсортировать вывод пунктов меню из разных родителей, включая их самих через pdoMenu. Битый час пытаюсь настроить. Подскажите пожалуйста возможно ли настроить порядок пунктов меню таким образом через pdoMenu? Если возможно, то как это сделать?
20 октября 2017, 18:14    weranda   
0    66 0

Комментарии (16)

  1. Павел Романов 20 октября 2017, 18:20 # 0
    Сделайте у ресурсов TV, где указывайте нужный порядок и сортируйте по нему.
    1. weranda 20 октября 2017, 18:22 # 0
      Прокатит ли такой вариант?
      Пробовал сортировку через menuindex, вроде, разницы быть не должно, но через menuindex не сортирует в нужном порядке, какая-то несостыковочка с родительских пунктов и вложенных.
      1. weranda 20 октября 2017, 18:33 # 0
        Прокатит ли такой вариант?
        Пробовал сортировку через menuindex, вроде, разницы быть не должно, но через menuindex не сортирует в нужном порядке, какая-то несостыковочка с родительских пунктов и вложенных.

        Да, этот вариант не работает.

        [[pdoMenu?
        	&level=`0`
        	&parents=`0`
        	&resources=`12,5,2,9,1`
        	&includeTVs=`my_sort_menu`
        	&sortby=`my_sort_menu`
        ]]
        1. Павел Романов 20 октября 2017, 19:17 # 0
          Вот так попробуйте:
          [[pdoMenu?
          	&level=`0`
          	&parents=`0`
          	&resources=`12,5,2,9,1`
          	&includeTVs=`my_sort_menu`
          	&sortby=`ids`
          ]]
          1. weranda 20 октября 2017, 19:28 # 0
            Не, не пашет. Отсортировать на одном уровне можно, но когда в дело включаются вложенные уровни, складывается ощущение, что вложенные уровни не могут быть перемешаны с родительскими уровнями.
            1. Павел Романов 20 октября 2017, 19:37 # 0
              Проверил у себя — все пашет.
              Структура и вызов:


              Результат:

              1. weranda 20 октября 2017, 19:44 # 0
                А вы вставьте в 23 ресурс пару вложенных пунктов (100,101,102, к примеру) и попробуйте вывести один из них в начале списка, а второй в конце списка.
                100,41,55,101,20,19,102
                1. weranda 20 октября 2017, 19:51 # 0
                  Вот ваша структура:
                  19
                  20
                  21
                  72
                  23
                      41
                      100
                      101
                      102
                  51
                  52
                  55
                  56

                  Попробуйте так:
                  100,51,23,20,101,72,102
                  Вернет нужный порядок?
                  1. Павел Романов 20 октября 2017, 19:52 # 0
                    Сделайте pdoResources:



                    Результат:
                    1. weranda 20 октября 2017, 19:55 # 0
                      Спрашиваю про pdoMenu, а не про pdoResources — вот в чем вопрос! С pdoResources дело ясное — выборка и порядок работают корректно, а вот с pdoMenu что-то другое…
                      1. Павел Романов 20 октября 2017, 20:01 # 0
                        Если Вам нужно меню с определенными ресурсами, почему именно на pdoMenu свет клином сошелся?
                        Можно вообще на MIGX сделать и добавлять, что угодно и в каком угодно порядке )).
                        1. weranda 20 октября 2017, 20:09 # 0
                          Потому что в pdoMenu есть замечательная штука — активный класс пункта меню.
                          Можно вообще на MIGX сделать
                          А можно вообще на HTML+JS или на PHP/Сниппете зафигачить, но хочется понять как это сделать в pdoMenu без плясок вокруг других расширений.
                          В любом случае, спасибо за попытки.
                          Вопрос открыт.
                          1. Павел Романов 20 октября 2017, 20:45 # +1
                            Если дело только в классе, то помечать и в pdoResources без проблем. И menutite выводить тоже:
                            <a href="[[+uri]]" class="[[*id:is=`[[+id]]`:then=`active`]][[*parent:is=`[[+id]]`:then=`active`]]">
                            	[[+menutitle:default=`[[+pagetitle]]`]]
                            </a>

                            А через pdoField можно вообще всю цепочку пометить )).

                            Вы бы всю задачу подробнее описали — может, действительно проще будет собственным сниппетом сделать, чем пытаться плясать вокруг pdoMenu.

                            PS
                            Кстати, про MIGX Вы зря. Если нужно сделать меню, абсолютно не привязанное к дереву, с произвольными анкорами, порядком, индивидуальным видом пунктов, настраиваемым выводом подменю, да при этом еще и легко управляемое из админки, то MIGX — именно то, что нужно.
                            1. Klike 20 октября 2017, 20:51 # +1
                              Да, Павел чуть опередил, то же самое хотел написать, вот конкретный пример, только без присоединения TV полей:

                              [[pdoResources?
                                      	&parents=`0`
                                      	&resources=`12,5,2,9,1`
                                      	&tpl=`tpl.Menu`
                                      	&tplWrapper=`@INLINE <ul>[[+output]]</ul>`
                                      	&sortby=`resources`
                                      ]]
                              tpl.Menu (вариант с Fenom)
                              {if $id == ''|resource:'id'}
                                  {set $active = 'active'}
                              {/if}
                              <li class="{$active}"><a class="{$active}" href="{$uri}">{$pagetitle}</a></li>
                              1. weranda 21 октября 2017, 09:03 # 0
                                Павал, Klike, спасибо за помощь!
                                1. Klike 21 октября 2017, 09:10 # 0
                                  Пожалуйста, а ещё спасибо можно плюсиками ставить )
                Вы должны авторизоваться, чтобы оставлять комментарии.