В Drupal есть система для создания динамических страниц, это то, что происходит, когда вы просматриваете узел или пользователя. У вас есть несколько вариантов, но все это происходит в hook_menu .
function modulename_menu() {
$items = array();
$items['users/%user/points'] = array(
'page callback' => callback, // the function to call
'page arguments' => array(1), // The argument to pass, 1 = %user, which will be a user object.
...
);
$items['users/%/points'] = array(...);
$items['users/points'] = array(...);
}
В первом примере вы используете систему загрузки Drupal. Drupal вызовет user_load для индекса аргумента в 1, если он найдет пользователя, который будет доступен вместо фактического аргумента (идентификатора пользователя). Если пользователь не найден, будет возвращено 404.
Во втором примере разрешен любой аргумент, что означает, что вы получите страницу, если попытаетесь получить доступ к user/my-little-pony/points
.
В третьем примере используется, чтобы показать, что Drupal допускает дополнительные аргументы. Поэтому, если вы хотите получить доступ к user/points/pony
, вы получите страницу user/points
с дополнительными аргументами, которые можно использовать, если ваша функция обратного вызова позволяет это.
Не забудьте также установить какой-либо контроль доступа. Вы можете определить пользовательские функции, чтобы определить, должен ли пользователь иметь доступ, использовать систему меню drupal и требовать разрешения, например access content
.
Готовый код:
/**
* Implementation of hook_menu().
*/
function example_menu() {
$items = array();
$items['user/%/points'] = array(
'title' => 'Page title here',
'description' => 'Description here, mostly used for admin pages',
'page callback' => 'example_callback',
'page arguments' => array(1)
'access arguments' => array('access content'),
);
return $items;
}
example_callback($arg) {
return t('The arg is @arg', array('@arg' => $arg));
}
Это нужно будет перейти в example.module, и вам нужно будет создать файл example.info. Вы можете изменить пример на любой модуль, который вы создали.