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 1 Tag 23 Stunden
vor 2 Tagen 19 Stunden
vor 2 Tagen 20 Stunden
vor 2 Tagen 20 Stunden
vor 2 Tagen 22 Stunden
vor 3 Tagen 1 Stunde
vor 3 Tagen 2 Stunden
vor 3 Tagen 2 Stunden
vor 3 Tagen 3 Stunden
vor 3 Tagen 7 Stunden