it-swarm.com.de

Wie überschreibe ich den Knotentitel für einen bestimmten Inhaltstyp?

Ich versuche, ein Kapitel-Tag (§) vor einem Titel für den Inhaltstyp 'ABC' in einer Drupal 7-Site) einzufügen.

Ich habe folgendes versucht:

function mytheme_preprocess_node(&$variables) {
  if ($variables['view_mode'] == 'full' && node_is_page($variables['node'])) {
    $variables['classes_array'][] = 'node-full';
  }
  //watchdog("mytheme_preprocess_node", 'items %items', array('%items' => print_r($variables['node'], true)));
  $node = $variables['node'];
  if ($node->type=='abc') {
    $node->title = 'this is a test' . $node->title; 
    $variables['node'] = $node;
    watchdog("mytheme", 'items %items', array('%items' => print_r($variables['node'], true)));
  }
}

Ich habe die Nachrichtenausgabe im Protokoll gesehen, der aktualisierte Titel wird jedoch nicht auf der Site angezeigt.

5
Vlad Vinnikov

Jede Implementierung von hook_preprocess_node() aus einem Modul (oder einem Thema) wird nach template_preprocess_node () ausgeführt, das den folgenden Code enthält:

  $variables['node_url']  = url($uri['path'], $uri['options']);
  $variables['title']     = check_plain($node->title);
  $variables['page']      = $variables['view_mode'] == 'full' && node_is_page($node);

template_preprocess_node() ist die Vorverarbeitungsfunktion, die vom Modul Node] ausgeführt wird. Dies ist das Modul, das theme_node() definiert.

Die Vorlagendatei verwendet dann $title Für den Seitentitel.

  <?php print render($title_prefix); ?>
  <?php if (!$page): ?>
    <h2<?php print $title_attributes; ?>>
      <a href="<?php print $node_url; ?>"><?php print $title; ?></a>
    </h2>
  <?php endif; ?>
  <?php print render($title_suffix); ?>

Wenn Sie den Wert für title ändern möchten, sollten Sie den Wert von $title In Ihrer Vorverarbeitungsfunktion ändern.

Die Ausführungsreihenfolge von Vorverarbeitungsfunktionen wird in der Dokumentation zu theme () erläutert. In dieser Dokumentation ist "HOOK" ein Platzhalter für den Typ der Vorverarbeitungsfunktion, z. "Knoten", "HTML" und "Seite". Zwischen der für das Thema verwendeten Rendering-Engine, einem Modul und dem aktuell festgelegten Thema ist die aus dem Thema implementierte Vorverarbeitungsfunktion die letzte, die aufgerufen wird. Dies ist hilfreich, wenn es ein anderes Modul gibt, das den Titel ändert, und Sie das aus dem Thema festgelegte verwenden möchten.

Was ich gemeldet habe, gilt auch für Drupal 6.

7
kiamlaluno