Перейти к содержимому


Фотография
- - - - -

Рендеринг каскадных списков


  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 krylov

krylov

Отправлено 12 December 2012 - 13:08

Добрый день!
стоит задача: в teaser-представлении выводить только первое значение списков, в full - в разных полях первое и второе. путём перебора вариантов отображения для элемента (param name="display" type="list" и param name="template" type="jbselect") получается отобразить либо всю цепочку, либо только последний уровень.
т.е. имеем список:
Тип
-подтип
в teaser выводим только "Тип", в full - в разных местах "Тип" и "подтип"
Спасибо.
  • 0

#2 SmetDenis

SmetDenis

Отправлено 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" и него добавить новую опцию.

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 krylov

krylov

Отправлено 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"

  • 0

#4 SmetDenis

SmetDenis

Отправлено 13 December 2012 - 13:57

$this - это класс итератор. Т.е его можно "перебрать" как массив.
Поэтому, то что вы явно указали "0" - это не значит что остальные значения "отбрасываются"

Для вывод определенного элемента из "итератора" используется метод "_render()"
В нем и проверяется, выводить только последний элемент каскадного списка или все.
Самих каскадных списков может быть несколько, и у каждого выведется только последний элемент.

Среди всех каскадных списков можно выводить все, первый или все без первого. За это отвечает display.

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!