Când utilizatorii încearcă să acceseze o cale care nu există, de exemplu /node/5/random-text-2, Drupal va afișa pagina părinte. Mai exact, va afișa pagina pentru prima dintre următoarele căi care există. (% este caracterul wildcard, folosit pentru căile definite din module.)
- nod/5/%
- node/%/random-text-2
- nodul/%/%
- nod/5
- nodul/%
- nodul
În mod normal, Drupal ar afișa pagina pentru node/5 (care este considerată pagina părinte pentru node/5/random-text-2), dar când un modul definește o pagină pentru node/%/%, Drupal va afișa în schimb acea pagină .
Un modul ar putea adăuga un hook_meniu()
implementare similară celei următoare.
funcția mymodule_menu() {
$items['node/%/%'] = matrice(
'page callback' => 'mymodule_page',
);
returnează $articole;
}
mymodule_page()
ar putea afișa doar o eroare 404 sau 403.
funcția mymodule_page() {
// Returnează o eroare 404.
returnează MENU_NOT_FOUND;
}
Acest lucru ar împiedica Drupal să afișeze o pagină de nod de fiecare dată când utilizatorii accesează o cale precum node/[node-id]/[random-string], unde șirul aleatoriu nu se potrivește cu niciun meniu definit din niciun modul. (De exemplu, dacă [șir aleatoriu] este egal cu Editați | ×, Drupal va afișa formularul de editare a nodului.)
Returnarea unei erori 403 este mai simplă. Folosind următoarea implementare a cârligului, un modul ar obține asta fără a scrie mult cod (cu excepția eventuală a unei funcții goale pentru apelul invers al paginii).
funcția mymodule_menu() {
$items['node/%/%'] = matrice(
'page callback' => 'mymodule_page',
'acces apel invers' => FALSE,
);
returnează $articole;
}