Кажется, вы также можете использовать аргумент загрузчика с подстановочными знаками .
Если вы поместите % node в путь, он автоматически вызовет node_load () и обратный вызов страницы apps_view_node () получит полностью загруженный объект узла.
/**
* Implementation of hook_menu.
*/
function apps_menu() {
$items = array();
// With this menu callback, apps_view_node() will receive a node object, instead of an integer.
$items['apps/%node/view'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'apps_view_node_obj',
// 1 is the node object, 2 is 'view'.
'page arguments' => array(1, 2),
// Tells the load callback function, node_load(), what part of the URL to load, in this case the literal number 1.
'load arguments' => array(1),
);
// With this menu callback, apps_view_node() will receive an integer.
$items['apps/%/edit'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'apps_view_node_int',
'page arguments' => array(1),
);
return $items;
}
/**
* Custom node view function.
* @param StdClass $node
* Fully loaded Drupal node object.
*/
function apps_view_node_obj($node) {
// Do something with the $node object.
$node->title = "Foo";
$node->body = "Bar";
node_save($node);
}
/**
* Custom node view function.
* @param int $id
* Node id.
*/
function apps_view_node_int($id) {
// Because we are receiving an id, we must manually load the node object.
$node = node_load($id);
$node->title = "Hello";
$node->body = "World";
node_save($node);
}
Ссылка на документацию hook_menu .