Добрый день!
стоит задача: в teaser-представлении выводить только первое значение списков, в full - в разных полях первое и второе. путём перебора вариантов отображения для элемента (param name="display" type="list" и param name="template" type="jbselect") получается отобразить либо всю цепочку, либо только последний уровень.
т.е. имеем список:
Тип
-подтип
в teaser выводим только "Тип", в full - в разных местах "Тип" и "подтип"
Спасибо.
Рендеринг каскадных списков
Автор
krylov
, Dec 12 2012 13:08
Сообщений в теме: 3
#1
Отправлено 12 December 2012 - 13:08
#2
Отправлено 12 December 2012 - 19:14
Рендеринг каскадного селекта выполняется тут
media/zoo/applications/jbuniversal/elements/jbselectcascade/jbselectcascade.php метод render()
$this->seek(0); // ставит указатель в нужное положение
$this->next(); // берет следующий элемент
$result[] = $this->_render($params); // рендерит список
В файле media/zoo/applications/jbuniversal/elements/jbselectcascade/jbselectcascade.xml
можно найти параметр "display" и него добавить новую опцию.
media/zoo/applications/jbuniversal/elements/jbselectcascade/jbselectcascade.php метод render()
$this->seek(0); // ставит указатель в нужное положение
$this->next(); // берет следующий элемент
$result[] = $this->_render($params); // рендерит список
В файле media/zoo/applications/jbuniversal/elements/jbselectcascade/jbselectcascade.xml
можно найти параметр "display" и него добавить новую опцию.
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#3
Отправлено 13 December 2012 - 09:40
Спасибо за ответ. по результату проверки по сочетаниям разных селекторов из xml:
all (param "display") + default (param "template") = отображается вся цепочка;
first + default = отображается вся цепочка;
all_without_first + default = пусто;
all + last = 2 (последний) уровень;
first + last = 2 уровень;
all_without_first + last = пусто;
т.е. получается, что param "template" имеет приоритет, а param "display" практически не влияет на рендеринг. возможно, я чего-то не учёл при анализе.
Как я понял, $this->seek(0); //должен брать первое значение и отбрасывать все последующие значения
Не совсем понятно, как работает рендеринг по param "template"
all (param "display") + default (param "template") = отображается вся цепочка;
first + default = отображается вся цепочка;
all_without_first + default = пусто;
all + last = 2 (последний) уровень;
first + last = 2 уровень;
all_without_first + last = пусто;
т.е. получается, что param "template" имеет приоритет, а param "display" практически не влияет на рендеринг. возможно, я чего-то не учёл при анализе.
Как я понял, $this->seek(0); //должен брать первое значение и отбрасывать все последующие значения
Не совсем понятно, как работает рендеринг по param "template"
#4
Отправлено 13 December 2012 - 13:57
$this - это класс итератор. Т.е его можно "перебрать" как массив.
Поэтому, то что вы явно указали "0" - это не значит что остальные значения "отбрасываются"
Для вывод определенного элемента из "итератора" используется метод "_render()"
В нем и проверяется, выводить только последний элемент каскадного списка или все.
Самих каскадных списков может быть несколько, и у каждого выведется только последний элемент.
Среди всех каскадных списков можно выводить все, первый или все без первого. За это отвечает display.
Поэтому, то что вы явно указали "0" - это не значит что остальные значения "отбрасываются"
Для вывод определенного элемента из "итератора" используется метод "_render()"
В нем и проверяется, выводить только последний элемент каскадного списка или все.
Самих каскадных списков может быть несколько, и у каждого выведется только последний элемент.
Среди всех каскадных списков можно выводить все, первый или все без первого. За это отвечает display.
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.