编辑
这里的基本问题是“何时将$op参数定义为'search'"?
我正在尝试在hook_search()的实现中创建一个自定义搜索。我一直在查看Drupal文档中的方法:http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6
我知道该方法正在运行,因为我可以将一个die('killed inside of implementation of hook_search()')插入函数的顶部并查看输出。
在下面的代码中,脚本永远不会被杀死,这样我就可以看到输出search caught inside of my_search()。这使我相信,开关语句的“搜索”案例永远不会启动。有人知道我可能会去哪吗?
/**
* Implementation of hook_search()
*/
function my_search($op = 'search', $keys = NULL) {
switch($op)
{
case 'search':
die('search caught inside of my_search()');
break;
}
}发布于 2011-06-20 21:00:42
首先要做的是。
假设您的模块名为“my”,尝试转到URL /search/my/随便什么--您可能会看到访问禁止页面(假设您的代码中除了您在问题中粘贴的内容之外没有其他内容)。
这是因为当搜索模块用$op = 'name‘调用钩子时不返回任何内容(参见search.module中的_search_menu() )。您需要返回“定义使用此模块搜索的项目类型的翻译名称('content‘、'users’、.)”--请参阅http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6和禁用的访问。
一旦完成,搜索将再次调用您的钩子(实际上,有相当多的调用,例如,您可以在钩子中使用drupal_set_message( $op )来查看它们的全部),其中一个调用也将带有$op= " search“(来自search.module中的search_data() )。
https://stackoverflow.com/questions/6416824
复制相似问题