pdoMenu сортировка ресурсов по порядку
Приветствую!
Id ресурсов для вывода указываю в системной настройке set_col_menu, например 11,3,8. Ресурсы нужно выводить из нескольких родителей.
Как сделать вывод пунктов меню в таком порядке, как в системной настройке?
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' => '', то все равно выводит в разнобой.Как сделать вывод пунктов меню в таком порядке, как в системной настройке?
Комментарии: 15
То есть нужно вывести в том же порядке как в админке? Тогда:
&sortby='menuindex',
&sortdir='ASC' или 'DESC'
&sortby='menuindex',
&sortdir='ASC' или 'DESC'
Нет.
Нужно вывести в таком порядке:
Нужно вывести в таком порядке:
&resources=`12,45,1,4,9`
Причем ресурсы из разных контейнеров. &ortby='',
&sortdir='',
Если ресурсы выводить из одного контейнера, то все работает.Но если я вывожу ресурсы из разных контейнеров и сами контейнеры, то не получатся.
Вы нашли решение?
С тем же столкнулся, как вывести?
Такая же история, нашли решение?
Выше была ошибка в написании, нужно вот так:
&sortby=``
&sortdir=``
Роман, благодарю за оперативный ответ.
Действительно, как указано в документации:
«Направление сортировки: по убыванию или возрастанию. Если оставить параметры &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
Действительно, как указано в документации:
«Направление сортировки: по убыванию или возрастанию. Если оставить параметры &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
Все верно, те то страницы второго уровня! Тут три варианта:
1) выводить ресурсы на один уровень
2) писать свой шаблон для первого и второго уровня
3) делать статическое меню
1) выводить ресурсы на один уровень
2) писать свой шаблон для первого и второго уровня
3) делать статическое меню
п.с. для благодарности, можно ставить плюс ответу
Просто оставлю это тут, а то нужно раз в 100 лет и вспомнить как искать сложно:
'resources' => '12,66,345,16,300,800',
'orderby' =>'FIELD(id, 12,66,345,16,300,800)'
Действительно важный и полезный код.
Впервые вижу возможность задавать orderby в таком виде.
Всегда приходилось извращятся, переводить строку с идентификаторами в массив, циклом проходить по нему, вызывая на каждой итерации getResource($id)
Впервые вижу возможность задавать orderby в таком виде.
Всегда приходилось извращятся, переводить строку с идентификаторами в массив, циклом проходить по нему, вызывая на каждой итерации getResource($id)
ОШИБКА.
вместо orderby следует указывать sortby.
Иногда нужно писать не id, а modResource.id — может зависеть от сниппета который используется.
вместо orderby следует указывать sortby.
Иногда нужно писать не id, а modResource.id — может зависеть от сниппета который используется.
не работает, пробовал и 'sortby' =>'FIELD(id, 15,16,17,18,3,4,5)', и так 'sortby' =>'FIELD(modResource.id, 15,16,17,18,3,4,5)', и оставлял поле пустым как написано в документации все равно выводит в порядке
3, 4, 5, ,15, 16, 17, 18
ресурсы 15, 16, 17, 18 второй уровень вложенности
3, 4, 5, ,15, 16, 17, 18
ресурсы 15, 16, 17, 18 второй уровень вложенности
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.