현재 허용되는 답변 의 두 번째 방법 은 D7에서 가장 깨끗합니다. 첫 번째 답변 :
if ($node = menu_get_object()) {
// Get the nid
$nid = $node->nid;
}
시각적으로 만 깨끗합니다. 실제로, menu_get_object()
많은 코드를 호출하고 있으며 예기치 않은 오류가 발생할 수 있습니다. hook_node_grants()
함수 내에서 사용 하고 PHP 치명적인 오류가 발생했습니다.
'256'의 최대 함수 중첩 수준에 도달하여 중단되었습니다!
설명은 https://drupal.stackexchange.com/a/69232/9158에 있습니다.
알 수없는 무한 루프
menu_get_object()
는 Drupal이 현재 로그인 한 사용자에게 노드에 대한 액세스 권한이 있는지 확인하여 구현이
hook_node_grants()
다시 호출되고 호출 menu_get_object()
이 발생하여 구현이 hook_node_grants()
다시 호출되게하므로 발생합니다. ...
이것은 두 번째 방법을 사용하여 해결되었습니다.
if (arg(0) == 'node' && is_numeric(arg(1))) {
// Get the nid
$nid = arg(1);
// Load the node if you need to
$node = node_load($nid);
}