Лучший Ответ Станислав , 17 August 2013 - 09:52
Элемент фильтра:
media\zoo\applications\jbuniversal\framework\render\filter\element.category.php - для стандартного вида
media\zoo\applications\jbuniversal\framework\render\filter\element.category.chosen.php - для дерева с поиском
Дерево строится вызовом:
$result = $this->app->tree->buildList(0, $this->app->tree->build($allCategories, 'Category'));
Хелпер, из которого вызывается buildList, находится здесь:
administrator\components\com_zoo\helpers\tree.php
Интересующая нас функция:
public function buildList($id, $objects, $list = array(), $prefix = '<sup>|_</sup> ', $spacer = '. ', $indent = '', $level = 0, $maxlevel = 9999) {
if (isset($objects[$id]) && $level <= $maxlevel) {
foreach ($objects[$id]->getChildren() as $child) {
// set treename
$id = $child->id;
$list[$id] = $child;
$list[$id]->treename = $indent.($indent == '' ? $child->name : $prefix.$child->name);
$list = $this->buildList($id, $objects, $list, $prefix, $spacer, $indent.$spacer, $level + 1, $maxlevel);
}
}
return $list;
}
Обратите внимание на $maxlevel в последней функции. Сейчас в этот параметр по умолчанию передается значение 9999, что по мнению разработчиков Zoo эквивалентно бесконечности
Ну а вы можете поставить свое значение. 2,3, 4 и. т.д.
НО!
1) При обновлении ZOO ваши изменения могут затереться.
2) При изменении значения, указанная вложенность будет распространяться на абсолютно все иерерахические списки в ваших приложениях.
Также можно вызывать функцию из element.category.php (element.category.chosen.php), задействовав все аргументы:
$result = $this->app->tree->buildList(0, $this->app->tree->build($allCategories, 'Category'), $list = array(), $prefix = '<sup>|_</sup> ', $spacer = '. ', $indent = '', $level = 0, $maxlevel=3);
Решается проблема глобальности ограничения вложенности до 3 уровней, но в то же время, этот апдейт может затереться уже при обновлении JBzoo. В любом случае, вопрос решается только хаком, так что надо будет внимательно обновляться и восстанавливать хак после обновлений.
Перейти к сообщению


Тема закрыта









