Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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
Php 何处实施钩子搜索信息&_执行以强制搜索结果使用语言过滤器?_Php_Drupal_Drupal 7_Drupal Theming_Drupal Hooks - Fatal编程技术网

Php 何处实施钩子搜索信息&_执行以强制搜索结果使用语言过滤器?

Php 何处实施钩子搜索信息&_执行以强制搜索结果使用语言过滤器?,php,drupal,drupal-7,drupal-theming,drupal-hooks,Php,Drupal,Drupal 7,Drupal Theming,Drupal Hooks,目前,我正试图将“当前语言”强制添加到传递到node\u search\u execute的选项列表中。不幸的是,我很难找到放置函数挂钩的正确位置。也许我错过了一些简单的东西 对于如何实现这一点,我已经将自己归结为两种基本的可能性 (1)执行钩住搜索信息和钩住搜索执行 在本例中,我将从node\u search\u execute复制代码,并在其中添加一行,将“and Language='$current\u Language'”添加到搜索查询中 在我的主题文件夹中,我尝试添加了函数mythim

目前,我正试图将“当前语言”强制添加到传递到node\u search\u execute的选项列表中。不幸的是,我很难找到放置函数挂钩的正确位置。也许我错过了一些简单的东西

对于如何实现这一点,我已经将自己归结为两种基本的可能性

(1)执行
钩住搜索信息
钩住搜索执行

在本例中,我将从
node\u search\u execute
复制代码,并在其中添加一行,将“and Language='$current\u Language'”添加到搜索查询中

在我的主题文件夹中,我尝试添加了函数
mythimename\u search\u info
mythimename\u search\u execute
——但它们不执行。跑步的时候

 function mythemename_search_info() {
    return array(
        'title' => 'Content', 
        'path' => 'node', 
        'conditions_callback' => 'mythemename_search_execute',
    );
 }

 function mythemename_search_execute($keys = NULL, $conditions = NULL){
    return array();
 }
在这个例子中,我只希望得到“无结果”,这样我就可以确保覆盖正在运行,然后我将实现完整的搜索功能

(2)实现
hook\u search\u preprocess()

我还尝试了
mythimename\u search\u preprocess()

但同样,我没有得到预期的结果(一个白色的页面上有一点文字)

所以无论我在做什么,这些搜索钩子都不会被发现


少了什么?它们可能必须在模块中吗?

是的,它们确实需要在模块中,大多数钩子只为模块而不是主题调用。最显著的例外是主题/预处理挂钩,这两种挂钩都被调用


如果您在创建自定义模块非常简单之前还没有创建过,那么这里有一个非常宝贵的指南。

我在自定义模块中使用了
hook\u search\u info()
hook\u search\u execute()
hook\u search\u access()
。将“hook”替换为模块名。我能够用
hook\u search\u info()
的“title”创建标签。 并在hook\u search\u execute中传递结果数组。这样,结果就开始显示在搜索页面的选项卡下。因此,创建一个新的模块肯定会有助于包含一个新的搜索选项卡

 function mythemename_search_preprocess($text) {
   // Do processing on $text
    echo $text; die();
    $text = "french";
   return $text;
 }