如何向默认搜索模块添加条件?
我想向节点添加一个名为“允许搜索”的复选框字段,未选中的项目不会显示在搜索结果中。
扩展 Drupal 7 搜索似乎是我的解决方案,但我无法使其工作;hook_search_execute()
不执行。
你能解释为什么会这样吗?
如何向默认搜索模块添加条件?
我想向节点添加一个名为“允许搜索”的复选框字段,未选中的项目不会显示在搜索结果中。
扩展 Drupal 7 搜索似乎是我的解决方案,但我无法使其工作;hook_search_execute()
不执行。
你能解释为什么会这样吗?
您需要首先在 admin/config/search/settings 上选择您的模块,并可能在“Active search modules”中取消选择 Node 模块。如果没有在那里选择您的模块,则不会调用您的钩子。
至于为什么一个钩子被调用,一个钩子不被调用,search_get_info()(从search_menu()调用来构建搜索菜单的函数)执行的代码首先调用了每个实现hook_search_info()
,然后它检查了哪些模块搜索集成已启用。由于您的模块没有启用搜索集成,因此hook_search_execute()
您的模块将永远不会被调用。
if (!isset($search_hooks)) {
foreach (module_implements('search_info') as $module) {
$search_hooks[$module] = call_user_func($module . '_search_info');
// Use module name as the default value.
$search_hooks[$module] += array(
'title' => $module,
'path' => $module,
);
// Include the module name itself in the array.
$search_hooks[$module]['module'] = $module;
}
}
if ($all) {
return $search_hooks;
}
$active = variable_get('search_active_modules', array('node', 'user'));
return array_intersect_key($search_hooks, array_flip($active));