Список разделов каталога в TV типа checkbox
Дорогой Василий и коллеги! Сразу оговорюсь, что это копипаста моего поста с modx-cms.ru.
Друзья мои, прошу вашей помощи, совета или, по крайней мере, квалифицированного пинка в нужную сторону. Дело в следующем. Вчера вечером собирался быстро набросать сниппет, который вызывается через @EVAL в TV типа «чекбокс». Сниппет должен выводить разделы и вложенные в них подразделы каталога продукции и выглядеть это в менеджере должно было теоретически так:

Результат был, конечно же, другим:

Вместо подразделов каждого основного раздела выводятся все подразделы какого-то одного. Привожу листинг своего страшненького сниппета:
Вызов в TV:
Пнуть тут есть за что, но решение нужно больше :) Заранее спасибо
Друзья мои, прошу вашей помощи, совета или, по крайней мере, квалифицированного пинка в нужную сторону. Дело в следующем. Вчера вечером собирался быстро набросать сниппет, который вызывается через @EVAL в TV типа «чекбокс». Сниппет должен выводить разделы и вложенные в них подразделы каталога продукции и выглядеть это в менеджере должно было теоретически так:

Результат был, конечно же, другим:

Вместо подразделов каждого основного раздела выводятся все подразделы какого-то одного. Привожу листинг своего страшненького сниппета:
<?php
/* getProductSections snippet */
$docs = $modx->getCollection('modResource',array(
'parent'=>3,
'id:NOT IN'=> array(3,13,69,81),
'template' => 4,
));
foreach($docs as $doc) {
$title = $doc->get('pagetitle');
$id = $doc->get('id');
$subdocs = $modx->getCollection('modResource',array('parent'=>$id,'template' => 4,));
foreach ($subdocs as $subdoc) {
$s_out .= '-- '.$subdoc->get('pagetitle').'=='.$subdoc->get('id').'||';
}
$out .= strtoupper($title).'=='.$id.'||'.$s_out;
}
$out = $out;
return rtrim($out,'|');Вызов в TV:
@EVAL return $modx->runSnippet('getProductSections');Пнуть тут есть за что, но решение нужно больше :) Заранее спасибо
Комментарии: 3
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Вот такой будет результат.
Array ( [1] => Array ( [id] => 1 [pagetitle] => Главная [parent] => 0 [children] => Array ( ) ) [11] => Array ( [children] => Array ( [2] => Array ( [id] => 2 [pagetitle] => Категория 1 [parent] => 11 ) [4] => Array ( [id] => 4 [pagetitle] => Корзина [parent] => 11 ) ) [id] => 11 [pagetitle] => miniShop2 [parent] => 0 ) )Ну а дальше ты можешь пройтись по нему foreach() и оформить как угодно. Обрати внимание, что у всез нужных ресурсов должен быть один указанный шаблон, иначе дерево может быть неправильным.