Чистые URL Drupal на пользовательской странице GET запрос - PullRequest
2 голосов
/ 14 апреля 2010

У меня есть страница drupal (страница типа контента), которая должна принимать значения GET, используя чистые URL.

Я поместил следующий код в тело страницы, используя формат ввода кода 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 имел такой же результат? (Аналогично использованию аргументов в представлениях)

Ответы [ 3 ]

2 голосов
/ 15 апреля 2010

Да.Используйте arg () вместо $ _GET

Имейте в виду, что arg () по умолчанию использует $ _GET ['q'] и поэтому эффективно переводит псевдоним перед возвратом результата.Таким образом, параметр, к которому вы пытаетесь получить доступ, может находиться в другой позиции.

Например, путь myalias / 5 может переводиться в таксономию / term / 5.В этом случае arg (2) равно 5.

Для получения дополнительной информации о функции Drupal arg () см. http://api.drupal.org/api/function/arg/6

2 голосов
/ 14 апреля 2010

Вы можете делать то, что вы просите в системе меню, используя 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;
}

Тогда в вашей функции обратного вызова у вас будет значение или аргумент 1 в пути, который соответствует uid (в действительности это будет загруженный пользовательский объект, потому что%user).

0 голосов
/ 14 апреля 2010

Если вы используете Views для сборки этих страниц, эту часть можно легко выполнить, указав UID в качестве аргумента в URL.

...