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

Приветствую

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

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

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

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

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


        Результат:

          weranda
          20 октября 2017, 19:44
          0
          А вы вставьте в 23 ресурс пару вложенных пунктов (100,101,102, к примеру) и попробуйте вывести один из них в начале списка, а второй в конце списка.
          100,41,55,101,20,19,102
            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
            Вернет нужный порядок?
            Павел Романов
            20 октября 2017, 19:52
            0
            Сделайте pdoResources:



            Результат:
              weranda
              20 октября 2017, 19:55
              0
              Спрашиваю про pdoMenu, а не про pdoResources — вот в чем вопрос! С pdoResources дело ясное — выборка и порядок работают корректно, а вот с pdoMenu что-то другое…
                Павел Романов
                20 октября 2017, 20:01
                0
                Если Вам нужно меню с определенными ресурсами, почему именно на pdoMenu свет клином сошелся?
                Можно вообще на MIGX сделать и добавлять, что угодно и в каком угодно порядке )).
                  weranda
                  20 октября 2017, 20:09
                  0
                  Потому что в pdoMenu есть замечательная штука — активный класс пункта меню.
                  Можно вообще на MIGX сделать
                  А можно вообще на HTML+JS или на PHP/Сниппете зафигачить, но хочется понять как это сделать в pdoMenu без плясок вокруг других расширений.
                  В любом случае, спасибо за попытки.
                  Вопрос открыт.
                    Павел Романов
                    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 — именно то, что нужно.
                    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>
                      weranda
                      21 октября 2017, 09:03
                      0
                      Павал, Klike, спасибо за помощь!
                      Klike
                      21 октября 2017, 09:10
                      0
                      Пожалуйста, а ещё спасибо можно плюсиками ставить )