Php 何处实施钩子搜索信息&_执行以强制搜索结果使用语言过滤器?
目前,我正试图将“当前语言”强制添加到传递到node\u search\u execute的选项列表中。不幸的是,我很难找到放置函数挂钩的正确位置。也许我错过了一些简单的东西 对于如何实现这一点,我已经将自己归结为两种基本的可能性 (1)执行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
复制代码,并在其中添加一行,将“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;
}