Управление видимостью блоков (меню) на основе словарей таксономии

Прислано: Andrey_71

ср, 10/03/2010 - 06:33

Прошу подсказать решение такой задачи: необходимо управлять видимостью (отображением)двух взаимноисключающих меню на одном и том же месте (в левой области сайта). Меню организованы на основе двух словарей таксономии и необходимо, чтобы меню соотвествующее одному словарю было видно в момент когда просматривается нода термин которой принадлежит этому же словарю.
Конечно можно решить эту проблему через управление видимостью меню в блоке меню (по URL'ам), но не хочется для этого отдельно заводить специально названные типы нод и т.д. Решение должно быть элегантно - на основе применения словарей таксономии, т.е. открыта нода, термин которой принадлежит одному словарю - значит в этот момент видно меню соотвествующее этому словарю.
Поэтому, подскажите: существует ли модуль для 6-го Друпала, который моржет решить эту задачу полностью или необходимо будет решать ее иным путем?
Заранее благодарю всех за помощь.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано a.nanda в чт, 11/03/2010 - 08:12.

Показывать блок для терминов 1, 2, 6:


<?php
$desired_terms 
= array(126);
if ( 
arg(0) == 'node' and is_numeric(arg(1)) ) {
    
$node node_load(arg(1));
   foreach (
$node->taxonomy as $term) {
        if (
in_array($term->tid$desired_terms)) {
            return 
TRUE;
        }
    }
}
return 
FALSE;
?>

Не показывать блок для терминов 1, 2, 6:


<?php
$desired_terms 
= array(126);
if ( 
arg(0) == 'node' and is_numeric(arg(1)) ) {
    
$node node_load(arg(1));
   foreach (
$node->taxonomy as $term) {
        if (
in_array($term->tid$desired_terms)) {
            return 
FALSE;
        }
    }
}
return 
TRUE;
?>

Взято с http://content-management-systems.info/node/297


Опубликовано Andrey_71 в ср, 17/03/2010 - 19:00.

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

<?php
$desired_terms 
= array(2526272829303132333435363738);
if ( 
arg(0) == 'node' and is_numeric(arg(1)) ) {
    
$node node_load(arg(1));
   foreach (
$node->taxonomy as $term) {
        if (
in_array($term->tid$desired_terms)) {
            return 
TRUE;
        }
    }
}

$desired_paths = array('подстрока/URL'a/пунктов/меню');
/** то есть все пункты этого меню имеют одинаковую подстроку
*/
if ($_GET['
q']) {
    $my_drupal_path = $_GET['
q'];
} else {
    $my_drupal_path = substr($_SERVER['
REQUEST_URI'], 1);
}
$my_path_alias = drupal_get_path_alias($my_drupal_path);
foreach ($desired_paths as $desired_path) {
    if (stristr($my_path_alias, $desired_path)) {
        return TRUE;
    }
}

return FALSE;
?>

Чтобы не появлялся блок при просмотре нод, с соотвествующими терминами, поменять местами TRUE и FALSE.


Опубликовано sozdatel в чт, 10/02/2011 - 05:44.

Спасибо пригодится!


Новое на сайте