Archiv der Kategorie: Views

Geht manches wirklich nur mit Views?

Ich habe ja schon für WordPress ein Widget und für Joomla ein kleines Modul erstellt, die jeweils die Gesamtzahl der veröffentlichten Rezepte und dazu die Anzahl der Rezepte einer frei wählbaren Kategorie anzeigen, so nach dem Muster:

317 Rezepte insgesamt

89 davon vegetarisch

Jetzt hab ich mich mal dahintergeklemmt, ob sowas auch in Drupal zu realisieren ist, und ich sags ganz ehrlich: ich hab mir einen Frust gegooglet. Es ist anscheinend nicht möglich, einem Block benutzerdefinierte Variable mitzugeben, und damit fällt das ganze Konzept auf die Nase.

Mit Views gehts – ja aber…

Es ist relativ einfach, mit Views einen Block zu erstellen, der die Gesamtzahl der veröffentlichten Rezepte ausgibt. Und es ist auch nicht viel schwieriger, einen Block zu erstellen, der die Gesamtzahl der vegetarischen Rezepte ausgibt. Ich kann aber meinem durchschnittlichen Benutzer nicht zumuten, sich in Views einzuarbeiten und da z.B. statt dem Tag „vegetarisch“ das Tag „Joschis Cocktailbar“ einzusetzen, no way José. Zudem müsste man bei jedem anderen Tag die Überschrift des Blocks auch manuell anpassen, also das kanns echt nicht gewesen sein. Da ich aber nichts anderes gefunden habe, schreibe ich hier mal kurz wie man die Views aufsetzt.

Nur Rezepte aus Joschis Cocktailbar

Struktur->Views->add new view, Namen vergeben. Hier kann man gleich mal den Inhalt of type Rezept tagged with Joschis Cocktailbar auswählen:

nur_joschiscocktailbar
nur_joschiscocktailbar

Create a Block, Continue&edit.

Advanced->use aggregation->aggregate->apply

Fields Inhalt(Titel)->Aggregation settings->Anzahl->apply.

Das sollte jetzt so aussehen:

aggregation
aggregation

Die Ausgabe wäre dann:

7_joschi
7 joschi

Die View für die Anzahl der Rezepte insgesamt erstellt man genauso, nur läßt man ganz am Anfang das tagged with leer. Das wars auch schon, aber ich finde es eine sehr unbefriedigende Lösung. Wie gesagt, ich kann es meinen Anwender nicht zumuten, selber mit Views herumzuhantieren, da suche ich immer noch einen einfacheren Weg. Mal sehen, ob ich noch was finde.

Für die Kochbücher: ein eigener Inhaltstyp

Warum? Das wird man hier im Folgenden gleich noch sehen. Ich hab ja im Original-Inselfischkochbuch für jedes meiner Lieblingskochbücher einen eigenen Menüeintrag erstellt, das war fieselige Handarbeit und ausserdem statisch. In Drupal geht sowas wesentlich geschickter, wenn man es richtig anstellt.

Neuen Inhaltstyp „Kochbuch“ anlegen

Dabei nehmen wir gleich mal die Veröffentlichungseinstellung „Auf der Startseite anzeigen“ heraus:

inhaltstyp_kochbuch
inhaltstyp_kochbuch

Bei den Feldern fügen wir nur eins vom Typ Image hinzu:

kochbuch_felder
kochbuch_felder

Das wars auch schon. Jetzt legen wir mal zwei, drei neue Beiträge vom neuen Inhaltstyp „Kochbuch“ an und versehen sie mit etwas Inhalt.

Jetzt kommt der Knackpunkt: eine View

Struktur->Views->add new view „Meine Lieblingskochbücher“, Anzeigen Inhalt of type Kochbuch.

Create a page, create Menu link anhaken, Weigth nicht vergessen, Save&Exit.

Das erstellt uns einen neuen Menüpunkt und eine feine neue Seite, auf der alle Beiträge vom Typ „Kochbuch“ aufgelistet werden.

kochbuch_anzeige
kochbuch_anzeige

Das schicke daran ist: wenn ich jetzt einen neuen Beitrag vom Typ Kochbuch verfasse, erscheint der automatisch in der Liste, ich muss nicht mit einem eigenen Menüeintrag herumfusseln. Also, das nenne ich eine saubere Lösung!

Layout nach Wunsch anpassen

Wenn man jetzt noch das Layout für den Inhaltstyp Kochbuch ändern möchte, geht das auch wieder mit einem Override. Eine Kopie der (hoffentlich jungfräulichen) node.tpl.php anlegen, umbenennen in

