Überschreiben Sie die Datei html.tpl.php pro Knotentyp

17

In meiner template.php Datei für mein Theme habe ich folgendes ausprobiert:

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

Dies funktioniert für page - nodetype.tpl.php, nicht jedoch für html - nodetype.tpl.php

Möglicherweise werden Sie gefragt, warum Sie die Vorlage html.tpl.php pro Knotentyp überschreiben müssen. Dies liegt daran, dass es Markups gibt, die ich für diesen bestimmten Knoten nicht einschließen möchte.

Chris Muench
quelle

Antworten:

28

Der Name einer Vorverarbeitungsfunktion basiert auf dem Thema / der Vorlage, das / die verarbeitet wird. Um die Datei html.tpl.php vorzuverarbeiten, müssen Sie Folgendes verwenden hook_preprocess_html():

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

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

@Clive Ansatz ist sehr klug.

Beachten Sie auch, dass Sie in der Datei html.tpl.php den Inhaltstyp lesen können, mit dem Sie es zu tun $variables['classes']habenhtml not-front not-logged-in no-sidebars page-node page-node- page-node-5638 node-type-CONTENT-TYPE-NAME

Damit können Sie das Verhalten der Datei html.tpl.php wie folgt ändern:

if (strpos($variables['classes'],'node-type-YOUR-CONTENT-TYPE') == true ) {
  echo 'Do something special  for YOUR-CONTENT-TYPE ';
}
Augusto
quelle