Лучший Ответ Станислав , 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. В любом случае, вопрос решается только хаком, так что надо будет внимательно обновляться и восстанавливать хак после обновлений.
Перейти к сообщению