node–kochbuch.tpl.php

und es kann losgehen. Cache leeren nicht vergessen!

Nachtrag: Kategorienliste mit Anzahl der Rezepte, und das IVZ V.0

Der Weg zur Kategorienliste mit der Anzahl der Rezepte war noch unvollständig. Das machen wir auch mit Views, ich schau mal dass ich es nachvollziehbar aufschreibe:

Struktur->Views->Add new->Namen vergeben, Anzeigen Taxonomie Begriffe of type Tags

Create a Block, Items per Page nehm ich mal 30 (brauch ich später noch), Continue & Edit.

Block Details->Advanced->Relationships->Taxonomie-Begriff Content with term, Use Aggregation

Fields->Inhalt (Titel)->Aggregation Type Count Distinct, im nächsten Fenster das Feld Bezeichnung leer machen.

Speichern. Block auf gewünschte Position setzen.

anzahl_kategorien
anzahl_kategorien

Wichtige Ergänzung: leere Kategorien ausblenden

Damit man Kategorien, die noch keinem Inhalt zugeordnet sind, nicht mit einem Kategoriename 0 angezeigt bekommt, kann man noch einen zweiten Eintrag unter Relationships hinzufügen, und zwar:

(Beitrag) Inhalt: Taxonomy terms on node

Dann muss man noch in Configure Relationship die Option

 

anhaken, und das wars.

Noch etwas Kosmetik

Es wäre jetzt natürlich schöner, wenn die Zahlen hinter dem Kategorienamen stehen würden statt in der nächsten Zeile darunter. Dazu in der View unter Format Anzeigen Fields Einstellungen bei den beiden Inline Fields Häkchen setzen:

inline_fields
inline_fields

So, das wars jetzt aber. Mein Block mit den Rezept-Kategorien sieht jetzt so aus:

distinct_rezeptkategorien
distinct_rezeptkategorien

Das kann so bleiben!

Als nächstes kommt das Inhaltsverzeichnis dran:

Alle Rezepte A-Z

Wir setzen auch da mal mit Views an.

Neue View hinzufügen, Name z.B. IVZ, Anzeigen Inhalt of Type Blogeintrag, Create a page, Seitentitel z.B. Rezepte A-Z, Pfad rezepte-a-z. Items to Display 300 (brauchen wir später noch). Create a Menu Link, Continue&Edit.

Anzeigen->Inhalt->Fields -> Apply, Inline Fields Inhalt:Titel anhaken.

Sort Criteria Post Date entfernen, Sort Criteria hinzufügen Inhalt:Titel,  (asc) ist default, kann man lassen. Apply. Speichern.

Das sollte einen neuen Menüeintrag erzeugen, in dem alle Rezepte alfabetisch aufgelistet werden:

ivz
ivz

Das ist zwar mal ein Anfang, aber so richtig schön ist es noch nicht. Es wäre viel hübscher, wenn die Anfangsbuchstaben und die Anzahl der Rezepte pro Buchstaben in der Liste auftauchen würden, aber das, so fürchte ich, wird nicht so einfach, jedenfalls nicht ohne ein bisschen Programmierung. Da wollen wir Drupal mal auf den Zahn fühlen, wie sowas gehen könnte – in einem neuen Beitrag.

Weiter gehts mit den Inhalten

Die neuesten Rezepte

Jetzt fehlt auf jeden Fall noch die Anzeige der letzten eingestellten Rezepte, dafür gibt es einen Block „Neueste Blogbeiträge“, den schubse ich mal in die zweite Sidebar. Ich hab ihn umbenannt in „Die neuesten Rezepte“ und auf 10 anzuzeigende Einträge gestellt. Es sind erst fünf Rezepte im Blog, das stimmt schon so.

neueste_rezepte
neueste_rezepte

Was machen wir als Nächstes?

Das Kontaktformular

Das klappt in Drupal ohne weiteres mit Bordmitteln. Unter Module Contact aktivieren, dann kann man unter Struktur->Kontaktformular die Grundeinstellungen konfigurieren. Dann unter Menüs->Link hinzufügen einen neuen Menüpunkt z.B. namens Kontakt anlegen und als Pfad contact eingeben, das wars schon. Das sieht dann so aus:

kontaktformular
kontaktformular

Das tuts auch für meine Zwecke erstmal völlig, jedenfalls vorläufig. Über Formulareditoren für Drupal wird es einen eigenen Beitrag geben, da muss ich noch etwas recherchieren. Jetzt gibts erst mal:

