Kleine Einführung ins Module «Contemplate»

Dieser Inhalt ist veraltet!

In letzter Zeit sind vermehrt Anfragen auf Drupalcenter aufgetaucht, welche mit dem Darstellen/Themen von Nodes zusammenhing, z.B.:

  • Ich habe einen CCK Type erstellt basierend aus Einem Bild und 2 Textfelder. Nun werden diese einfach untereinander dargestellt und haben dazu noch viele unnötige divs drin? Wie kann ich diesen node entsprechend themen?

Grundsätzlich gibt es dafür zwei Ansätze:

  1. Ein eigenes Template machen, also etwas wie node-mytype.tpl.php und dann dort die entsprechenden Angaben für diesen Node machen. Klappt eigentlich sehr gut.
  2. Das Modul contemplate verwenden. Damit lässt sich alles in Drupal ohne FTP lösen. Sehr elegant und einfach und praktisch.

Um den Einstieg ein wenig zu erleichtern, hier eine kleine Anleitung, wie man vorgehen würde. Als Beispiel verwende ich den Contenttype Drupal Theme, welcher hier auf rapsli.ch verwendet wird. Diesen Contenttype verwende ich dazu, um Themes auf der Seite zu speichern.

Voraussetzungen

-> Das sollte ja kein Problem sein 😉 CCK und Views gehört sowieso in jede Drupalinstallation.

[Bild 1]

Dies ist die Eingabemaske für den Inhaltstype. Es gibt die folgenden Felder:

  • Titel
  • General -> Taxonomy
  • multiple_bilder -> hier können einfach diverse Screenshots vom Theme hochgeladen werden.
  • Label Image -> Das ist dann sozusagen das Titelbild vom Theme
  • Beschreibung

[Bild 2]

Jetzt gehen wir nach "admin/content/templates" und wählen dort den Contenttype aus, für welchen wir ein neues Template erstellen wollen. In unserem Fall wäre das also "Drupal Themes".

[Bild 3]

Jetzt kommen wir in die eigentlich Maske. Wir haben die Wahl, ob wir das Layout for den Node in der Teaser-, der Body- oder der RSS Ausgabe zu verändern. Wird das häckchen angeklickt, so wird das Feld aktiviert. Jetzt kann hier nach belieben etwas geschrieben werden. Als kleine Hilfe ist hier noch das Feld "Body Variablen" bzw. "Teaser Variablen". Diese geben alle Variablen an, welche zur Verfügung stehen. Durch Klicken auf die entsprechende Variable wird diese in das Feld "Body Template" übernommen. Hier können noch entsprechende Divs oder was auch immer für HTML Elemente hinzugefügt werden.

Vorsicht

Einige Variablen sind mit einem roten Sternchen markiert: "Fields marked with ** are insecure and need to be wrapped with either check_plain() or check_markup()" Also diese Variablen müssen noch durch eine Funktion geschickt werden, da diese noch nicht auf Böse Inputwerte überprüft wurden! Das sollte auch gemacht werden!

Fazit

Sehr praktisches Modul. Einziges Problem, welches ich sehe ist das portieren für andere Seiten mit dem gleichen Contenttype. Hier wäre es sicher einfacher, wenn man das ganze in einer separaten Datei macht, aber abgesehen davon spricht eigentlich nichts dagegen. Es macht den Betreiber sehr flexibel, da Änderungen leicht via Browser vorgenommen werden können.