2011-07-12 59 views
1

我想在我的“主链接”菜单中输出内置的Drupal“搜索”块,它由template.php中的主题函数framework_primary_links()构建。菜单最终应该看起来像StackOverflow菜单:[chat | meta |关于| faq | __search__],因此“搜索”字段位于菜单<ul>本身内。如何以编程方式构建,主题并显示Drupal块?

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

目前我正在做:

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

但Drupal是采用“block.tpl.php”模板而不是“块search.tpl.php”模板像我想它。

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

+0

这属于http://drupal.stackexchange.com/ –

回答

0

我找到了一个解决方案—手动设置块对象上的“模块”和“增量”:

$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>'; 
2

drupal_get_form('search_block_form')将返回为核心的搜索形式的标记,它会通过搜索块的形式已经走了模板,以便您可以更改您的代码:

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