调用页面时,我想根据路径检查调用,我想使用一些参数将用户重定向到首页。我将在一个块中使用这些参数向访问者显示额外的信息。
我应该使用什么钩子,以便 drupal 必须做最少的不必要的工作?
1) template_preprocess_page函数是这里合适的钩子。
2)另一种选择是使用规则模块。
事件:Drupal 正在初始化(使用 hook_init) 条件:执行自定义 php 代码(检查路径参数) 动作:页面重定向,其他规则动作(例如消息)
我建议向用户显示 Drupal 消息而不是块。除非用户已登录并且数据库中确实存在块中显示的参数,否则您可以使用视图模块来创建该块。
这是一个规则的导出,如果分类术语页面显示属于词汇“4”,则重定向。将其导入您的规则以查看结果。
{ "rules_taxonomy_redirect_business" : {
"LABEL" : "Taxonomy redirect - Business",
"PLUGIN" : "reaction rule",
"TAGS" : [ "redirect", "taxonomy" ],
"REQUIRES" : [ "php", "rules" ],
"ON" : [ "init" ],
"IF" : [
{ "php_eval" : { "code" : "$check1 = (arg(0)==\u0027taxonomy\u0027)\u0026\u0026(arg(1)==\u0027term\u0027);\r\n$check2 = (arg(3)!=\u0027edit\u0027);\r\n\r\nif (arg(2)) {\r\n$tid = arg(2);\r\n$vid = db_query(\u0027SELECT vid FROM {taxonomy_term_data} WHERE tid = :tid\u0027, array(\u0027:tid\u0027 =\u003E $tid))-\u003EfetchField();\r\n$check3 = ($vid == \u00274\u0027);\r\n}\r\n\r\nreturn ($check1)\u0026\u0026($check2)\u0026\u0026($check3);" } }
],
"DO" : [
{ "redirect" : { "url" : "\u003C?php\r\n$tid = arg(2);\r\nreturn \u0027business?cat%5B%5D=\u0027 . $tid;\r\n?\u003E" } }
]
}
}