自定义页面GET请求上的Drupal清理URL

时间:2010-04-14 17:59:59

标签: php drupal drupal-6 get clean-urls

我有一个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会有相同的结果吗? (类似于在视图中使用参数)

3 个答案:

答案 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中提供的参数轻松完成。