Beim Anzeigen eines Teasers in D7 möchte ich ein bestimmtes Feld vor dem Knotentitel rendern.
Eigentlich möchte ich von hier zu hier gehen .
Ich habe versucht, die node.tpl.php zu aktualisieren, aber ich stelle fest, dass sie sich $title
von der node.tpl.php trennt $content
, und bin mir nicht sicher, wie ich das angehen soll. Nach einiger Suche habe ich festgestellt , dass Menschen mit vorgeschlagen haben , CCK und in Erwägung zieht diese in Drupal-6 - Module zu umgehen , aber ich frage mich , ob es eine Drupal-7 - Lösung ist.
Irgendwelche Vorschläge?
Antworten:
Mit Drupal 7 ist das ganz einfach.
Mit
render
und habenhide
Sie die Möglichkeit, die Platzierung eines einzelnen Elements zu steuern,$content
ohne alle in Drupal 6 benötigten Elemente selbst ausdrucken zu müssen.Eine vereinfachte Knotenvorlage sieht folgendermaßen aus:
Eine kleine Modifikation würde Ihre Bedürfnisse erfüllen:
Mit
render
können Sie ein Element ausgeben. Dies ist schlauer als das einfache Drucken von Inhalten, da Drupal den Überblick über die gerenderten Inhalte behält, um zu vermeiden, dass dasselbe Objekt zweimal auf der Stelle gedruckt wird. Wenn Sie das Feld über dem Titel rendern, entfernen Sie auch, was gerendert wird, wenn$content
gerendert wird.quelle
Die Display Suite ist auch ziemlich cool.
quelle
Schauen Sie sich das Titelmodul an - http://drupal.org/project/title . Dies könnte sich für Ihr Szenario als nützlich erweisen. Ich habe es aus irgendeinem Grund installiert / aktiviert, wahrscheinlich ähnlich wie bei Ihnen, und es schien Flexibilität zu geben, wie das Titelfeld platziert werden soll.
Ich habe es seitdem deaktiviert (und benutze Display Suite), daher ist mein Rückruf möglicherweise etwas lückenhaft.
quelle
Dies ist eine hackische Lösung, und ich bin sicher, dass sich jemand etwas Eleganteres einfallen lässt, aber für den Fall, dass Sie nicht weiterkommen und es niemandem gelingt ...
Sie können
page.tpl.php
das Drucken von$title
insgesamt entfernen und ein neues benutzerdefiniertes Feld mit dem Namen "Titel" mit dem Computernamen "$ new_title" oder ähnlichem hinzufügen. Dann auf dem Knoten zu bearbeiten, zu verbergen den Original - Titel Feld und auf dem Knoten speichert Verwendung berechnetes Feld oder einige benutzerdefinierten PHP das kopieren$new_title
zu$title
.Nach alledem schreiben Sie ein paar CSS-Dateien, damit $ new_title so aussieht wie der Seitentitel zuvor und Sie sollten in der Lage sein, beliebige Felder in der von Ihnen gewünschten Reihenfolge zu platzieren, indem Sie sie einfach in den Bildschirm Felder verwalten ziehen und dort ablegen. Weil Sie kopiert
$new_title
zu$title
, sollte der Seitentitel in der Browserleiste noch Arbeit und nichts sollte über fehlende Knotentitel beschweren.Wie ich schon sagte, es ist ein Hack - aber es würde funktionieren. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen
quelle
page.tpl.php (Girlande)
template.php
quelle
Dies gilt nicht für die Teaser-Frage im ursprünglichen Beitrag, aber für Personen, die über diese Frage stolpern und sie nur in der vollständigen Ansicht ausführen möchten, gibt es eine codefreie Option: Zeigen Sie das Feld in einem Block an (mithilfe von Ansichten, zum Beispiel) und platzieren Sie diesen Block über Ihrem Inhaltsblock, aber in derselben Region.
quelle
Ich denke, Sie sollten Vorverarbeitungsfunktionen in Ihrer template.php verwenden
Und als Zusatz
Dump-Variablen und machen Sie alles, was Sie wollen. hinzufügen / entfernen / aktualisieren.
quelle
Ich habe dieses Problem durch eine codefreie Lösung mit der Display Suite und der Funktion "Zu blockierende Regionen " behoben . Ich mag diese Lösung am meisten wegen ihrer Flexibilität.
Aktivieren Sie grundsätzlich den Extras-Teil "Region to Block" und aktivieren Sie die Anzeige "Volltextinhalt" in der Display Suite. (Angenommen, Sie möchten den Inhalt über dem Titel in der Vollknotenanzeige anzeigen, können Sie ihn auch für jeden anderen Ansichtsmodus außer Standard verwenden.) Nun sollte im Bereich "Anzeige verwalten" unter "Volltextinhalt" am unteren Bildschirmrand die Registerkarte "Blockregionen" angezeigt werden. Geben Sie dort einen neuen Blocknamen ein, speichern und ziehen Sie die gewünschten Felder per Drag & Drop in diesen Block. Verschieben Sie zuletzt den neu erstellten Block im Blockbildschirm irgendwo über den Knotentitel.
Sie können das Video des gleichen Ansatzes hier sehen: http://www.youtube.com/watch?v=y4wyjxyhbNA , natürlich müssen Sie den Block über dem Titel (nicht in der linken Seitenleiste) am Ende platzieren.
quelle
Für Zen-Vorlagen funktioniert der folgende Code für mich.
Schließlich können Sie Ihr Feld ganz einfach in page.tpl.php ausdrucken.
quelle
Ich weiß, dass Sie bereits ein Thema zum Erstellen verwendet haben und jetzt versuchen, die Felder oben im Titel hinzuzufügen.
Meine Vorschläge an alle Entwickler, die ein Thema auf Drupal 7 erstellen, lauten: Omega-Thema + Kontext- und Delta-Module. Dies gibt eine sehr starke Grundlage für Ihr Layout.
Und Flexibilität bei der Anordnung von Regionen, Blöcken und Feldern.
quelle
Sie können dies mit dem Modul Panels tun
quelle