Иерархия и вьюсы.

Друпал гениален, никогда не устану это повторять, хотя уже чувствую что достал им всех). Если ты научился пользываться модулем views, то считай все, ты наш, уже друпал не забыть никогда.

Вьюсы супер универсальны, про них пишут, что с ними можно сделать чуть ли не все. Но практике все не так радужно. Что есть модуль вьюс? Практичеки это такой интструмент для визуального создания SQL запросов. Круто конечно. Но есть одна оплошность. Вьюсом практически не возможно создать объект основный на сложной иерархии данных. Все ухудшает тот факт что на практике почти всегда приходится заниматься структурами с этой самой иерархией.

Поясню на примере практическом:

На главной странице нужно вывести такую конструкцию

Категория 1
Подкат1
Нода из подката2
Подка2
Нода из подката2
Категория 2
Подкат1
Нода из подката2
Подка2
Нода из подката2
Категория 3
Подкат1
Нода из подката2
Подка2
Нода из подката2
Категория 4
Подкат1
Нода из подката2
Подка2
Нода из подката2

Такая вообщемто достаточно не сложная древовидная структура, да и встречается часто в реальной жизни. Когда мне такая попалась первый раз и тогда я уже не много знал вьюсы, то сразу же решил, у фигня какая, во вьюс я такое в два счета сделаю. Но не тут то было. Оказыватся что это почти не возможно. Во вьюс 2 это точно не возможно, во вьюс 3 точно не могу сказать, там много чего добавили. Но все равно, даже если это и получится у вас, используя аттачменты, создавая для каждой корневой категории отдельный вьюс и т.п., способов конечно но много, но все равно если ограничиваться при создании таких структур получаются ужасные конструкции.

Вообщем итог такой – суперуниверсальность вьюс это сказано громко. Друпал пердоставляет удобнейшую среду для написания своих модулей, поэтому не бойтесь их писать самостоятельно. Такая задача как в моем примере решается на раз-два написанием своего модуля. Позже покажу как я это сделал. Подсказка – делаем вьюс для вывода одной категории. А в модуле создаем цикл нужных нам корневых категорий и через view api обращаемся к нашему созданному вьюсу каждый раз изменяя фильтр этого вьюса. Потом выводим это в блок. Задача решается написанием 10 строк своего кода. Остальная часть модуля стандартна и создается копирыванием кода их похожего модуля.

Оставить комментарий

Почта (не публикуется) Обязательные поля помечены *

Вы можете использовать эти HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>