Опосредованная связка

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

Аватар пользователя retuam retuam 23 октября 2009 в 15:29

Всем привет. Кто-нибудь сталкивался со следующей проблемой.
Есть материал типа "Курорт" и материал типа "Отель". Соответственно "Отель" через nodereference связан с "Курортом". Материалов типа "Курорт" скажем 1000, а типа "Отель" 10 000. Необходимо организовать вывод страниц (либо с помощью views, либо с помощью node + associated node), каждая из которых отображает список материала типа "Отель" с необходимыми CCK полями для "Отеля", по каждому курорту.
Очевидно, что таких страниц будет не более 1000.
До сих пор использую решение через Associated nodes, собственно создаю дополнительный тип материала "Отели курорта" (1000 шт.), который через nodereference привязан к курорту, и при отображении данного типа материалов вывожу блок связанных нод, где критерием выступает ссылка на материал типа "Курорт".
Однако, с помощью модуля Associated nodes невозможно вывести требуемые CCK поля для материала типа "Отель", кроме заголовка "Отеля", а во-вторых всегда надо помнить, что при добавлении материала "Курорт" необходимо добавлять материал "Отели курорта".
Можно конечно перебрать всю таблицу "Отелей" в базе данных и заполнить дополнительное поле - ссылку на соответствующий "Курорт"... Но, хотелось бы иметь другой вариант.

Комментарии

Аватар пользователя retuam retuam 24 октября 2009 в 17:34

Элементарно и не получается. Подскажите, пожалуйста, если знаете как это сделать.
Поскольку для того, чтобы отображались "Отели" надо передавать в качестве аргумента nid "Курорта", на который они ссылаются, а я хочу, чтобы они появлялись на ноде "Отели курорта", а к данному типу материалов нет непосредственного nodereference из отелей, и nid соответственно передается другой.

Аватар пользователя Dan Dan 24 октября 2009 в 23:09

Ну вообще-то ваши отели курорта - лишняя сущность, от которой надо избавиться. Есть отели, есть курорты. Отели курорта должны быть "виртуальными" и создаваться "по-ходу дела".
Но если надо именно так сделать...
У вас же есть привязка "Отель курорта" к "Курорту"? node_reference? Передайте этот референс (токеном) в views_attach.

Аватар пользователя retuam retuam 25 октября 2009 в 2:48

Да, с тем, что "Отели курорта" это лишняя сущностью я согласен. Но, все же...
Я организовал "Node content display", в котором показывают необходимые поля материала "Отель", в "Node content settings" указано:
"Node types": Тип материала "Отели курорта";
"Build modes": Full node;
"Arguments": token - (Referenced node ID поле node_reference "Отеля курорта" к "Курорту")
"Show title": Нет.
А что же мне выбирать в качестве аргумента Views, если я выбираю node_reference к "Курорту" (Provide default argument/Node ID from URL), то соответственно список "Отелей" на ноде для "Отели курорта" не появляется.
Что же тогда за аргумент должен быть, и к чему тогда "токен"?

Аватар пользователя retuam retuam 25 октября 2009 в 17:00

Извините, вопрос, снят...
Добавил токен (Referenced node ID поле node_reference "Отеля курорта" к "Курорту") в "Wildcard", естественно... совсем упустил из виду. Все работает как надо.
Спасибо, Dan.

P.S. Кст., после того как все получилось, решил перейти на "виртуальные" материалы, через views с аргументами "%".

Аватар пользователя Dan Dan 26 октября 2009 в 0:03

"retuam" wrote:
P.S. Кст., после того как все получилось, решил перейти на "виртуальные" материалы, через views с аргументами "%".

Это правильно. А если аргумент отсутствует - сделайте summary - пользователю будет удобно.