Node reference

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

Аватар пользователя terryprogetto terryprogetto 2 августа 2008 в 23:28

Вообщем есть два типа контента: Тип1 и Тип2. В Тип1 есть дополнительное поле (CCK) node_reference в котором указываються привязаные документа типа Тип2.
Хочу при просмотре полного документа типа Тип1 вывести внизу блок с тизерами или заголовками документов типа Тип2, на которые ссылаеться этот документ.
Понимаю что тут надо юзать views, но вот именно в нем разобраться и не могу.
Очень надеюсь на помощь, обьясните пожалуйста как это сделать. С пхп знаком хорошо, вот с друпалом недавно начал только разбираться.

Комментарии

Аватар пользователя dfaker dfaker 3 августа 2008 в 2:29

Создаем файл темизации пол CCK (на основе content-field.tpl.php) в папке шаблона (на основе content-field.tpl.php, и самого егот тоже в папку шаблона, тут подробнее из modules\cck\theme\) - получаем темизацию полей CCK. пишем:

print('<pre>');
print_r($items);
print('</pre>');

Видим там массив данных привязанных через node_reference нодов, далее имея [nid] можно делать много чего, к примеру вызвать вьюс с аргументом = [nid] и тут же его вывести:

$output = views_embed_view(имя вьюса, $display_id = 'default', $node->nid);
print '<div class="a_views">';
print($output);
print '</div>';

Думаю возможны другие варианты без тяжелой артиллерии Smile
тут еще немного http://drupal.ru/node/17028

PS не обратил внимание на версию, это пробовалось на шестерки

Аватар пользователя terryprogetto terryprogetto 3 августа 2008 в 12:55

2: Слава Юдаков Спасибо, смотрел я этот модуль, непонятный он мне.
2: dfaker $output = views_embed_view(имя вьюса, $display_id = 'default', $node->nid); вот тут непонятка.. Ясно что надо создать вьюху, но: в ней провайд блок или пейдж? а что еще добавить?
Пробовал сделать так: создаю вьюху с блоком, в ней фильтр по node_reference и аргумент node_reference. И все равно не работает оно. Но тут еще одно: аргумента nid нету, так как используеться модуль pathauto , и урл имеет вид типа content/tochesdelelpathauto ...... помогите пожалуйста разобраться.

Аватар пользователя dfaker dfaker 3 августа 2008 в 14:37

views_embed_view для 5ой версии кажись нет, замена тут http://drupal.org/node/124446
Есть еще модуль viewreference, возможно то что нужно
Добавить во вьюс нужно поля которые показывать ну и все остальное по желанию.
Кстати метод тупого тыканья по кнопкам в целях изучения функционала модулей (вьюс) в друпале хорошо работает Smile

Аватар пользователя terryprogetto terryprogetto 3 августа 2008 в 15:15

2: dfaker
Спс, метод тыка точно работает. Вообщем ошибку я понял свою. Надо наоборот было поле референс добавить до типа Тип2, а не так как я сделал. потом все елементарно (в случае с блоком) вьюха, блок, аргумент референс и всего делов то!)
Но тут еще вопрос возникает: как этот блок с вьюсом вывести в node-type1.tpl.php ...

Аватар пользователя terryprogetto terryprogetto 3 августа 2008 в 16:50

UPD ---------------------------------------------
Не все так просто. Вообщем кое-как разобрался с аргументами. Все работает, при условии что отключен pathauto. Когда ссылки вида node/NID - то все гуд, влючаем фильтр по референс - и блок отображает только те ноды, которые привязаны к текущей.
А вот что делать когда через УРЛ не передаеться NID? Урл имеет вид content/nazvaniestatti . Тут уже как я понимаю надо использовать Argument Code. Тоесть вручную в аргументы добавить NID. И собственно вопрос: как имея алиас, узнать NID ?

Аватар пользователя dfaker dfaker 3 августа 2008 в 19:14

В первом своем ответе как раз писал как брать nid не из адреса (ели аргумент не передано то в views еть возможноть как раз брать иго из пути - щас похоже у вас так и работает), а из массива значений поля node reference. Тут ридми файл есть modules\cck\theme\ с пояснением темизации отдельных CCK полей, так вот можно заменить вывод простой ссылки на связанную ноду на что угодно, в нашем случае на вывод вьюшки с аргументом = nid