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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.