web-dev-qa-db-ger.com

Drupal 7 Wie kann man page.tpl für einen bestimmten Inhaltstyp überschreiben?

Ich wollte page.tpl.php für einen bestimmten Inhaltstyp überschreiben. Ich habe diese Sache ausprobiert, bei mir funktioniert nichts.

  1. page--article.tpl.php
  2. page--node--article.tpl.php
  3. page--node--type--article.tpl.php
  4. page--node-type--article.tpl.php
  5. page--type--article.tpl.php

Aber als ich einen bestimmten Knoten anhand seiner Nummer als Ziel ausgewählt habe, d. H. page--node--8.tpl.php, hat es gut funktioniert. Ich denke, page--article.tpl.php hätte funktionieren sollen, aber ich weiß nicht, warum es nicht funktioniert.

Bitte sagen Sie mir, wenn ich es falsch benenne. und wie kann ich solche dinge debuggen. Ich habe gehört, dass ich das Devel-Modul verwenden kann, weiß aber nichts darüber. Ein leichter Hinweis in die richtige Richtung wird geschätzt.

Danke im Voraus

15
Rahul Prasad

Sie müssen sicherstellen, dass Ihre Vorlage damit umgehen kann ... Ich habe ein Code-Snippet erhalten, das hier für mich funktioniert hat:

http://drupal.org/node/1089656#comment-4426790

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
  }
}
?>
19
BeWhy

Haben Sie daran gedacht, den Cache zu löschen (unter Verwalten> Websitekonfiguration> Leistung), damit Drupal Ihre neue Datei "kennt" und diese anstelle der Standardeinstellung verwendet.

Siehe hier auf Löschen zwischengespeicherter Daten

Möglicherweise müssen Sie auch einen Präprozess-Hook hinzufügen (ich habe D7 selbst nicht verwendet, nur 5/6 - denke, das hat sich etwas geändert.) Dieser Beitrag über Drupal Stack Exchange scheint mehr Details zu liefern

4
anotherdave

Ich bin gerade auf das gleiche Problem gestoßen.

node - recipe.tpl.php

nicht

page - recipe.tpl.php

dies ist natürlich ein Inhaltstyp, der als 'Rezept' bezeichnet wird.

3
mikeDOTexe

CLEAR IMMER DIE CACHE ...

Gehen Sie zu/admin/config/development/performance und klicken Sie auf die Schaltfläche Cache löschen. Es sollte das erste sein, was Sie tun, wenn Sie Änderungen an der Struktur des Backends vorgenommen haben und nicht wie erwartet angezeigt werden.

Sonst hättest du es fast geschafft 

  1. page - content-type-name.tpl.php

können Sie die Inhaltstypvorlage gestalten.

1
Ezra

Schritt 1.Erstellen Sie beispielsweise einen Inhaltstyp: Mein Inhaltstyp ist "fullwidthpage".

Schritt 2. Kopieren Sie page.tpl.php und benennen Sie sie in page - fullwidthpage.tpl im Vorlagenordner um.

Schritt 3. Fügen Sie diesen Code zu template.php hinzu.

function <strong>YOUR_THEME_NAME_HERE</strong>_preprocess_page(&$variables) {
  if (isset($variables['node']->type)) {
    // If the content type's machine name is "my_machine_name" the file
    // name will be "page--my-machine-name.tpl.php".
    $variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
  }
}

Vergessen Sie nicht zu ändern YOUR_THEME_NAME_HERE

0
Arul M joseph

Abhängig davon, was Sie erreichen möchten, gibt es möglicherweise ein paar CSS-Tricks, die Ihnen helfen könnten.

Um beispielsweise CSS-Regeln für einen bestimmten Knotentyp außer Kraft zu setzen, denken Sie daran, dass Ihre Seiten für diesen Knotentyp die Rumpfklasse "node-type-[TYPE]" haben (dh: .node-type-article).

Sie können das CSS dann wie folgt überschreiben:

body.node-type-article #selector {}
0
bitfed

Ich weiß, dass dies eine alte Frage ist, aber wenn andere hier ankommen, ist die Art, wie ich Inhaltstypen in Drupal 7 überschreibe, folgendermaßen

node - contenttype . tpl

0
Purplemonkey

Sie müssen die spezifische Knotenvorlage für den Inhaltstyp überschreiben, wenn sie sich von einer Basisseite unterscheidet. Bitte prüfen Sie das:

http://api.drupal.org/node/19080

Kopieren Sie auf dieser Seite die Elemente, die sich auf der Seite node.tpl.php befinden, und überschreiben Sie sie nach Belieben. Sie können auf den Knoten spezifisch über den Knoten $ zugreifen

Ihre Vorlage für Artikel wäre:

node - article.tpl.php

Sobald dies erstellt wurde, müssen Sie den Cache löschen, um sicherzustellen, dass dies funktioniert.

0
chadpeppers