View mit Eingabeformular für neue Beiträge
Ab und zu verspürt man (oder ein Kunde) vielleicht den Wunsch, in einer Auflistung von Beiträgen eines bestimmten Inhaltstyps (nennen wir es mal ganz spontan "Gästebuch") auch gleich das Formular zum Eintragen neuer Beiträge zu platzieren.
Das mag auf den ersten Blick nicht wirklich schwierig klingen, entwickelt sich dann bei der Umsetzung schnell zu einem heissen Eisen.
Voraussetzungen
Wir benötigen:
- einen Inhaltstypen ("guestbook_item")
- einen View ("guestbook"), der nur Beiträge des Typs "guestbook_item" anzeigt
Bei dem View stellen wir dann noch als Ausgabeformat "unformatted" ein. Höchstwahrscheinlich funktioniert der ganze Spass auch mit anderen Formaten, jedoch basiert dieses Tutorial auf "unformatted".
Umsetzung
Nun kopieren wir die Datei views/theme/views-view-unformatted.tpl.php in unser Theme-Verzeichnis und benennen sie in views-view-unformatted--guestbook--page-1.tpl.php um.
Über dieses Template kann man die Ausgabe der einzelnen Beiträge unseres Views steuern, also auch das gewünschte Formular hinzufügen.
Dazu müssen wir zuerst die Datei node.pages.inc vom node-Modul inkludieren, da sich dort die Funktion versteckt, die wir zur Anzeige des Formulars benötigen.
Also fügen wir den folgenden Code oben im Template ein:
<?php module_load_include('inc', 'node', 'node.pages'); ?>
Jetzt können wir an der gewünschten Stelle einfach die Funktion node_add()
aufrufen und schon erscheint das Formular in der Ausgabe des Views.
Möglicherweise findet man (oder der Kunde) es ja viel schöner, wenn das Formular nach den ersten drei Einträgen (also quasi mitten in der Liste) angezeigt wird.
Das kann man glücklicherweise relativ einfach über die Variable $rows
und ein wenig PHP lösen (siehe Template).
Erweiterung
Nachdem man das Formular nun so inmitten der Beiträge platziert hat, fällt nach dem Absenden auf, dass man auf den soeben erstellten Beitrag geleitet wird. Idealerweise möchte man jedoch gleich wieder die Auflistung (mit dem neuen Beitrag) sehen.
Dazu schreiben wir schnell noch ein kleines Modul.
- Anmelden oder Registrieren um Kommentare zu schreiben
Alternative
am 25.07.2009 - 22:47 Uhr
Eine einfache Alternative ist auch im Views in den Kopfbereich der Seite das Formular mit den zwei Zeilen einzubinden. Dafür muss nur das PHP-Eingabeformat aktiviert sein.