Das Zufallsrezept

Auch das habe ich mit Views hingepfriemelt, mal sehen ob ich es nachvollziehen kann:

Struktur->Views->Add new View, Namen und Pfad vergeben, Anzeigen Inhalt of type Blogeintrag.

Create a page, Items to display 1, Continue&Edit.

Sort Criteria Inhalt entfernen. Sort Criteria hinzufügen Global Random, Speichern

Mit Struktur->Menüs->Link hinzufügen die eben erstellte Seite mit dem Pfad hinzufügen.

Das müsste es eigentlich gewesen sein! Jetzt fehlt nur noch eine Funktionalität „Zufallsrezept neu laden“, da muss ich mal gucken ob ich das noch hinkriege. Man kann ja auch einfach F5 drücken…

Zwischenbemerkung: ich brech dann doch mal eine Lanze für Views

Auch wenn ich noch im Stadium des Herumprobierens bin und die meisten Sachen nur mit viel Trial&Error hinkriege: Views ist ein mächtiges Werkzeug, damit macht Drupal gleich doppelt so viel Spaß! Es braucht eben doch eine längere Einarbeitung, aber für einen alten Datenbanker ist es dann doch nicht gar so schwer zu erraten, was sich hinter vielen der Optionen versteckt, ein Order by oder Group by oder was auch immer, da kommt man schon drauf wenn man sich etwas damit beschäftigt.  Dolles Ding!

 

 

Ohne Views geht anscheinend gar nichts

Ich bin bei meinen Recherchen jetzt schon das x-te Mal darüger gestolpert, dass bestimmte Funktionalitäten in Drupal offenbar nur über das Modul Views zu realisieren sind. Hab ich ja prinzipiell erstmal nix dagegen, aber mir scheint doch dass hier mit Kanonen auf Spatzen geschossen wird. Um Views zu installieren, muss man erstmal die CTools Chaos Tool Suite herunterladen installieren und aktivieren, darauf kann man dann Views für Drupal 7 aufsetzen. Ich habe auf die Schnelle keine einfache Installationsanleitung gefunden, das ging jetzt ziemlich mit Trial and Error. Hat man beide Module installiert, gibt es unter Struktur einen oder mehrere neue Einträge, für den Anfang ist mal nur Views interessant.

Wir basteln mal einen ersten View

Wir probierens mal mit „Add new View“ und sehen, wie weit wir kommen. Ich möchte jetzt gerne eine Liste meiner Kategorien sehen.  Dafür wähle ich im Feld Anzeigen „Taxonomiebegriffe“ und by of Type „Tags“.

Ich möchte einen Block erstellen, deswegen kommt das Häkchen bei Create Page raus und bei Create Block rein, die Anzahl der Items to Display stelle ich auf 10. Nach Save&Exit siollte unter Struktur->Blöcke unser neuer Block namens Kategorien auftauchen, den positioniere ich mal in die zweite Sidebar. Das sieht dann so aus:

katliste_sidebar
katliste_sidebar

Schon mal kein schlechter Anfang! Klick auf eine Kategorie öffnet eine Liste der zugehörigen Rezepte, das ist ja eigentlich schon mal ganz gut. Ich hätte jetzt aber gerne noch die Anzahl der zugeordneten Rezept bei jeder Kategorie stehen, und dafür muss ich mal ein bisschen abtauchen.

Erst die gute Nachricht?

Ich habs hingekriegt, das sieht jetzt so aus:

kategorien_anzahl
kategorien_anzahl

Die schlechte Nachricht: ich kanns noch nicht wirklich nachvollziehbar darstellen, das war jetzt Stochern im Views-Nebel mit einer sehr langen Stange. Wer sich selber dran versuchen möchte, dem kann ich diese beiden Artikel empfehelen:

http://www.espend.de/projekte/artikel/drupal-tags-taxonomie-terms-als-liste-mit-anzahl-nodes-ueber-views-ausgeben.html

https://www.drupal.org/node/603868#comment-4421144

Ich lass es hier mal für heute gut sein, das Views-Konzept ist zu komplex, um es so mal auf die Schnelle darzustellen. Man kann sicher irre viel damit machen, aber genauso irre ist die Vielzahl an Optionen und Konfigurationsmöglichkeiten, da brauchts eine längere Lernkurve dafür. Aufgehoben ist aber nicht aufgeschoben, ich schau mir das Ganze später nochmal an, und dann gibts eine Schritt-für-Schritt Anleitung… hoffe ich zumindest 😉