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' => '', то все равно выводит в разнобой.Как сделать вывод пунктов меню в таком порядке, как в системной настройке?
Комментарии: 14
То есть нужно вывести в том же порядке как в админке? Тогда:
&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 — может зависеть от сниппета который используется.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.