pdoResources и сквозная нумерация страниц
Здравствуйте! Столкнулся с задачей сделать сквозную нумерацию страниц и сортировку по ней.
На пример есть такая структура каталога:
1. Каталог первого уровня_1 (1)
1.1 Каталог второго уровня_1 (2)
1.1.1 Каталог третьего уровня_1 (3)
— список товаров
1.1.2 Каталог третьего уровня уровня_2 (4)
— список товаров
1.2 Каталог второго уровня_2 (5)
— список товаров
2. Каталог первого уровня_2 (6)
2.1 Каталог второго уровня_1 (7)
Когда мы находимся например в «Каталог первого уровня_1», то нужно показывать список товаров по порядку каталогов в меню, т.е. в начале мы должны отображать товары из «Каталог третьего уровня_1», далее «Каталог третьего уровня уровня_2», а в конце из «Каталог второго уровня_2»
я сделал условия для pdoResources которое позволяет отсортировать товары по menuindex родителя, но он не учитывает уровень вложенности.
На пример есть такая структура каталога:
1. Каталог первого уровня_1 (1)
1.1 Каталог второго уровня_1 (2)
1.1.1 Каталог третьего уровня_1 (3)
— список товаров
1.1.2 Каталог третьего уровня уровня_2 (4)
— список товаров
1.2 Каталог второго уровня_2 (5)
— список товаров
2. Каталог первого уровня_2 (6)
2.1 Каталог второго уровня_1 (7)
Когда мы находимся например в «Каталог первого уровня_1», то нужно показывать список товаров по порядку каталогов в меню, т.е. в начале мы должны отображать товары из «Каталог третьего уровня_1», далее «Каталог третьего уровня уровня_2», а в конце из «Каталог второго уровня_2»
я сделал условия для pdoResources которое позволяет отсортировать товары по menuindex родителя, но он не учитывает уровень вложенности.
[[!getPage?
&elementClass=`modSnippet` &element=`pdoResources`
&limit=`15`
&leftJoin=`{
"parentResource": {
"class" : "modResource"
, "alias" : "parentResource"
, "on" : "parentResource.id = modResource.parent"
}
}`
&select=`{
"modResource": "*",
"parentResource": "parentResource.menuindex as parentindex"
}`
&where=`{"template:=":4}`
&sortby=`{"parentindex":"asc"}`
&tpl=`catalogItems`
]]
Помогите решить данную проблему. Комментарии: 1
Если кому понадобится, вот решение:
сниппет getCatalogIDs
сниппет getCatalogIDs
$id = $modx->getOption('id',$scriptProperties,$modx->resource->get('id'));
//убираем вложенность массива, при этом сохраняя порядок.
if (!function_exists('array_keys_flatten')){
function array_keys_flatten($array){
if (!is_array($array))
return false;
$result = array();
foreach($array as $key=>$value){
//только для элементов содержащих вложенные документы. если не нужно это условие, перенести $result[] = $key; до проверки
if (is_array($value)){
$result[] = $key;
$result = array_merge($result,array_keys_flatten($value));
}
}
return $result;
}
}
$tree = $modx->getTree($id);
//отсортированный по menuindex массив документов.
$catalogTree = array_keys_flatten($tree);
return implode(',',$catalogTree);
вызов сниппета на странице[[!getPage?
&elementClass=`modSnippet` &element=`pdoResources`
&parents=`[[*id]]`
&limit=`15`
&showHidden=`1`
&sortby=`FIELD(modResource.parent, [[getCatalogIDs? &id=`[[*id]]`]] )`
&sortdir=`ASC`
&tpl=`items.tpl`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.