Thay đổi mẫu dựa trên bí danh đường dẫn


6

Cách dễ nhất để chọn một mẫu dựa trên bí danh đường dẫn. Ví dụ: nếu tôi có các URL sau:

http://www.example.com/mydirectory/page1
http://www.example.com/mydirectory/page2
http://www.example.com/mydirectory/page3

Làm cách nào để tạo một mẫu cho tất cả các trang trong mydirectory ? Tôi cũng nên thêm rằng sử dụng loại nội dung để chủ đề các trang này không phải là một tùy chọn.

Câu trả lời:


21

Bạn có thể thêm một số logic trong hook_preprocess_page()triển khai kiểm tra bí danh và thêm đề xuất móc chủ đề nếu đường dẫn khớp, ví dụ:

function MYTHEME_preprocess_page(&$vars) {
  $alias_parts = explode('/', drupal_get_path_alias());

  if (count($alias_parts) && $alias_parts[0] == 'mydirectory') {
    $vars['theme_hook_suggestions'][] = 'page__mycustomtemplate';
  }
}

Sau đó, nếu bạn tạo một page--mycustomtemplate.tpl.phptệp trong chủ đề của mình và xóa bộ đệm, bất kỳ trang nào có bắt đầu bí danh mydirectory/sẽ sử dụng tệp mới đó thay vì tiêu chuẩn page.tpl.php.


4

Nó thực sự dễ dàng hơn việc sử dụng drupal_match_path () , đó là cách mô-đun khối hoạt động xem liệu một khối có được hiển thị trên một trang hay không:

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_match_path(drupal_get_path_alias(), 'mydirectory/*')) {
    $vars['theme_hook_suggestions'][] = 'page__mycustomtemplate';
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.