У нас есть:
- Ноды типа А и В
- Словарь таксономии С с привязкой к типам А и Б
- В к нодам А и В в обязательном порядке прикреплён 1 термин из С
Нужна вьюха, которая, получая nid ноды типа А выведет список всех нод типа В, у которых указанный термин из словаря С, такой-же, как и у ноды А с указанным nid
Эта вьюха используется для заполнения выпадающего списка в редакторе ноды типа А.
Для чего это надо:
При редактировании ноды А юзер указывает термин таксономии посредством стандартного виджета (выпадающего списка) и во втором виджете (тоже выпадающий список) должен выбрать ноду В. Ограничение в том что для выбора должны быть доступны только ноды В у которых термин таксономии совпадает с тем, что указан для А.
Если подошёл не с той стороны, пните в нужном направлении.
Комментарии
Попытался заюзать Conditional Fields, но он не воспринимает в качестве управляющих полей таксономию.
Есть вопрос по полю CCK Node - там как параметр вьюхе можно передавать %nid. А какие ещё параметры можно передать? В доке не нашёл.
Нашёл пример "от обратного", но не могу придумать как переделать.
Если добавить аргумент "Таксономия: ID термина" и выбрать "Предоставить аргумент по/PHP код" и написать код:
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms_by_vocabulary($node, 3);
if($term = array_shift($terms)) {
return $term->tid;
}
}
То работает отбор по термину таксономии. Но как этот самый термин получить из ноды?
Разобрался с отбором по аргументам, но он почему-то не работает на страницах редактирования.
У меня получился код:
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms_by_vocabulary($node, 1);
if($term = array_shift($terms)) {
return $term->tid;
}
}
Получается для на УРЛе /node/nid/edit отбор идёт по nid.
При проверке вьюхи всё работает как надо, но на странице правки ноды выпадающий список показывается пустым.
Кто с этим сталкивался? Как cck_node передаёт вьюхе агрумент? Как его получить во вьюхе через php?