2016-07-27 9 views
0

Ich habe ein Modul foo und ich habe implementiert foo_page_build. Ich möchte diese Funktion verwenden, um einige Inhalte der Region page_top voranzustellen. So hart habe ich folgendes:Render .tpl.php von Modul mit Drupal 7's hook_page_build

function foo_page_build(&$page) { 
    $page['page_top']['foo'] = array(
    '#markup' => 'Hello, World!', 
); 
} 

Das funktioniert aber jetzt möchte ich einen .tpl.php laden und nutzen, als den Inhalt zu machen. Wie würde ich das in Drupal 7 machen? Wenn dies der falsche Haken ist, um zu implementieren, was sollte ich stattdessen verwenden?

Antwort

0

hook_page_build ist nett, wenn Sie immer Inhalt (sogar dynamische) an einer Position (Region) implementieren möchten.

Aber vielleicht ist es in Ihrem Fall einfacher, die Block API zu verwenden, um einen benutzerdefinierten Block für Ihr Modul zu definieren, der das druckt, was Sie in einer Region wollen. Sie werden dann in der Lage sein, auf Hexe Seiten zu verwalten, in Hexen Region, für Hexe Benutzer, ...

Nachdem eine benutzerdefinierten PHP-Vorlage zu laden, müssen Sie:

1/ein Thema definieren für Ihre Modul, hook_theme()

/** 
* Implements hook_theme(). 
*/ 
function foo_theme($existing, $type, $theme, $path) { 
    return array(
    'foo_block' => array(
     'template' => 'templates/block-foo', 
     'variables' => array(
     'options' => NULL, 
    ), 
    ), 
); 
} 

2/Rufen sie das Thema() Funktion (Suchen sie es in der Drupal API) und verwenden sie mit, was es in der '#markup' Attribut Ihres nach_oben Element zurückkehrt.

'#markup' => theme('foo_block', array('options' => $options)); 

Die .tpl.php Datei wird im Unterordner ‚Vorlagen‘ Ihre foo Modul platziert werden: es /foo/templates/block-foo.tpl.php Und Sie werden in der Lage zu überschreiben in deinem Themenordner.