Views, CCK Node reference, аргументы?

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

Аватар пользователя citizenerased citizenerased 21 июня 2009 в 21:30

Люди, помогите разобраться...

Есть нод типа "Фильм", есть нод типа "Ссылка" (гланое предназначениеи содержание - ссылка на файл фильма; содержит ССК-поля, в том числе и поле типа Node reference, посылающееся на соответствующий фильм). Например, есть фильм "Матрица". К нему создается нод типа Ссылка со ссылкой на файл с фильмом на файлообменнике (CCK LInk field) и посыланием на нод фильма (CCK Text).

Мне нужно выводить на странице фильма ноды с ссылками на данный фильм, то есть те, которые референсят данный нод фильма. Я создал view, выводящий ленту нодов типа Ссылка с полями в блок. Насколько я понимаю, нужно указать аргумент, при котором будет выполняться мое требование - выводить ноды с ссылкой на фильм только на странице фильма. Но какой? Я перерыл весь Drupal.org, но ответ не нашел. Помогите!

Комментарии

Аватар пользователя citizenerased citizenerased 23 июня 2009 в 20:31

Евгений, все проще, чем я думал! И не нужно устанавливать дополнительные модули. Модуль Nodereference URL Widget хоть и автоматизирует добавление view в тело нода, непосредственно сам view не видим в ноде. Да еще этот Jeff Eatonзаставляет нас использовать два модуля одновременно для показа view в ноде - еще и Views Attach. И понятно почему - он же автор обоих! Ну а CSS Injector совсем уже для новичков.

Все, что надо было сделать - добавить аргумент в настройках view. Вот как:
- жмем "+" в блоке Arguments
- выбираем поле, на которое посылается через CCK Node reference из нода, который мы хотим показывать в view
- выбираем Provide default argumentв списке опций Action to take if argument is not present:
- выбираем Node ID from URL в списке Default argument type:
- опционально выбираем Validator > Node и указываем тип нода, nid которого нужно доставать из URL
- выбираем Argument type: Node ID
- жмем Update и сохраняем view

Потом нужно добавить такой вот сниппет в node.tpl.php или node-[тип].tpl.php (если хотите кастомизировать страницу типа нода, у меня это node-movie.tpl.php)%

<?php
        print views_embed_view([название вашего view], $display_id = 'default');
?>

Все.

Аватар пользователя citizenerased citizenerased 22 июня 2009 в 17:25

Спасибо, Евгений! Помогло на 95% Smile Сделал все как указано - на странице Edit view внизу в просмотре Live preview все работает, а вот в ноде как не показывалось так и не показывается...

В любом случае, спасибо за наводку! Буду думать.

Аватар пользователя Antoniy Antoniy 8 августа 2009 в 12:16

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