[РЕШЕНО] Страница из нескольких views - как грамотней сделать?

Главные вкладки

Аватар пользователя otmoroz otmoroz 22 июля 2011 в 11:21

Всем привет!
У меня задумка, сделать главные страницы отделов Компании. На них должны быть:
Категории материалов (тип Вьювс - термины)
Последние новости (тип Вьювс - материалы)
Сотрудники отдела (тип Вьювс - пользователи)

Отделов около 15-ти.

А теперь вопрос: как лучше сделать (менее ресурсоемко и чтобы темизировать просто было)?
Варианты: Сделать Вьювс материалы, создать дисплеи Страница для каждого отдела, с меню. Потом создать Вьювс пользователи непонятно с какими дисплеями, наверно БЛОК и выводить на страницах отделов. Создать вьювс термины и как-то (как???) выводить на странице с Вьювс материалы.

Или же создать 15 нод, вставить все вьювсы в нее один за другим? И пользователи - нормально ли создавать 15 блоков?

Как кто думает? Боюсь наделать быдлокода...

Поиск смотрел, варианты знаю, но какой лучше? Спасибо!

В итоге создал ноды, в них добавил поля текстовые и туда вставил вьювс

Комментарии

Аватар пользователя Alex Bacart Alex Bacart 22 июля 2011 в 11:38

"otmoroz" wrote:
Категории материалов (тип Вьювс - термины)
Последние новости (тип Вьювс - материалы)
Сотрудники отдела (тип Вьювс - пользователи)

"otmoroz" wrote:
нормально ли создавать 15 блоков?

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

Аватар пользователя Punk_UnDeaD Punk_UnDeaD 22 июля 2011 в 12:42

блоки делать блоками, а страницы страницами!!!

если на одной странице надо вывести и подтермины и материалы, то материалы, на мой взгляд, страницей, а термины блоком

Аватар пользователя otmoroz otmoroz 22 июля 2011 в 13:05

но отделов-то 15! как их на три страницы расхреначишь? Для каждого ссылка в меню нужна.

И блоки нужно делать в отдельном Представлении, а значит, что аргументы от страниц не подставишь)

Аватар пользователя Alex Bacart Alex Bacart 22 июля 2011 в 13:20

"otmoroz" wrote:
И блоки нужно делать в отдельном Представлении, а значит, что аргументы от страниц не подставишь)

В блоках леко можно получить arg(x).
"otmoroz" wrote:
И почему три страницы?

Ну 15 страниц можете создать. Хотя, можно и одну сделать, чтобы потом не париться. Например нода 1 для разных отделов будет доступна по таким адресам:
node/1/department_1
node/1/department_2
...
node/1/department_15

А уже в самой странице и в блоках смотрим на arg(2) и узнаем к какому отделу эта страница относится.

Аватар пользователя Alex Bacart Alex Bacart 22 июля 2011 в 13:43

"otmoroz" wrote:
А почему нода?

Да хоть что используйте. Главное, чтобы было удобно и работоспособно.
Насколько я понял у вас будет на странице отдела основной список и несколько дополнительных по бокам, то можно использовать страницу, созданную вьюхой и на ней выводить блоки.

Аватар пользователя otmoroz otmoroz 22 июля 2011 в 14:31

Спасибо, буду пробовать!

Значит по 1 Вьювс для каждого вида данных (категории-блоки 1 дисплей, новости-страницы 15 дисплеев, пользователи-блоки 1 дисплей)и в зависимости от УРЛ менять отделы. Спасибо!

Аватар пользователя Alex Bacart Alex Bacart 22 июля 2011 в 18:46

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

Аватар пользователя Crea Crea 26 июля 2011 в 10:27

otmoroz wrote:
да, панели не вариант, я их в самом начале пробовал юзать - нагрузка черезчур меня чур меня))

мозг не выдержал ?

Аватар пользователя otmoroz otmoroz 25 июля 2011 в 10:14

