我想在我的“主链接”菜单中输出内置的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”模板文件应用于我的程序化渲染块?
答案 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>';