0

Block Region in Node Template

Verfasst am 29. November, 2009. Abgelegt unter Drupal

Gerade ein aktuelles Drupal Problem für Yazio.de gelöst. Und zwar wollte ich eine Block Region in einer bestimmten node.tpl.php einbinden. Wenn man nun in der template.php eine neue Region hinzufügt und diese dann in der node.tpl.php anspricht und ausgeben möchte passiert nichts. Grund dafür ist, dass Drupal die Ausgabe von Block Regionen nur in der page.tpl.php erlaubt. Was also tun?

Es gibt eine Lösungsmöglichkeit mit der man einen ganz bestimmten Block in die node.tpl.php einbinden kann und zwar mit diesem Code:

<?php
$block = module_invoke(‘block’ ,’block’, ‘view’, 3);
print $block['content'];
?>

Die 3 im besagten Code muss dann nur noch mit der ID des Blocks ersetzt werden, den ihr anzeigen möchtet. Außerdem muss im besagten Block als Eingabeformat “PHP” ausgewählt sein!

Allerdings war dieses Verfahren nicht das richtige für mich, ich möchte weiterhin in der node.tpl.php eine Block Region definieren, so dass ich dann später im Backend der Block Region je nach URL einen unterschiedlichen Block anzeigen lassen kann. Mit folgender Lösung konnte ich dies dann ermöglichen:

Die template.php muss wie folgt ergänzt / editiert werden:

<?php
function DEINTHEMENAME_regions() {
return array(
‘right’ => t(‘right sidebar’),
‘content_top’ => t(‘content top’),
‘content_bottom’ => t(‘content bottom’),
‘aktuelles_content’ => t(‘Aktuelles Content’),
‘footer’ => t(‘footer’)
);
}

function  _phptemplate_variables($hook, $vars) {
switch($hook) {
case ‘node’ :
if ($vars['page'] /* the equivolent of $page in node.tpl.php */ != 0) {
$vars['aktuelles_content']= theme_blocks(‘aktuelles_content’); /* Hier die neue Blockregion eintragen */
}
break;
}
return $vars;
}
?>

In Eurer node.tpl.php dann einfach noch folgenden Code einfügen:

<div><?php print $aktuelles_content; ?></div>

Habt viel Spass damit! ;) Bei Fragen = Kommentar schreiben!

Jetzt weitersagen: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • TwitThis
  • MisterWong
  • del.icio.us
  • Digg
  • Webnews
  • Y!GG
  • Facebook
  • Google Bookmarks
  • SEOigg
  • StumbleUpon
  • Technorati
  • Reddit

Kommentar schreiben