Gästebuch mit CCK und Views

Ein Gästebuch lässt sich sehr effizient mit CCK und Views erstellen. Ja, es gibt extra ein Guestbook Modul dafür. Das bringt jedoch auch einige Nachteile mit sich: Inflexibilität! Was sind denn eigentlich die Grundfunktionen eines Gästebuches? Diese gilt es mit CCK und Views nachzubilden:

  • Neuen Eintrag erstellen
  • Neue Einträge moderieren
  • Chronologisch auflisten
  • Name, URL, E-mail angeben
  • Spam Control

Das wäre es dann eigentlich auch schon. Nicht wirklich sehr viel und wenn man es genau anschaut, ist das einfach ein Node, welcher abgeschickt wird und dann aufgelistet wird. Sehr simpel also.

Wenn man jetzt also das Gästebuch zuhand nimmt, so ist das sehr einfach und schnell. Modul installieren, ein bisschen konfigurieren und schon ist es fertig. Was ist jedoch, wenn man etwas ausbauen will? Was ist, wenn man zusätzliche Felder einfügen will? Wenn man z.B. die neusten Gästebucheinträge in einem Block anzeigen will? Was ist, wenn die Darstellung komplett geändert werden will? Was ist mit Multisprachigem Interface?

Vielleicht kann es das Guestbook Modul, vielleicht aber auch nicht. Daher setzt hier dann die CCK und Views Lösung an, welche die enorme Flexibilität mit sich bringt.

Es werden folgende Module benötigt:

  • CCK Content
  • CCK Textfield
  • Views
  • Views UI

Als erstes fügen wir jetzt einen neuen Inhaltstypen "Guestbook" hinzu. Wichtig hier: Bei den Workflow Einstellungen alle Häckchen wegnehmen. Node soll also nicht published werden und soll nicht auf der Frontpage erscheinen. Auch die Comment Settings würde ich noch verändern. Kommentare sollten eigentlich nicht aktiviert werden -> ist meistens in einem Gästebuch nicht der Fall. Speichern

In der Übersicht aller Inhaltstypen auf "bearbeiten" für unseren Guestbook Inhaltstypen. Dann auf "Feld hinzufügen". Feld Name: z.B. "Name". Dann auf "weiter" und hier noch entsprechende Anpassungen machen. Was ich als vernünftig ansehe: Label: "Name". Required -> Ja. Plan Text (also kein HTML oder so irgend etwas. -> "Speichern".

Jetzt kommen wir auf die Seite admin/content/node-type/guestbook/fields. Hier können wir noch die Reihenfolge der Felder einstellen. Wohl am Besten: Name, Titel, Body.

Als nächstes müssen wir eine View erstellen: admin/build/views/add. Hier einfach die entsprechend Sachen eingeben. Ausgabe als Node und auf weiter. Jetzt kommen wir in das schöne neue Views Interface. Ist ein bisschen gewöhnungsbedürftig, wenn man sich das alte UI noch gewohnt ist, aber geht relativ schnell.

Zuerst wollen wir eine Page (Seiten) Ansicht hinzufügen (Links unterhalb von Defaults). Jetzt können wir zischen den defaultwerten und den Werten für Page hin und her wechseln. Auf der Page Seite müssen wir eine URL angeben, wo die View erreichbar sein soll. Weiter müssen wir einen Filter einrichten, dass nur die Einträge, welche veröffentlicht sind und welche vom Typ guestbook sind angezeigt werden. Dann wollen wir noch das sorting auf descending setzen (der neuste Eintrag soll zuoberst sein). Zum Schluss setzen wir den Row Style auf "Full node".

Oky, das wäre es dann auch schon.

Jetzt müssen wir noch die Berechtigungen setzen: admin/user/permissions. Hier einfach die entsprechenden Häckchen setzen. That's it.

Das Modul kann jetzt nach belieben ausgebaut werden:

 

  • Für CCK ein Feld E-mail hinzufügen
  • Für CCK ein Feld URL hinzufügen
  • Das ganze schön Themen
  • Eine zusätzliche View für den Moderator hinzufügen
  • Spam protection (z.B. Mollom) hinzufügen
  • Workflows hinzufügen, so dass der Moderator benachrichtigt wird, wenn ein neuer Eintrag zum Moderieren vorhanden ist
  • RSS Feed hinzufügen
  • YouTube Feld hinzufügen
  • Interface Übersetzung mit dem i18n Modul

Wie man sieht lässt sich die Liste noch sehr weit erweitern. Ich habe leider im Moment zu wenig Zeit um das zu testen. Zudem habe ich hier lokal das ganze schnell in D6 umgesetzt. Hier fehlen leider noch ein paar Module. Ich denke jedoch, dass der Lösungsansatz damit gegeben ist.