使用Drupal 7&#39的hook_page_build从模块渲染.tpl.php

时间:2016-07-27 03:03:20

标签: drupal drupal-7

我有一个模块foo,我已经实施了foo_page_build。我想使用此函数将一些内容添加到page_top区域。我很难有以下几点:

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

这有效但现在我想加载.tpl.php并将其用作要呈现的内容。我如何在Drupal 7中做到这一点?另外,如果这是一个错误的钩子来实现我应该使用什么呢?

1 个答案:

答案 0 :(得分:0)

如果你想在一个位置(区域)总是实现内容(甚至是动态内容),那么

hook_page_build很不错。

但也许在你的情况下,使用Block API更容易为你的模块定义一个自定义块,它将打印你想要的区域。然后,您将能够管理哪些用户在哪个区域中的页面......

之后,要加载自定义php模板,您必须:

1 /使用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 /调用theme()函数(在Drupal API中查找)并使用它在page_top元素的'#markup'属性中返回的内容。

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

.tpl.php文件将放在foo模块的子文件夹'templates'中:/foo/templates/block-foo.tpl.php 并且您将能够在主题文件夹中覆盖它。