如何以编程方式构建,主题和显示Drupal块?

时间:2011-07-12 08:43:20

标签: php drupal drupal-6

我想在我的“主链接”菜单中输出内置的Drupal“搜索”块,该菜单由template.php中的主题函数framework_primary_links()构建。菜单应该看起来像StackOverflow菜单:[chat | meta |关于|常见问题| __search__],因此“搜索”字段位于菜单< ul>内。本身。

所以我不只是在正常区域内打印搜索块。

目前我在做:

$search_block = (object) module_invoke('search', 'block', 'view', 0);
$output .= '<li id="searchContainer">' . theme('block', $search_block) . '</li>';

但是Drupal正在应用“block.tpl.php”模板,而不是像我想要的那样应用“block-search.tpl.php”模板。

如何让Drupal将“block-search.tpl.php”模板文件应用于我的程序化渲染块?

2 个答案:

答案 0 :(得分:2)

执行drupal_get_form('search_block_form')将返回核心搜索表单的标记,并且它已经通过搜索块表单模板,因此您可以将代码更改为:

<?php
$output .= '<li id="searchContainer">' . drupal_get_form('search_block_form') . '</li>';

答案 1 :(得分:0)

我找到了一个解决方案 - 在块对象上手动设置“module”和“delta”:

$search_block = (object) module_invoke('search', 'block', 'view', 0);
$search_block->module = 'search';
$search_block->delta = 0;
$output .= '<li id="searchContainer">' . theme('block', $search_block) . '</li>';