HTML.tpl.php को प्रति नोड प्रकार से ओवरराइड करें


17

अपने विषय के लिए मेरे खाके में। मैंने कोशिश की है:

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

एक प्रीप्रोसेस फ़ंक्शन का नाम उस थीम / टेम्पलेट पर आधारित है जिसे संसाधित किया जा रहा है। 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

@ क्लस्टर दृष्टिकोण बहुत स्मार्ट है।

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 ';
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.