Чтобы сделать выборку нод, на которые ссылается другая выборка нод надо...

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

Аватар пользователя Dimm Dimm 7 июня 2008 в 0:37

Например термин таксономии ---> ноды фирмы --node_reference--> ноды адреса фирм.
Нужно вывести список адресов (B) для всех фирм Angel текущего термина таксономии.

Чтобы сделать выборку нод (B), на которые ссылается другая выборка нод Angel надо:
1. Сделать views A
2. Установить модуль http://drupal.org/project/ReferencedByFilter + патч http://drupal.org/node/267655
3. Добавить в аргументы "Node Reference: Views on node reference" и выбрать в списке нужное поле node_reference
4. В "Argument Handling Code" c помощью views A сформировать строку $arg[0]="nid1+nid2+nid3+nid4"

$current_view->args[0]=11;
$current_view->args[1]='firm';
$view1 = views_get_view('taxonomy_node');                      
$items=views_build_view('items', $view1, $current_view->args, false, false);
$i=0;
$str='';
foreach ($items[items] as $item) {
$str=$str . $item->nid.'+';
$i=$i+1;
}
$args[0]=substr($str,0,-1);
$view->is_cacheable = 0;

Комментарии

Аватар пользователя Гость Гость (не проверено) 7 июня 2008 в 18:59

Н-да, вот вредное влияние Views -- то, чт целесообразно сделать кастомным модулем, делают Viewsами с чудовищным оверхелдом и потом мучительно сие кэшируют.

Аватар пользователя Dimm Dimm 7 июня 2008 в 21:37

Свой модуль надо писать, тестировать и отлаживать. Трудозатраты 30 часов.
А тут написал 12 строчек кода - и готово. Трудозатраты 3 часа.
Views - уже оттестировано. + Уже есть встроенное во Views кэширование.

Аватар пользователя talgar talgar 9 июля 2008 в 15:04

тоже столкнулся с похожей задачей:
есть нод ПРОЕКТ, в нему можно добалять нод ЗАДАЧА (идет ссылка на родительскую задау или проект). К ЗАДАЧЕ тоже можно цеплять ЗАДАЧУ. В итоге получаем вложенное дерево, примерно такого вида:
проект1->задача1->задача2->задача3
проект1->задача4->задача5
задача4->задача6

Необходимо для страницы проекта вывести вид со всеми вложенными задачами для данного проекта. Можно ли решить предложенным методом эту проблему? или есть другие варианты?