Добрый день уважаемые форумчане!
Есть маленький вопросик:
Имеется словарь -- "ФИО" и два типа материалов -- "Новости" и "Персоны".
Оба эти типа имеют связь по термину со словарём "ФИО" (т.е. при добавление любого типа материала мы выбираем к какому термину словаря ФИО его отнести)
Материал "Новости" состоит из заголовка и содержимого.
Материал "персоны" состоит из заголовка, фото, и содержимого.
Так вот сам вопрос:
Нужно сделать такой вьювс чтобы в нём отображалось:
1. заголовок "Новости"
2. Фото из материала "Персоны"
3. Краткое собержимое материала "Персоны"
4. Краткое содержимое материала "Новости"
Т.е. по сути стоит задача, что бы при добавление новости и выводе её на главную, на главной выводилась новость с фото и краткой биографией той персоны к которой относится новость.
Заранее благодарен за конструктивную помощь
Комментарии
Дорогие друзья жду Вашей помощи и уповаю на ваш совет...
М-м-м... Наверное cck nodereference + views + темизация.
Создаём персоны с наполнением (фото и.п.)
Создаём новость с полем нодереференсе на персоны. и при создании новости привязываем к ней персону
Затем вювс. Для начала вювс для тизера новости views attach и цепляем тизер персоны к тизеру новости (или полями - это уже по желанию)
Теперь вювс для главной просто тизеры новостей собсно всё а дальше темизация и фантазия.
Это-то всё да, так можно сделать.
ТОлько тут такой момент: Зачем мне нодреференс и по 2 лишних поля в одной новоти (1-ое: словарь таксономии ФИО, 2-ое: нодреференс), если у меня уже есть связь через термин этого словаря ФИО.
Неужели нет такого варианта, что бы во вьювсе связать их через термин словаря ?
темизация типа материала новости.
можно например взять этот снипет http://content-management-systems.info/drupal/snippet/596 и немного подправить что бы в итоге получить материалы типа персоны для данного термина. ну и соответственно оформить.
Некропостинг, но вдруг кому пригодится мой опыт по связыванию двух типов материалов с одним и тем же термином таксономии:
Итак, есть словарь таксономии со списком стран. Есть два типа материалов - Страна и Видео, в обоих типах материалов есть поле таксономии (т.е. в материале "Страна" указывается термин, в материале "Видео" также указывается термин). Задача - подвязать к материалу с определенным термином видео с аналогичным термином.
Сперва я аналогично пошел методом nodereference && corresponding node reference, но спустя какое-то время дублирование одной и той же связи мне в разных местах меня утомило - по сути, приходится делать двойную работу. Тогда я решил организовать это средствами Views3. После некоторой возни с настройками у меня получилось примерно следующее:
Кратко объясню, что получилось:
1) я передал во Views NID (в моем случае это nid страницы страны).
2) я добавил в Relationships Содержимое: Taxonomy terms on node (чтобы получить список терминов), выставил "Require this relationship" и указал словарь таксономии.
3) Далее в Relationship я прикрутил Термин таксономии: Содержимое using Тег (в данном случае Тег - поле таксономии в типе содержимого "Видео"). На этом этапе я уже имею список материалов типа "Видео", имеющих тот же термин таксономии, что и родительская страница "Страна".
4) Теперь осталось только вытащить само видео из этого списка, поэтому в Fields я сделал выборку поля field_video из типа материала "Видео", указав в качестве Relationship Термин таксономии: Содержимое using Тег. Если не указать Relationship, то фокус не получится.
Дальше я прикрутил этот views к материалу через quick tabs, передал %1 - все заработало.
Вот, собственно, и все. Кстати, если надо будет встраивать youtube в 7-ку, то можно воспользоваться этой статьей - Embedded media field пока что на 7-ку не портирован, а вставка в лоб поля типа Multimedia asset не работает, тут понадобится особая, уличная магия, чтобы все заработало.
«Итак, есть словарь таксономии со списком стран. Есть два типа материалов - Страна и Видео, в обоих типах материалов есть поле таксономии (т.е. в материале "Страна" указывается термин, в материале "Видео" также указывается термин). Задача - подвязать к материалу с определенным термином видео с аналогичным термином.»
А если сделать по другому:
1.Фильтр по матерериалу типа "Видео"
2. Поле "Материал:Название"
3. Аргумент "Таксономия: ID термина". Тип аргумента по умолчанию - PHP-код:
<?php
//Проверка, что мы находимся в материале, но не на главной странице
if (arg(0) =='node' && is_numeric(arg(1)) && !drupal_is_front_page() )
[
//Загружаем ноду с номером из URL
$node=node_load(arg(1));
if ($node)
{
//Создаем массив из ID терминов таксономии, относящихся к данной ноде
foreach ($node->taxonomy as $term) {$terms[]=$term->tid;}
//Возвращаем список id терминов, разделенноых '+' (если их несколько)
if (count($terms)>0) {return implode('+',$terms);}
}
}
?>
Ну и естественно ставим проверки по словарю, выбираем тип аргумента и разрешаем несколько терминов в аргументе.
Вроде как все правильно, но ничего не выводит. Что не так я делаю?
Проблема возникает при использовании нескольких терминов в арагументе. Если указать, что будет 1 и убрать из кода implode, то по 1 термину все ок
<?php
//Проверка, что мы находимся в материале, но не на главной странице
if (arg(0) =='node' && is_numeric(arg(1)) && !drupal_is_front_page() )
[
//Загружаем ноду с номером из URL
$node=node_load(arg(1));
if ($node)
{
//Создаем массив из ID терминов таксономии, относящихся к данной ноде
foreach ($node->taxonomy as $term) {$terms[]=$term->tid;}
//Возвращаем список id терминов, разделенноых '+' (если их несколько)
if (count($terms)>0) {return $terms[1];}
}
} ?>
Получается views не может обработать несколько терминов в аргументе?