Archiv der Kategorie: Menüeinträge

Dropdown-Menüs: nur mit dem richtigen Theme

Als Drupal-Neuling stolpert man ganz schnell darüber, dass es erstmal nicht möglich ist, ein Dropdown-Menü einzurichten. Das ist im Standard-Theme Bartik und im ebenfalls mitgelieferten Theme Garland auch gar nicht vorgesehen! Man braucht ein Theme das diese Option von Haus aus mitliefert, eines wäre zum Beispiel Marinelli. Dann aber ist die Sache ganz einfach. Also, installieren sie sich Marinelli und Nice Menus und dann kanns losgehen.

Mega-Menu einschalten

Design->Marinelli->Einstellungen->Primary Menu settings Which kind of primary links do you want to use? auf Mega Drop Down stellen.

Dann ein paar Basic Pages mit Menüeinträgen erstellen, Reihenfolge und Anordnung können über Struktur->Menüs->Main Menu noch eingestellt werden.

untermenues
untermenues

Block positionieren

Den Block Nice Menu 1 auf die Position Utility Menu Top setzen.

nicemenu
nicemenu

Und so sieht das dann aus:

kochbuchmenu
kochbuchmenu

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!

 

 

Die ersten Inhalte, und das erste Modul: CKEditor

Um einen WYSIWYG-Editor ähnlich wie in Joomla oder WordPress zu erhalten, kann man sich das Modul CKEditor installieren, sie finden es hier: https://www.drupal.org/project/ckeditor

Unter Module->Installieren die ZIP-Datei anwählen, nach der Installation die Aktivierung nicht vergessen, der Editor findet sich ganz am Ende der Liste unter „Benutzeroberfläche“.

ckeditor_aktivieren
ckeditor_aktivieren

(Anmerkung: auf meiner Testinstallation läuft der CKEditor nur mit Google Chrome, unter Firefox gibts Probleme…)

Inhaltstypen

Standardmässig bringt Drupal zwei Inhaltstypen mit:  Artikel und einfache Seite. Artikel sollen lt. Doku überall da verwendet werden, wo vom Benutzer eine Interaktion erwartet wird (Kommentar). Die einfachen Seiten verwendet man für quasi-statische Seiten wie z.B. die Willkommen-Seite oder auch das Impressum.  Drupal hat auch noch andere Inhaltstypen an Bord, die nach Aktivierung der entsprechenden Module angeboten werden, und man kann auch eigene Inhaltstypen anlegen, aber dazu später mehr. Wir passen uns jetzt erstmal den Inhaltstyp „Einfache Seite“ an, denn wir wollen:

Bilder einbinden, die Erste

Das geht nämlich so ohne weiteres erstmal nicht. Wir müssen erstmal das Feld für die Bilder zur einfachen Seite hinzufügen. Das geht unter Struktur->Inhaltstypen->einfache Seite->Felder verwalten. Dort das vorhandene Feld „Bild: field_image“ auswählen und diese Option speichern.

feld_image
feld_image

Wenn wir jetzt über Inhalte hinzufügen eine neue einfache Seite erstellen, gibt es unterhalb des Editorfensters einen zusätzlichen Punkt Images, über den eine Bilddatei hochgeladen werden kann. Das Feld für den Alt-Text kann man leicht übersehen, es gibt auch keine Fehlermeldung wenn es nicht ausgefüllt wird, das Bild wird halt dann mit leerem Alt-Attribut in der Seite angezeigt. Auch Einstellmöglichkeiten für einen Titel oder eine Beschriftung oder dergleichen sucht man vergeblich, aber zur Bilderverwaltung in Drupal wird später noch mehr zu sagen sein.

Machen wir weiter mit unserer einfachen Seite.

Teaser und Bodytext

Wir bleiben erstmal im Beitragseditor. Das Feld Title ist selbsterklärend, darunter wird angezeigt:

Body (Zusammenfassung bearbeiten )

Man kann hier ähnlich wie in Joomla mit dem Weiterlesen-Tag einen Beitrag in eine Einleitung bzw. Zusammenfassung, auch Teaser genannt, und den eigentlichen Body Text aufteilen.  Es wird dann auf der Seite nur der Teaser und ein Weiterlesen-Button angezeigt, wie das im Einzelnen gesteuert wird, hängt letztlich vom Theme ab.

Menüeinstellungen

Wir können unserer einfachen Seite jetzt einen eigenen Menüpunkt zuordnen:

menueinstellungen
menueinstellungen

Dabei bestimmt die Gewichtung, in welcher Reihenfolge die Menüpunkte angezeigt werden. Wenn alles geklappt hat, müsste jetzt als zweiter Menüreiter der Eintrag „Rezeptbilder“ erscheinen.

rezeptbilder
rezeptbilder

NiceURLs muss man per Hand anlegen

In anderen CMS kriegt man sprechende URLs vorgeschlagen, in Drupal muss man sie manuell eintragen, das geht unter URL-Alias-Einstellungen.

niceurls
niceurls

Die kleine Mühe, hier eine URL-safe Vorgabe einzustellen hätten sich die Drupal-Entwickler schon machen können! Wenn man das nämlich nicht macht, bekommt man URLs nach dem Muster  http://ihresite/drupal/node/7, und das ist weder schön noch SEO-gerecht.

Auf die Art und Weise lege ich mir jetzt meine statischen Seiten der Reihe nach an. Wenn man übrigens für die Startseite einen eigenen Karteireiter haben möchte, muss man dies unter Struktur->Menüs->Link hinzufügen einrichten, hier einen Titel (z.B. Startseite) vergeben und als Link <front> eintragen.

Und was ist mit den Rezepten?

Das muss ich mir erstmal gut überlegen. Ob die in einem Blog besser aufgehoben sind, oder als eigener Inhaltstyp verwaltet werden sollen. Aber dazu gibt es einen neuen Beitrag.