Vérifier si une région est occupée
Traduction de la page http://drupal.org/node/517696
publiée / actualisée le 11 Mars 2011 sur drupal.org
Lorsqu'on personnalise page.tpl.php, il est possible de vérifier si une région est vide, en vérifiant le contenu de la variable correspondante qui contient les contenus de la région.
Par exemple :
Drupal 6
<?php
if($left) {
// do something
}
?>Drupal 7
<?php
if($page['sidebar_first']) {
// do something
}
?>Cependant, les variables region n'ont pas été déclarées pour les gabarits au niveau bloc, node et view..
Pour régler cette question, j'ai adapté une partie du code de block.module pour créer une fonction qui peut être insérée dans le fichier template.php de votre thème (c'est l'auteur de l'article original qui parle, pas kolossaldrupal).
La fonction prend un paramètre (un nom de région), et renvoie 1 si la région est vide ou 0 si elle est occupée. La fonction tient compte du path en cours et des paramètres de visibilité des blocs.
<?php
function region_empty($test_region) {
/* Vérifie si une région est occupée
* renvoie 1 si elle est vide
*/
$test_empty = 1;
$result = db_query_range('SELECT n.pages, n.visibility FROM {blocks} n WHERE n.region="%s" AND n.theme="%s"', $test_region, $GLOBALS['theme'], 0, 10);
if (count($result) > 0) {
while ($node = db_fetch_object($result))
{
if ($node->visibility < 2) {
$path = drupal_get_path_alias($_GET['q']);
// Compare avec le chemin interne et l'alias de path (s'il y en a).
$page_match = drupal_match_path($path, $node->pages);
if ($path != $_GET['q']) {
$page_match = $page_match || drupal_match_path($_GET['q'], $node->pages);
}
// Lorsque $block->visibility a la valeur 0, le bloc est affiché sur
// toutes les pages sauf celles répertoriées dans $block->pages. Lorsque la valeur est à 1, il
// n'est affiché que dans les pages répertoriées dans $block->pages.
$page_match = !($node->visibility xor $page_match);
} else {
$page_match = drupal_eval($block->pages);
}
if ($page_match)
$test_empty = 0;
}
}
return $test_empty;
}
?>- Version imprimable
- 4849 lectures
-

Commentaires
Poster un nouveau commentaire