Ich muss einige Regionen in der Vorlage html.tpl.php ausgeben, da sich diese nicht zwischen page.tpl.php und page-front.tpl.php ändern (um nur zwei zu nennen). Grundsätzlich möchte ich Codeduplizierungen vermeiden.
Es scheint jedoch nichts mit Regionen in html.tpl.php zu tun zu haben, und ich konnte mit drupal_get_region_content nichts abrufen (sowohl mit als auch ohne Parameter wird nur ein leeres Array zurückgegeben).
Ideen?
drupal_set_region_content()
den Regionsinhalt festgelegt?drupal_add_region_content()
aber ich sehe keinen Sinn darin: Ich setze den Inhalt von Regionen über die Blockadministrationsoberfläche.drupal_add_region_content()
.Antworten:
Ich habe so gelöst:
und dann könnte ich tun
quelle
drupal_get_region_content()
Gibt den Inhalt zurück, der bei früheren Aufrufen an festgelegtdrupal_add_region_content()
wurde, enthält jedoch nicht den Inhalt der Blöcke, die auf der Seite über block_page_build () gerendert werden .Wenn Sie im Drupal-Quellcode nach "drupal_add_region_content" suchen, werden Sie feststellen, dass die Funktion wie folgt aufgerufen wird:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Was Sie für die Blöcke auf der Verwaltungsseite festlegen, ist, in welchen Regionen die Blöcke gerendert werden, deren Inhalt jedoch nicht hinzugefügt wird
drupal_add_region_content()
. Tatsächlich dient keine der oben aufgeführten Funktionen (die einzigen Funktionen, die aufgerufen werdendrupal_add_region_content()
, mit Ausnahme des Codes zum Testen einer Drupal-Installation) zum Rendern / Hinzufügen des Blockinhalts.Wenn Sie die Blöcke in Ihrem eigenen Code rendern müssen, sollten Sie den in verwendeten Code überprüfen
block_page_build()
. Dies ist insbesondere der Code, der für Sie wahrscheinlich nützlicher ist:In den ersten beiden Zeilen wird überprüft, ob die angezeigte Seite nicht die Demoseite ist, auf der angezeigt wird, wo die Themenbereiche platziert sind.
Wenn Sie die Blöcke auf andere Weise rendern müssen, ist es wahrscheinlicher, dass Sie theme_block () in Ihrem Design überschreiben oder (noch wahrscheinlicher) eine benutzerdefinierte block.tpl.php-Vorlagendatei erstellen möchten. Eine andere Möglichkeit, die Art und Weise zu ändern, in der die Blöcke gerendert werden, besteht darin, eine Vorverarbeitungsfunktion für die Blöcke zu verwenden ( hook_preprocess_block () ).
quelle