使用URL别名或Pathauto模块时,请注意使用当前Drupal路径的组件时的细微差别。
在某些情况下,您可能不想使用arg()。实际上,Drupal API文档实际上建议避免在可能的情况下使用此功能,因为结果代码难以阅读。
考虑一下kiamlaluno提出的以下示例:
function mymodule_custom_theme() {
if (arg(0) == 'event2011') {
return 'custom_theme_machine_name';
}
}
在Drupal 7中,如果一个节点具有的别名event2011,使用arg(0)
将返回node
作为第一URL分量,而不是别名。
print_r(arg(0));
Array
(
[0] => node
[1] => 150
)
相反,如果你需要工作,别名有几种方法可以得到当前URL在Drupal,包括menu_get_object()
,current_path()
,request_path()
和其他人。
这是一个经过重做的示例,该示例使用别名作为切换主题的触发器:
function mymodule_custom_theme() {
$current_page_path = explode('/', request_path());
if ($current_page_path[0] == 'event2011') {
return 'custom_theme_machine_name';
}
}