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.

Hi, würde mir mal gerne so

Hi, würde mir mal gerne so einen Gästebuch ansehen? ich habs mit Drupal 6 ausprobiert, und bin nicht gerade begeistert davon.

Viele Grüße Marko

naja, du musst das halt schon

naja, du musst das halt schon noch entsprechend themen ;) ... ich habe auch nur mal schnell so eine Schnellversion gemacht, aber habe kein produktives Gästebuch. Sollte ich eines hier in meinem Blog einrichten?

Wie soll es denn aussehen? Fehlen denn Elemente, oder ist "nur" ein optisches Problem.

Es ist nichts einfacher, als

Es ist nichts einfacher, als eigenes Gästebuch mit javascript zu programmieren. Da brauchst du auch keine Datenbank. Melde dich bei mir, ich helf dir gern weiter.

Hi, es funktioniert alles

Hi,
es funktioniert alles tadellos, allerdings bekomme ich es nicht hin, dass das Eingabefeld angezeigt wird, um neue Einträge zu veröffentlichen. Wie stell ich das am besten an?

Grüße

wie meinst du das? Neue

wie meinst du das? Neue Einträge veröffentlichen?

ich habe vor aus diesem

ich habe vor aus diesem Tutorial ein Usergästebuch zu erstellen. D.h. auf jeder Profilseite soll ein Eingabefeld sein in dass man Gästebucheinträge schreiben kann, die dann auf der jeweilgen Seite veröffentlicht werden.

Also vereinfacht so:

Gästebucheintrag ...
Gästebucheintrag 2
Gästebucheintrag 1
-----
Eingabefeld

Ich habe einen View wie hier beschrieben angelegt. Dummerweise kann ich jetzt nur über den "Inhalt erstellen Link" etwas dem Inhaltstypen Gästebuch hinzufügen.. Und das will ich ja nicht :P.

sprich das Formular für das

sprich das Formular für das Gästebuch in die Profilseite einbinden? http://more.zites.net/embed-a-node-form-with-drupal-6 Das sollte dir helfen, ein Node Form einzubinden. Musst es halt noch ein wenig an deinen Nodetype anpassen, aber scheint, als wäre das die Lösung zu deinem Problem.

wow was für ein toller

wow was für ein toller Support :-). Ich schau mir das gleich mal an. Vielen Dank vielleicht sieht man sich ja öfters hier. Auf alle Fälle schon ein Pluspunkt im Vergleich zum drupalcenter wo ich immer Tage auf ne gescheite AW warten muss..

grüße

also ich hab mir das eben mal

also ich hab mir das eben mal angesehen aber ich bekomme leider immer ein error:

warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, '_node_form' was given in C:\....\includes\form.inc on line 366.

Und ich verstehe nicht ganz, woher das Eingabefeld wissen soll zu welchem Node es den Inhalt hinzufügt.

Gruß

mag sein... Ich kann dir auch

mag sein... Ich kann dir auch gerade einfach so aus dem Ärmel eine fertige Lösung anbieten, aber dieses Post sollte dich in die richtige Richtung bringen.
... ich habe leider auch noch andere Sachen zu tun, als Fragen zu beantworten ;)

Huhu.....deine HP ist

Huhu.....deine HP ist wirklich interessant und effektiv.
Ich finde sie 1a klasse

Neuen Kommentar schreiben

Neuen Kommentar schreiben