Фильтрация и аргументация для вывода в блок

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

Аватар пользователя BaradatiCooper BaradatiCooper 10 июня 2010 в 17:09

прошу помочь с отображением данных в блоке. блоки созданы через views и в них показаны все существующие на сайте аудио и видео материалы. так вот нужно, чтобы во время показа определенных нод выводились только те медиафайлы которые с ней связаны по терму или еще как-нибудь. не могу с этим разобраться. например у меня есть фильм (название фильма=термин словаря) и вместе с его нодой мне нужно вывести в блоки его саундтрек и трейлеры. как это реализовать?

Комментарии

Аватар пользователя Vladimir_VVV Vladimir_VVV 10 июня 2010 в 22:59

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

<?php
if(arg(0)=='node' && is_numeric(arg(1)))
{
$nid=arg(1);// номер ноды
}
?>

а передача во вьюс аргумента - дело техники.

И так:

  1. добавляете в аргументы для вьюс "Таксономия: ID термина"
  2. в "Action to take if argument is not present:" указываете "Provide default argument"
  3. в "Default argument type:" выбираете "PHP Code"
  4. в поле "PHP argument code: " пишете !внимание обязательно !!без!! пэхепешных скобок <?php ?> - они "внутри" уже стоят!
    if(arg(0)=='node' && is_numeric(arg(1)))
    {
    return implode('+',db_fetch_array(db_query("SELECT tid FROM {term_node} WHERE nid=%d",arg(1))));
    }
  5. и внизу ставите галочку на "Разрешить несколько терминов в аргументе."

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

Аватар пользователя BaradatiCooper BaradatiCooper 11 июня 2010 в 18:07

Мне помогло следующее

1.Create View

2.Add Argument "Taxonomy: Term ID"

3.Argument configuration:
-Provide default argument
-PHP Code

Add this code:

<?php$node = node_load(arg(1));
if($node) {
foreach($node->taxonomy as $term) { $terms[] = $term->tid; }
return implode('+',$terms);
} else { return; }?>

-Check ON: Allow multiple terms per argument.
-Check ON: Reduce duplicates

4.Add Display: Block

5.Add Field: Title
6.Optional — Add Filter: Content Type (whatever type you'd like to filter)

Нашел здесь http://drupal.org/node/65375