Khi người dùng cố gắng truy cập vào một đường dẫn không tồn tại, ví dụ như /node/5/random-text-2, Drupal sẽ hiển thị trang mẹ. Chính xác hơn, nó sẽ hiển thị trang cho đường dẫn đầu tiên tồn tại sau đây. (% là ký tự đại diện, được sử dụng cho các đường dẫn được xác định từ các mô-đun.)
- nút/5/%
- nút/%/random-text-2
- nút/%/%
- nút/5
- nút/%
- nút
Thông thường, Drupal sẽ hiển thị trang cho nút/5 (được coi là trang mẹ cho nút/5/random-text-2), nhưng khi một mô-đun xác định một trang cho nút/%/%, Drupal sẽ hiển thị trang đó thay vào đó .
Một mô-đun có thể thêm một hook_menu()
thực hiện tương tự như sau.
hàm mymodule_menu() {
$items['node/%/%'] = mảng(
'gọi lại trang' => 'mymodule_page',
);
trả lại các mặt hàng $;
}
mymodule_page()
chỉ có thể hiển thị lỗi 404 hoặc 403.
hàm mymodule_page() {
// Trả về lỗi 404.
trả về MENU_NOT_FOUND;
}
Điều này sẽ ngăn Drupal hiển thị trang nút mỗi khi người dùng truy cập một đường dẫn như nút/[node-id]/[random-string], trong đó chuỗi ngẫu nhiên không khớp với bất kỳ menu nào được xác định từ bất kỳ mô-đun nào. (Ví dụ, nếu [chuỗi ngẫu nhiên] bằng chỉnh sửa, Drupal sẽ hiển thị biểu mẫu chỉnh sửa nút.)
Trả về lỗi 403 đơn giản hơn. Sử dụng triển khai hook sau đây, một mô-đun sẽ nhận được điều đó mà không cần viết nhiều mã (ngoại trừ cuối cùng là một chức năng trống cho gọi lại trang).
hàm mymodule_menu() {
$items['node/%/%'] = mảng(
'gọi lại trang' => 'mymodule_page',
'gọi lại truy cập' => FALSE,
);
trả lại các mặt hàng $;
}