Ghi đè html.tpl.php cho mỗi loại nút


17

Trong tệp template.php cho chủ đề của tôi, tôi đã thử như sau:

function media_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) 
  {
      // If the node type is "blog" the template suggestion will be "html--blog.tpl.php".
       $vars['theme_hook_suggestions'][] = 'html__'.$vars['node']->type;

      // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
       $vars['theme_hook_suggestions'][] = 'page__'.$vars['node']->type;

      // If the node id is "33" the template suggestion will be "page--33.tpl.php".
       $vars['theme_hook_suggestions'][] = 'page__'.$vars['node']->nid;    
  }

    //Create page suggestion for first part of url-alias
    $url_alias = drupal_get_path_alias($_GET['q']);
    $parts = explode('/', $url_alias);

    $vars['theme_hook_suggestions'][] = 'page__'.$parts[0].'__alias';  
}

Điều này hoạt động cho trang - gậtetype.tpl.php, nhưng không phải cho html -

Bạn có thể hỏi tại sao bạn cần ghi đè mẫu html.tpl.php cho mỗi loại nút. Đó là bởi vì có đánh dấu mà tôi không muốn bao gồm cho nút cụ thể này.

Câu trả lời:


28

Tên của chức năng tiền xử lý dựa trên chủ đề / mẫu đang được xử lý. Để xử lý trước tệp html.tpl.php bạn sẽ cần sử dụng hook_preprocess_html():

function media_preprocess_html(&$vars) {
  $node = menu_get_object();

  if ($node && $node->nid) {
    $vars['theme_hook_suggestions'][] = 'html__' . $node->type;
  }
}

3

Cách tiếp cận @Clive rất thông minh.

Cũng lưu ý khi trong tệp html.tpl.php, bạn có thể đọc loại nội dung bạn đang xử lý từ $variables['classes']đó, sẽ cung cấp cho bạn một cái gì đó nhưhtml not-front not-logged-in no-sidebars page-node page-node- page-node-5638 node-type-CONTENT-TYPE-NAME

Cùng với đó, bạn có thể thay đổi cách tệp html.tpl.php hoạt động với điều này:

if (strpos($variables['classes'],'node-type-YOUR-CONTENT-TYPE') == true ) {
  echo 'Do something special  for YOUR-CONTENT-TYPE ';
}
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.