我有一个drupal页面(内容类型页面),它应该使用干净的URL接受GET值。
我使用php代码输入格式将以下代码放在页面正文中。
<?php
$uid = $_GET['uid'];
$user = user_load($uid);
print $user->name;
?>
现在,以下链接http://www.example.com/mypath/?uid=5会显示用户5的名称。大。
我的问题是:这可以使用干净的网址完成,以便转到http://www.example.com/mypath/5会有相同的结果吗? (类似于在视图中使用参数)
答案 0 :(得分:2)
您可以使用模块中的hook_menu
在菜单系统中执行您所要求的操作,但无法创建别名,其中一部分是名称。整个别名是一个名称,因此您无法从中提取信息。使用hook_menu
即可:
function my_module_menu() {
$items = array();
$items['path/%user'] = array(
'title' => 'Title',
'page callback' => 'callback',
'page arguments' => array(1),
'access callback' => '...',
'access arguments' => array(...),
);
return $items;
}
然后在你的回调函数中,你将在与uid对应的路径中得到值或参数1(实际上,由于%user
,它将是一个加载的用户对象)。
答案 1 :(得分:2)
是。使用arg()而不是$ _GET
请记住,arg()默认使用$ _GET ['q'],因此在返回结果之前有效地转换别名。因此,您尝试访问的参数可能位于其他位置。
例如,路径myalias / 5可能会转换为分类法/术语/ 5。在这种情况下,arg(2)是5。
有关Drupal arg()函数的更多信息,请参阅http://api.drupal.org/api/function/arg/6
答案 2 :(得分:0)
如果使用Views来组合这些页面,可以通过将UID作为URL中提供的参数轻松完成。