Eine Region auf Inhalt prüfen
Innerhalb der page.tpl.php kann man leicht prüfen, ob eine Region Inhalt hat, in dem man einfach prüft ob die Variable Inhalt hat.
Zum Beispiel:
<?php
if($left) {
// Tu was
}
?>
Diese Variablen sind allerdings noch leer, wenn man sie in einem Block, Node oder View prüfen will.
Zur Abhilfe habe ich Teile des block.module genommen und eine Funktion geschrieben, die in der template.php benutzt werden kann.
Diese Funktion benutzt den Namen einer Region als Parameter und gibt 1 zurück, wenn die Region leer ist und 0 wenn Daten vorhanden sind. Die Fuktion beachtet auch den aktuellen Pfad und die Sichtbarkeit von Blöcken.
<?php
function region_empty($test_region) {
/* Prüft ob eine Region Inhalt hat.
* Gibt 1 zurüvk, wenn die Region leer ist.
*/
$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']);
// Vergleiche den internen Alias des Pfades, soweit es ihn gibt.
$page_match = drupal_match_path($path, $node->pages);
if ($path != $_GET['q']) {
$page_match = $page_match || drupal_match_path($_GET['q'], $node->pages);
}
// Falles $block->visibility den Wert 0 hat, wird der Block
// auf allen Seiten angezeigt ausser auf denen in $block->pages.
// Falls der Wert 1 ist, wird der Block
// nur auf den Seiten angezeigt, die in $block->pages angegeben sind.
$page_match = !($node->visibility xor $page_match);
} else {
$page_match = drupal_eval($block->pages);
}
if (
$page_match)
$test_empty = 0;
}
}
return $test_empty;
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Tagen 8 Stunden
vor 4 Tagen 2 Stunden
vor 4 Tagen 3 Stunden
vor 4 Tagen 7 Stunden
vor 4 Tagen 15 Stunden
vor 6 Tagen 3 Stunden
vor 1 Woche 5 Stunden
vor 1 Woche 7 Stunden
vor 1 Woche 3 Tagen
vor 1 Woche 3 Tagen