Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 使用自定义条件搜索_Drupal_Drupal 7_Drupal Search - Fatal编程技术网

Drupal 使用自定义条件搜索

Drupal 使用自定义条件搜索,drupal,drupal-7,drupal-search,Drupal,Drupal 7,Drupal Search,如何向默认搜索模块添加条件 我想在节点中添加一个名为“允许搜索”的复选框字段,未选中的项目将不会显示在搜索结果中 这似乎是我的解决方案,但我无法让它发挥作用钩子搜索执行()未执行 您能解释一下为什么会发生这种情况吗?您需要首先在admin/config/search/settings上选择您的模块,并可能在“活动搜索模块”中取消选择节点模块。如果您的模块没有在那里被选中,您的钩子将不会被调用 至于调用一个钩子和不调用一个钩子的原因,由执行的代码(从中调用以构建搜索菜单的函数)首先调用hook\

如何向默认搜索模块添加条件

我想在节点中添加一个名为“允许搜索”的复选框字段,未选中的项目将不会显示在搜索结果中

这似乎是我的解决方案,但我无法让它发挥作用<代码>钩子搜索执行()未执行


您能解释一下为什么会发生这种情况吗?

您需要首先在admin/config/search/settings上选择您的模块,并可能在“活动搜索模块”中取消选择节点模块。如果您的模块没有在那里被选中,您的钩子将不会被调用

至于调用一个钩子和不调用一个钩子的原因,由执行的代码(从中调用以构建搜索菜单的函数)首先调用
hook\u search\u info()
的每个实现,然后检查已启用搜索集成的模块。由于您的模块未启用搜索集成,因此永远不会调用模块的
hook\u search\u 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));

您确实将“hook\u search\u execute”中的“hook”更改为您的模块名称,不是吗?当我提交搜索时,只有hook\u search\u info()运行,而不是hook\u search\u execute()。非常感谢!这就是我的解决方案!