Drupal kann viel. Beinahe alles. Ich staue immer wieder darueber, was man mit ein paar Raenkespielen und dem richtigen Modul zur rechten Zeit alles hinbekommen kann. Hier einige Beispiele, die mir in letzter Zeit ueber den Weg gelaufen sind und die ich des Archivierens fuer wuerdig befand.

Vorwort

Ich habe in letzter Zeit mehr als ueblich mit dem Content-Management-System Drupal zu tun gehabt -- unter anderem fuer die Webseite des heulers (http://heulermagazin.de) -- und die haben auch noch ein Drupal-basiertes Adress- und Datenhaltugssystem bekommen (am Anfang stand die Frage nach einem "Adressbuch". Mittlerweile wuerde ich es durchaus als kleines Redaktions-Archiv bezeichnen). Alles in allem habe ich viel Kleinkram gelernt. Und um diesen Kleinkram nicht gleich wieder zu vergessen, schreibe ich ihn mir auf. Und wenn er dann noch Dritten hilft, die ihn zufaellig finden -- umso besser :)

Galerieansicht und Dateidownload mit CCK und Views

Gegeben:

Das Ziel: Eine Galerieansicht ueber die angelegten Nodes des oben beschriebenen Typs mit angezeigtem jeweiligen Vorschaubild, dass zum dazugehoerenden PDF verlinkt ist. Der leichte Teil ist es, eine View zusammenzuklicken, die die jeweiligen Nodes anzeigt (hierzu reicht es, das Feld "Node: Title" unter Fields hinzuzufuegen und bei Filters "Node: Type" auf den oben erstellten Typ einzustellen. Wer mag, kann nun noch eine Sortierung einfuegen.
Nun der komplizierte Teil: Die Graphiken anzeigen. Dazu fuege man den Fields zunaechst das Feld mit der Datei hinzu (als "Generic Files"), setze die Anzeige aber auf "Exclude from Display", denn das Feld wird nur gebraucht, damit sein Inhalt gleich benutzt werden kann.
Als naechstes kommt die Magie.
Es wird noch ein Feld hinzugefuegt, dieses Mal die URL zum Vorschaubild (als "URL to file"). Und nun werden die Feld-Optionen ausgeklappt -- als erstes wird der Output ueberschrieben. Und zwar mit einer Anweisung, die das Bild einbindet -- bei mir sieht das dann so aus:
<img src="[field_titlethumb_fid]" width="80" />
Nun haben wir schonmal die Galerieansicht. Als naechstes muss noch dafuer gesorgt werden, dass die Bilder Links auf die zugehoerigen PDF-Dateien werden -- und nicht auf die jeweiligen Nodes zeigen:
Hierzu wird die naechste Option angenommen: "Output this field as a link" ist grundsaetzlich schonmal gut, aber es ist hier der Link zum Node, den wir ja nicht wollen. Aber es kann ein Link Path eingegeben werden -- genau das, was gesucht wird. Entsprechend ist mein Eintrag
http://heulermagazin.de/sites/default/files/ausgaben/[field_thepdf_fid]
-- voila :)
Es bleibt vielleicht noch die Frage, wie das nun genau mit den Ersetzungsfeldern ist, die in den eckigen Klammern stehen. Die entsprechen den Feldern, die hinzugefuegt werden (deshalb auch das nicht-angezeigte Feld!) und sind weiter unten aufgelistet:
Fields
[title] == Node: Title
[field_thepdf_fid] == Content: Heft zum Download (field_thepdf)
[field_titlethumb_fid] == Content: Titelbild (field_titlethumb)
Fertig kann die ganze Konstruktion unter http://heulermagazin.de/?q=archiv betrachtet werden.

Verallgemeinert: Dateidownload mit CCK und Views

Die oben gezeigte Technik laesst sich natuerlich auch so verallgemeinern, dass es eine Auflistung von Dateidownloads mit den zugehoerigen Node-Titeln gibt. Dazu muss bloss der Code zum Einbinden der Bilder weggelassen und durch einen adaequaten Text ersetzt werden.
Das ist jetzt wahnsinnig unkreativ, funktioniert aber in der Praxis trotzdem.

Ueberschreiben von Default-Ausgaben

Hier am Beispiel von taxonomy-Termen

Drupal bringt von Haus aus die so genannte "Taxonomie" mit -- was nichts anderes als Stichworte aus einem oder mehreren Katalogen sind. Diese Stichworte (neumodisch als "Tags" beschimpft) koennen den Beitraegen angehaengt werden. Der Nutzen der Uebung liegt darin, sich anschliessend alle Beitraege zu einem bestimmten Stichwort auflisten lassen zu koennen.
Den Voreinstellungen nach sieht das dann aber schematisch wie folgt aus:

Das kann sein, was man will. Oder auch nicht. Aber wenn man nicht will, dann gibt es auch keine offensichtlichen Moeglichkeiten, das Aussehen der Ausgabe zu aendern. Es gibt aber doch eine. Etwas trickreiche.
Denn -- man kann einer View eine URL zuordnen -- und die entsprechenden Uebersichten nach Tag liegen immer fix unter /taxonomy/term/ID. Also ... eigentlich muss man nur das Offensichtliche tun: Eine View definieren, die als Pfad /taxonomy/term/% bekommt -- und entsprechend den ersten Parameter verwurstet. Dazu wird unter Argumente ein Argument definiert und mit Content: TermID verknuepft... dann noch die entsprechenden Felder zur Anzeige auswaehlen und ... fertig :)
Zugegeben, die Loesug ist unglaublich unspektakulaer. Man muss nur auf die Idee kommen.

Nodes verknuepfen -- Objektrelationen angeben. Und schoener ausgeben.

Dann war da noch die Aufgabe, in einem Knoten Referenzen auf andere Knoten anzugeben. Das bekommt man ja noch hin, dazu gibt es "Node Reference"s im CCK-Paket. Damit kann man definieren, dass ein Feld eines neu zu schaffenden Typs aus Referenzen auf weitere Nodes (ggf. eines bestimmten Typs oder den Nodes, die von einem bestimmten View zurueckgegeben werden -- sehr praktisch) zeigen soll.
Problem ist dann aber, dass nun beim Anzeigen des erstellten Node die Ausgabe unter dem gleichen Problem leidet wie im letzten Fall -- einer bedingt nutzbaren Default-Ansicht. Die beinhaltet naemlich wieder den Text bzw. dessen Anrisstext. Bei vielen verknuepften Nodes wird das schnell unuebersichtlich, und es ist spontan nicht moeglich, die Ausgabe der referenzierten Nodes auf einen Link zum Node zu beschraenken.
Aber auch dagegen ist ein Kraut gewachsen -- ganz konkret das Modul "Node reference views". Dahinter steht ein ganz einfaches Konzept -- wenn es eine View mit dem Feldnamen als Namen des Views gibt, dann wird dessen Ausgabe genutzt. Einfach ganz einfach.

Postskript

Ja, ich bin mir der Ironie bewusst, hier in einer explizit CMS-losen Form ueber Tricks fuer ein CMS zu schreiben ;)

Stichworte:


Impressum