из-за особенностей arg(), нельзя использовать только 1 ноду, придется создавать 15 нод и 15 дисплеев((

Примечание: Функция работает с внутренним путем друпала, а не с конечным адресом,
 поэтому если вы находитесь на странице "blog/some-post", а ее настоящим адресом является "node/123",
 то arg(1) будет равен "123", а не "some-post".
Аватар пользователя Alex Bacart Alex Bacart 25 июля 2011 в 11:54

"otmoroz" wrote:

из-за особенностей arg(), нельзя использовать только 1 ноду, придется создавать 15 нод и 15 дисплеев((


Потом что нужно чтобы у отделов страницы имели путь не node/1, а departments/some_department?
Если да, то создаете одну вьюха, а в ней 15 страниц, к каждой привязываем путь с аргументом, например departments/1, а в pathauto делаем для каждого из них свой алиас.

Аватар пользователя otmoroz otmoroz 25 июля 2011 в 12:39

Vydrin_AP wrote:
"otmoroz" wrote:

из-за особенностей arg(), нельзя использовать только 1 ноду, придется создавать 15 нод и 15 дисплеев((


Потом что нужно чтобы у отделов страницы имели путь не node/1, а departments/some_department?
Если да, то создаете одну вьюха, а в ней 15 страниц, к каждой привязываем путь с аргументом, например departments/1, а в pathauto делаем для каждого из них свой алиас.

нет, потому что для 15 отделов нужно 15 условий для вывода, а условия работают с реальными адресами, такими, как node/1

Аватар пользователя otmoroz otmoroz 25 июля 2011 в 12:36

Вы не поняли. В одной ноде, с одним реальным адресом, нельзя использовать несколько параметров arg(2), потому что этот параметр работает только с реальным адресом, не с алиасами.
Точно придется 15 нод и страниц создавать.

Аватар пользователя Alex Bacart Alex Bacart 25 июля 2011 в 12:56

Во-первых давайте разберемся, вы как планируете делать страницу отдела? Нодой или вьюхой? Если вьюхой, то выше я написал как это сделать.
Если нодой, то делаете пути для первой ноды таким образом:
node/1/1
node/1/2
node/1/3
..
node/1/15

И в ноде получаете arg(3). В алиасах прописать такую комбинацию через шаблон не получится, но забить 15 алиасов вручную не такая сложная задача, как создать 15 нод и поддерживать их все в актуальном состоянии.

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 9:21

Vydrin_AP wrote:
Во-первых давайте разберемся, вы как планируете делать страницу отдела? Нодой или вьюхой? Если вьюхой, то выше я написал как это сделать.

Вы меня уж простите, но я чего-то завис. Мне необходимо сделать вьюхой, НО все отделы должны быть доступны через меню.
Я не понял, как сделать вьювс из трех страниц, но с 15 пунктами меню. Насчет arg(3) понял, спасибо! А вот сама основа...

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 9:39

Vydrin_AP wrote:

В алиасах прописать такую комбинацию через шаблон не получится, но забить 15 алиасов вручную не такая сложная задача, как создать 15 нод и поддерживать их все в актуальном состоянии.

дык создать пустую ноду, в нее вставить вьювс и она всегда будет в актуальном состоянии, верно?

Аватар пользователя Alex Bacart Alex Bacart 26 июля 2011 в 10:11

"otmoroz" wrote:
Мне необходимо сделать вьюхой, НО все отделы должны быть доступны через меню.
Я не понял, как сделать вьювс из трех страниц, но с 15 пунктами меню.

Я спрашивал не про блоки, которые будут сделаны через вьюс, а про сами страницы отделов. Что они будут из себя представлять (вьюха, нода)?
Я могу и хочу вам помочь, но сначала решите как и что вы хотите видеть, по пунктам, а я расскажу как это сделать )

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 10:49

Smile давайте сначала и, может быть, на ты? Smile

1 Результат:

15 страниц сайта со своими пунктами в меню.
На страницах должны быть: темизированные ссылки на категории инструкций (таксономия), последних новостей две колонки, в правом блоке список сотрудников отдела. Больше никаких условий.

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

Я думаю, что нужно создать вьюху типа "Термины таксономии". В ней 15 дисплеев с типом "Страница". Это даст мне адреса типа "dept/it" и нормальные ссылки в меню.

Далее сделать вьювс типа "Пользователи" с фильтром по отделу. Добавить 15 дисплеев "Блок" и выводить их справа.

И создать тип вьювс "Материалы", там будет простая фильтрация по типу "Новость" и по термину таксономии "отдел такой-то". А дисплеев наверно тоже 15 =).

При этом мне в настройках вывода блоков придется 30 путей прописать (15 для юзеров и 15 для новостей)

Или же создать тип материала, допустим с названием "Вьювс". В нем удалить все поля, добавить текстовое поле, в котороя я буду вставлять "views_embed_view", с неограниченным количеством значений.
Тогда мне нужно будет создать 15 нод такого типа и в них скопипастить "views_embed_view($name, $display_id=blablabla)".

Но мне кажется, что эти варианты мягко говоря кривые, в связи с этим и вопрос: как решить задачу элегантно?

перечитал, вроде все понятно.:)

Аватар пользователя Alex Bacart Alex Bacart 26 июля 2011 в 11:52

Так. Начнем по порядку.
Насколько я понял Отдел - это такой тип материала, к которому через CCK привязываются новости и сотрудники. Поправь, если не прав.

"otmoroz" wrote:
Я думаю, что нужно создать вьюху типа "Термины таксономии". В ней 15 дисплеев с типом "Страница". Это даст мне адреса типа "dept/it" и нормальные ссылки в меню.

Делаем одну вьюху с одним дисплеем "Страница". В пути пишем "dept/%". Добавляем аргумент (со вьюхами давно не работал плотно, мог и подзабыть чего), "Материал ID", в настройках аргумента:
Если аргумента нет - скрывать представление.
Настройки проверки - разрешить только строковые аргументы.
В поля добавлям то, что надо, сохраняем.
Меню создавать будем не вьюхой (она не может создавать меню с путями типа "dept/%"), а обычным путем, заходим в меню, добавить пункт, делаем 15 пунктов на разные отделы, заменяя % на названия отделов.
Таким образом получим всего одну вьюху, показывающую по 15 разным адресам разные данные.

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 12:45

нет, не так. Отделы - это термины таксономии, у которых есть подтермины, по которым распиханы материалы.

Соответственно при создании новости или другого материалы мы выбираем термин и материал как бы становится материалом отдела. Пользователи отдела - это те юзеры, у которых выбрана одноименная роль "отдел ИТ" и т.д.
"Материал ID", в настройках аргумента: это значит нужно создать ноду с алиасами отделов?

Делаем одну вьюху с одним дисплеем "Страница". Какого типа Вьюха? Если отделы - это не материалы? Хотя знаешь, может мне переделать, сделать отделы материалами, заглавными страницами книги?

Аватар пользователя Alex Bacart Alex Bacart 26 июля 2011 в 12:54

Даа.. как вспоминаю 6-ку, так руки трясутся, нечеловеческие трудности по связыванию пользователей, материалов и таксономии. У тебя проект уже в эксплуатации или только начинаешь? Если начинаешь, бросай 6-ку и ставь семерку - там все из коробки.

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 12:57

не, на семерке не работает главное: ldap-авторизация + я свой дизайн под шестерку уже сделал, все готово, кроме этого. Ладно, спасибо за помощь, может как-то попроще намучу...

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 13:06

их темизировать сложнее, вместо списка юзеров вывести квадратики с фотками и несколькими полями профиля.

Аватар пользователя q2_faith q2_faith 26 июля 2011 в 13:09

"otmoroz" wrote:
их темизировать сложнее, вместо списка юзеров вывести квадратики с фотками и несколькими полями профиля.

так вроде через вьюшку можно это вывести

Аватар пользователя Alex Bacart Alex Bacart 26 июля 2011 в 13:33

"q2_faith" wrote:
ну) в настройках поля можно указать через какую вьюшку выводить)

Это как? Что-то не помню я такой настройки в CCK поле.

Аватар пользователя Alex Bacart Alex Bacart 26 июля 2011 в 14:03

"q2_faith" wrote:
документация

Знаком ) кстати неплохой туториал.
"q2_faith" wrote:
в настройках поля можно указать через какую вьюшку выводить)

