Ситуация. Есть конкретный тип ноды. Каждая нода имеет по одному термину таксономии из 3 разных словарей. Создано 3 меню, каждое на основе этих словарей.
При клике на пункты открывается список нод имеющих данный термин, и к каждой ноде добавляется название этого словаря. 3 словаря – 3 варианта отображения.
Пользуя views, переопределяю вывод нод.
Можно по «Имеет идентификатор термина таксономии», но тогда переопределяться вывод всех нод по всем терминам на сайте. А это не гуд.
Можно использовать «/taxonomy/term/%» и контекст «по конкретному словарю», но тогда, будет выводиться список только первый созданный views, а все остальные, созданные аналогичным методом, но по другим словарям отражаться не будут.
При этом в предпросмотре views выводятся прекрасно все варианты.
Подскажите, как решить этот момент?
Комментарии
<?php
$view->set_display($display_id);
function my_module_views_pre_view(&$view, &$display_id, &$args){
if($view->name == 'my_view'){
if(is_numeric($args[0])){//проверяем действительно ли аргумент(у нас он один, тот что %) является числом
$term = taxonomy_term_load($args[0]);
switch(
$term->vid){case 1: $display_id = 'display1';break;
case 3: $display_id = 'somedisplay';break;
default: $display_id = 'default_display';
}
//если у Вас окажется словарь, на который нет своего дисплея, то будет выведен default_display, машинные имена дисплеев и ид словарей подставляйте свои.
}
}
}
//my_module - имя Вашего модуля и my_view - машинное имя Вашей вьюхи, указанное при её создании, подставляем свои значения
?>
Taxonomy Views Integrator или Panels
Всем спасибо. Использовала Taxonomy Display. Вот тут ссылка, http://www.drupal.ru/node/67320 читать коммент от ilami.