2011-01-16 12 views
1

In einem Thema, das ich erstelle, möchte ich Blöcke an Orten platzieren, die sich von den Standardeinstellungen unterscheiden. ZB platzieren Sie den Suchblock in der Kopfzeile.Erfordern und platzieren Sie einen Block in einem drupal Thema?

Gibt es eine Möglichkeit, dies von einem Thema aus zu tun: Sie können einen Block benötigen und ihn irgendwo platzieren?

Antwort

0

Es widerspricht der Idee der konfigurierbaren Blöcke, aber nichtsdestoweniger ist es möglich: Sie müssen leere Blockvorlagen für alle außer der zulässigen Region erstellen. Oder Sie stellen die Theme-Funktion für genau diesen Block zur Verfügung und überschreiben nichts für verbotene Bereiche.

1

Das Themensystem von Drupal ist flexibel genug, um genau diesen Teil der Seite in eine Region zu verwandeln, in der Ihr Block erscheinen soll. Dazu müssen Sie die Region der .info Datei des Themas hinzufügen, wie unter Assigning contents to regions, z. B. regions[foobar] = Foobar beschrieben. Dies wird eine neue Variable $page['foobar'] für Ihre page.tpl.php verfügbar machen. Sie können den Inhalt dann der Region auf die gleiche Weise zuweisen wie bei Drupal builtin Regionen.

Wenn Sie dieses System umgehen und einen Block Ad-hoc anzeigen möchten, sehen Sie sich an, wie _block_render_blocks Blöcke sperrt.

+0

Es scheint, dass das Skript 'if' Aussage abgesehen von nur überprüft, ob dies die richtige Seite ist, und rendert, was verfügbar ist. Also, wenn es kein Menü gibt, dann gibt es nichts, was ich rendern kann – TheLQ

+0

@TheLQ: Es tut mir leid, ich habe gerade bemerkt, dass ich mit der Prozedur für Drupal 4.7 und 5.x verbunden bin. Ich habe meine Antwort mit dem richtigen Verfahren für Drupal 6.x und 7.x aktualisiert. – Oswald

+0

Das ist nicht wirklich das, wonach ich suche. Ich möchte standardmäßig die Suchleiste in der Kopfzeile haben. Der Drupal Powered By Block im unteren Bereich. Die Benutzerverwaltung blockiert sich in einer anderen Region. Etc. '_block_render_block' sieht aus wie eine interne Funktion zum Rendern, was ich nicht aufrufen möchte. Gibt es eine Möglichkeit, diese Standardeinstellungen festzulegen? – TheLQ

0

In D7 können Sie eine Platzhalter-Region in Ihre Themes-.info-Datei einfügen, den Cache löschen und Ihren Block dort platzieren, um den Inhalt der Region auszugeben.

print render(block_get_blocks_by_region('region_name')); 
Verwandte Themen