Настройка видимости блока

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

Аватар пользователя Legat Legat 2 июля 2011 в 0:42

Здравствуйте.

Возник вот такой вопрос, как скрыть блок если определенный термин из словаря возращает значение 1 (true). То есть есть тип материала и два словаря voc1 и voc2, которые классифицируют этот тип материала, если термин из voc2 отдает какое либо значение отличное от "нет" - блок должен быть скрыт. Подскажите, как это php кодом в настройке блока сделать или ссылкой поделитесь, если есть такая)

Спасибо за внимание.

Комментарии

Аватар пользователя Legat Legat 2 июля 2011 в 19:02

загвоздка в том что на одном типе материала висят два словаря и поэтому этот модуль не подходит, надо скрыть блок, если словарь дает какой-нибудь термин отличный от нулевого значения, а не показать. остальная инфа не под d7(.

Аватар пользователя Legat Legat 2 июля 2011 в 20:35

мда, а какая страница в выдаче то?)
может это модуль context или pathuto (не подходят которые)?

нашел вот такое

<?php
  $term_id_to_trigger_show_block = 109;
  $object = get_menu_item();

  if (isset($object->taxonomy)) {
    foreach($object->taxonomy as $term) {
      if ($term->tid == $term_id_to_trigger_show_block) {
         return TRUE;
      }
    }
  }
?>

но как его настроить от обратного без 500 ошибки я не знаю

а ведь просил просто ссылкой поделиться... эх

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 2 июля 2011 в 21:25

Вряд ли в гугле найдется прямо твой пример, но идейно близких не может не быть.

Смотри первую ссылку в выдаче Гугла -- http://drupal.org/node/69076 -- How to control Block visibility by Vocabulary ID.

Там код для Drupal 4.7.x, Drupal 5.x и не совсем 1-в-1 что тебе требуется, но не может быть гигантских проблем портировать его на 7 и под твою задачу. Правда. )

Скопипастчу код для упрощения...

<?php
  
// This snippet returns TRUE if the node we are
  // currently viewing is tagged with a term which belongs
  // to the 'desired_vocab' and we are not in edit mode (arg(2)).

  // put here the vocabulary ID you're interested in
  

$desired_vocab 1;

  if ( 

arg(0) == 'node' and is_numeric(arg(1)) and arg(2) == FALSE ) {
    
// Yes, we're viewing a node in view mode.

    

$node node_load(arg(1)); // cached
    // If the term does not exist we're done
    
if (is_array($node->taxonomy)) {
      foreach (
$node->taxonomy as $term) {
        if (
$term->vid == $desired_vocab) {
          return 
TRUE;
        }
      }
    }
  }
  return 
FALSE;
?>