【问题标题】:Drupal clean urls on custom page GET request自定义页面 GET 请求上的 Drupal 清理 url
【发布时间】:2010-04-14 17:59:59
【问题描述】:

我有一个 drupal 页面(内容类型页面),它应该使用干净的 url 接受 GET 值。

我使用php代码输入格式将以下代码放入页面正文中。

<?php
  $uid = $_GET['uid'];
  $user = user_load($uid);
  print $user->name;
?>

现在,以下链接http://www.example.com/mypath/?uid=5 会显示用户 5 的姓名。伟大的。

我的问题是:这可以使用干净的 url 来完成,这样转到 http://www.example.com/mypath/5 有相同的结果吗? (类似于在视图中使用参数)

【问题讨论】:

  • 使用 example.com 作为示例网址

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


【解决方案1】:

您可以在模块中使用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,它将是一个加载的用户对象)。

【讨论】:

    【解决方案2】:

    是的。使用 arg() 而不是 $_GET

    请记住,arg() 默认使用 $_GET['q'],因此在返回结果之前有效地转换了别名。因此,您尝试访问的参数可能位于另一个位置。

    例如,路径 myalias/5 可能会转换为 taxonomy/term/5。在这种情况下,arg(2) 为 5。

    有关 Drupal arg() 函数的更多信息,请参阅http://api.drupal.org/api/function/arg/6

    【讨论】:

    • 好主意。但是,api.drupal.org/api/function/arg/6 指出,使用 arg() 的可读性不如 googletorp 建议的菜单回调。我会尝试两种方法,看看哪种方法效果最好。
    【解决方案3】:

    如果您使用视图来组装这些页面,则可以通过将 UID 作为 URL 中提供的参数为您轻松完成该部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多