Để giải thích câu trả lời của Nikhil Mohan, bạn có thể triển khai template_preprocess_html()
bên trong tệp template.php của chủ đề. Đọc tài liệu về Ghi đè đầu ra theo chủ đề để hiểu những điều cơ bản về những gì đang diễn ra ở đây.
Trong hàm này, bạn có quyền truy cập vào biến $vars['classes_array']
chứa danh sách các lớp sẽ được áp dụng cho <body>
thẻ HTML trên trang.
Thật không may, thông tin về vị trí của trang hiện tại trong menu không có sẵn ngay lập tức. Bạn có thể sử dụng menu_get_item()
và sau đó menu_get_ancestors()
để có được thông tin này, nhưng đó là rất nhiều khả năng xử lý cho một cái gì đó mà chúng ta có thể có được với cách tiếp cận simpiler.
Giả sử bạn đang sử dụng mô-đun pathauto để tự động tạo các đường dẫn ngữ nghĩa cho các trang nội dung của bạn dựa trên đường dẫn menu (nghĩa là trang Công viên chủ đề Melbourne của bạn sẽ có đường dẫn 'melbourne / theme_parks'), bạn có thể sử dụng đường dẫn của trang để tạo các lớp bạn đang tìm:
function THEMENAME_preprocess_html(&$vars) {
$path = drupal_get_path_alias();
$aliases = explode('/', $path);
foreach($aliases as $alias) {
$vars['classes_array'][] = drupal_clean_css_identifier($alias);
}
}
Đó là nó. Bây giờ Drupal sẽ xem xét bí danh đường dẫn của trang hiện tại và thêm một lớp vào <body>
thẻ cho mỗi đoạn của bí danh đường dẫn.
static
bộ đệm tại thời điểm đó, vì vậy hầu như không có phí.