แทนที่ html.tpl.php ต่อชนิดโหนด


17

ในไฟล์ template.php ของฉันสำหรับชุดรูปแบบของฉันฉันได้ลองต่อไปนี้:

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';  
}

สิ่งนี้ใช้ได้กับหน้า - nodetype.tpl.php แต่ไม่ใช่สำหรับ html - nodetype.tpl.php

คุณอาจถามว่าเพราะเหตุใดคุณจึงต้องแทนที่แม่แบบ html.tpl.php ต่อประเภทโหนด เป็นเพราะมีมาร์กอัปที่ฉันไม่ต้องการรวมไว้สำหรับโหนดนี้โดยเฉพาะ

คำตอบ:


28

ชื่อของฟังก์ชั่น preprocess จะขึ้นอยู่กับธีม / แม่แบบที่กำลังประมวลผล ในการประมวลผลไฟล์ html.tpl.php ล่วงหน้าคุณจะต้องใช้hook_preprocess_html():

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

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

3

วิธีการของ @Clive นั้นฉลาดมาก

นอกจากนี้ควรจดบันทึกเมื่ออยู่ในไฟล์ html.tpl.php คุณสามารถอ่านประเภทเนื้อหาที่คุณติดต่อด้วย$variables['classes']ซึ่งจะให้สิ่งที่คุณต้องการhtml not-front not-logged-in no-sidebars page-node page-node- page-node-5638 node-type-CONTENT-TYPE-NAME

คุณสามารถเปลี่ยนวิธีการทำงานของไฟล์ html.tpl.php ด้วยวิธีนี้:

if (strpos($variables['classes'],'node-type-YOUR-CONTENT-TYPE') == true ) {
  echo 'Do something special  for YOUR-CONTENT-TYPE ';
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.