Block visibility by vocabulary
This snippet should be added in a block under "block visibility". "Show if the following PHP code returns TRUE" should be selected.
It is designed to display the block if the node has a term that belongs to a given vocabulary (specified in the top of the code). It will also show the block on a term page if that term belongs to the given vocabulary. An additional page can be nominated if desired.
The $vid and $page should be adjusted as follows:
$vid = the vocabulary id eg 11
$page = another page that you specify for the block is display on. eg 'drupal'
This is a combination of snippets from this page on drupal:
http://drupal.org/node/69076
I will write this up as a blog post to explain everything in detail at a later date.
// This snippet returns TRUE if the node, term page or other page we are // currently viewing is tagged with a term which belongs // to the 'desired_vocab' and we are not in edit mode (arg(2)). $vid = 11; // the vocabulary ID you're interested in $page = 'drupal'; // and/or a page $match = FALSE; //first check if the node is in the vocab 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 == $vid) { //return TRUE; $match = TRUE; } } } } // if above does not match true then check if this is a term page that belongs to the vocab if($match!=TRUE){ if (arg(0) == 'taxonomy' && arg(1) == 'term') { $str_tids = arg(2); $terms = taxonomy_get_tree($vid); foreach ( $terms as $term ) { $items[] = $term->tid; } $terms = taxonomy_terms_parse_string($str_tids); //browse each value foreach ($terms['tids'] as $k => $v) { if (in_array($v, $items)) { $match = TRUE; } } }else{ //finally check is this is the specific page declared in $page if(strstr($_SERVER['REQUEST_URI'], $page)){ $match = TRUE; } } } return $match;
Comments
Learn how to write custom Drupal modules
Does Drupal module development make your head explode and drive you crazy?
Why not learn from someone who has paved the way instead?
Sign up to Master Drupal 7 Module Development.
I am
Hi There for some reason this brings up error when used in a block of taxonomy terms. arg2 fails
Post new comment