我想在我的"primary links"菜单中输出内置的Drupal "search"块,它是由template.php中的主题函数framework_primary_links()构建的。菜单最终应该看起来像StackOverflow菜单:[chat | meta | about | faq | __search__],所以"search"字段在菜单中
- 本身。
所以我不只是打印搜索块在一个区域内像普通的。
当前我正在做:
$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"模板文件应用于我的编程呈现块?
Doing drupal_get_form('search_block_form')
将返回核心搜索表单的标记,并且它已经通过了搜索块表单模板,因此您可以将代码更改为:
<?php
$output .= '<li id="searchContainer">' . drupal_get_form('search_block_form') . '</li>';
我找到了一个解决方案—手动设置块对象上的"module"answers"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>';