Drupal: Block zwischen Content und Kommentaren

Published in

Die meisten Drupal Themes verfügen bereits über die Block Regionen Content-Top und/oder Content-Bottom. Allerdings hat vor allem die Region Content- Bottom einen gewaltigen Nachteil: Sie wird nur direkt unter dem Inhalt der jeweiligen Seite angezeigt, wenn keine User- Kommentare vorhanden sind. Kommentieren die Besucher dagegen, rutscht der Block Content- Bottom unter die Kommentare, da diese ebenfalls zum Content-Node gehören. Dieser Umstand ist sehr nachteilig, wenn beispielsweise direkt nach dem Text sidewide Ads geschaltet werden sollen. Unterhalb des Kommentar- Stranges machen diese natürlich wenig Sinn.

Mit ein paar Zeilen Code ist es jedoch sehr einfach, eine Region für einen Block zwischen redaktionellem Seiten- Inhalt und User- Kommentaren zu definieren und darstellen zu lassen. Diese Anleitung ist für Drupal 6.x. Die notwendigen Dateien befinden sich in der Regel alle im Ordner deines Themes. Los geht's....

1. Region in der namedeinesthemes.info definieren

In der .info Datei deines Themes fügst du eine neue Region hinzu:

regions[left_bottom] = Left sidebar Bottom
regions[right] = Right sidebar
regions[featured_video] = Featured Video
regions[right_bottom] = Right Bottom
regions[content_top] = Content Top
regions[feature_block2] = Feature Block 2
regions[feature_block3] = Feature Block 3
regions[footer] = Footer
regions[neue_region] = Neue Region

Wenn du im Verwaltungsbereich einmal auf das Theme klickst und es neu lädst oder die Theme- Registry leerst, findest du jetzt in den Drop- Down Menüs der Block Verwaltung die Neue Region

2. Funktion der template.php hinzufügen

Diese kleine Funktion fügst du jetzt einfach am Ende deiner template.php Datei hinzu:

function phptemplate_preprocess_node(&$vars) {
$vars['neue_region'] = theme('blocks', 'neue_region');
}

3. Die Ausgabe in der node.tpl.php

Nun brauchst du nur noch in der node.tpl.php (kann auch node-story.tpl.php oder ähnlich heißen) die Anweisung zur Ausgabe im Template zufügen. Dazu suchst du in der Datei die Stelle, wo der Inhalt der Variable "content" ausgegeben wird und fügst direkt darunter diese Anweisung hinzu:

<?php if (!$teaser) {
  print $neue_region;
} ?>

So sieht das dann aus:

<div class="content clear-block">
    <?php print $content ?>
  </div>
  <?php if (!$teaser) {
  print $neue_region;
} ?>

Wenn du möchtest, dass der Block auch in den Teasern der Startseite und Kategorien mit angezeigt wird, schreibst du an gleicher Stelle in der node.tpl.php nur

<?php print $neue_region ?>

So, dass war's schon. Jetzt kannst du wie üblich im Verwaltungsbereich Blöcke anlegen und deine neue Region zuweisen.

Ach ja, wenn du in den Block Adsense Code oder andere Scripte einfügst, solltest du PHP als Eingabeformat wählen. Andernfalls werden die Anzeigen uU. nicht richtig angezeigt. Wenn du PHP nicht in der Auswahl unter Eingabeformat findest, muss es in der Modulverwaltung erst noch aktiviert werden. Du findest es bei den Core- Modulen.

Suuuuuuper geil, danke. Endlich funktioniert es bei mir. Habe bis jetz immer an einer Variante von drupal.org rumgefummlet. Hat aber nich hingehauen. Dein Vorschlag hat keine zehn Minuten gedauert und auf Anhieb geklappt.

Yes, it worx. In meinem Template gabs gar keine Region "Content-Bottom". Hab die nach deiner Anleitung angelegt und klappt prima. So muss ich die Sachen nicht mehr mit Hand einfügen

Die Anleitung geht für D6 einwandfrei. Ich suche grade vergeblich nach einer für D7? Hast du da Erfahrung?

Hallo Sven,
da kann ich leider nicht weiterhelfen, da ich (noch) keine D7 Installation habe.

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilen und Absätze werden automatisch erzeugt.

Weitere Informationen über Formatierungsoptionen

CAPTCHA
Diese Frage ist als Spamschutz nötig
1 + 11 =
Lösen Sie dieses einfache mathematische Problem und geben Sie das Ergebnis ein. Für 1 + 3 geben Sie z.B. 4 ein.

Startseite Back To Top