Ты имел ввиду настройки поля во вьюхе? Я подумал, что в типе материала )

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 14:19

в документации там написано как использовать референсы в качестве условий, это мы умеем)) а вот модуль интересный, спасибо! а как в настройках поля вьювс выставлять? у меня такого нет вроде...

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 14:21

Дополнительно - Пользователи, которые можно ссылаться (View)

The list of user that can be referenced can be based on a "Views module" view but no appropriate views were found.
Note:

Only views that have fields will work for this purpose.
This will discard the "Referenceable Roles" and "Referenceable Status" settings above. Use the view's "filters" section instead.
Use the view's "fields" section to display additional informations about candidate users on user creation/edition form.
Use the view's "sort criteria" section to determine the order in which candidate users will be displayed.

это означает что у меня просто нет вьювс такого типа?

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 14:34

блин да! да! даааа!!!!!

создаем вьюху нужно типа, в настройках подходящего сск поля выбираем ее и все!!!

опа... не работает, ща посмотрим...

Аватар пользователя q2_faith q2_faith 26 июля 2011 в 14:50

"otmoroz" wrote:
оставайся, вдруг Рустам устанет))

уже устал)
давно я с этим разбирался) и выбрал views_attach вместо nodereference
но в вашем случае я бы их использовал вместе, nodereference для связи, views_attach для вывода