Man kann auch in Drupal anzeigen lassen, wie oft eine Seite schon aufgerufen wurde, das ist nur ein bisschen versteckt. Zuerst einmal muss das Statistik-Modul aktiviert werden, das geht unter Module/Statistics. Anhaken, Speichern, dann unter Konfiguration die Option Inhaltsabrufe zählen aktivieren. Dann in die Berechtigungen gehen und falls gewünscht unter Statistics/Inhaltsaufrufe sehen diese Option auch für Gast und authentifizierten Benutzer aktivieren. Das sollte es gewesen sein.
Kurzer Blick auf die Datenbank: Drupal protokolliert jetzt in der Tabelle node_counter mit, welche nid wie oft, wie oft am aktuellen Tag und wann zuletzt aufgerufen wurde:
Die Anzahl der Aufrufe sollte jetzt auch unterhalb jedes Inhalts erscheinen.
Nicht ins Bockshorn jagen lassen, beim ersten Aufruf erscheint hier noch nichts, klassischer Offset-by-one-Fehler. Erst beim zweiten Aufruf der selben Seite taucht der Zähler auf.
Komplettes Zugriffsprotokoll
Man kann auch unter Konfiguration/Statistik das komplette Zugriffsprotokoll aktivieren, aber da sollte man sich auf einer Seite mit einigermassen Traffic auch sicher sein, dass man diese Informationen auch wirklich braucht, sonst bläht das die Tabelle accesslog auf wie nix. Mir reicht die kleine Lösung oben, die in der node_counter protokolliert wird, völlig aus.
Anzeige der beliebtesten Inhalte
Dafür gibts einen fertig konfigurierten View „Beliebte Inhalte“, der aktiviert werden kann, wenn das Statistik-Modul eingeschaltet ist. Das sieht dann so aus:
Ich habe zwar noch nicht rausgefunden, ob und wie man die Anzahl der angezeigten Inhalte steuern kann, aber das ist doch schon mal ganz nett. Man kann sich natürlich auch einen individuellen View basteln, in dem man die Anzahl der anzuzeigenden Inhalte selber konfigurieren kann, die Anzahl der Aufrufe ist über das Feld „Content statistics: Total views“ verfügbar.
Einleitung – es geht erstmal nicht um Drupal direkt
Eigentlich wollte ich nur eine etwas komfortablere Rezeptsuche realisieren und hab auch mal ein bisschen mit AJAX experimentiert, aber dann bin ich an einem neuen HTML5-Feature hängengeblieben und habe da erstaunliche Ergebnisse erzielt, die will ich euch nicht vorenthalten. Das hat jetzt erstmal noch nix direkt mit Drupal zu tun, aber es ist eine Voraussetzung für die Realisierung des nächsten Projekterls mit dem Arbeitstitel „Rezeptsuche mit Ajax und Autocomplete“, das kommt dann im nächsten Beitrag.
HTML5 Datalist
Die Spezifikation für die Datalist kann man z.B. hier bei w3schools nachlesen, es ist eigentlich ganz einfach und funktioniert prinzipiell wie ein normales Dropdown-Feld mit der zusätzlichen Funktionalität Auto-Vervollständigen. Man kann die Datalist auch prima aus der Datenbank füttern, das hab ich hier mal mit meinen Rezepten in Drupal gemacht. Man gibt dem Input-Feld die Id der Liste mit, und schließt die Liste der Optionen in die <datalist>-Tags ein:
$query = db_query("SELECT * FROM node WHERE type like 'rezept' AND status = 1 ORDER BY title");
$anzahl = $query->rowCount();
echo "<h2>".$anzahl." Rezepte insgesamt </h2><br>";
$records = $query->fetchAll();
//Beginn Formular
echo "<form action='#form' method='post'>";
echo "<input type = 'text' name='kategorien' list='kategorien' />";
echo "<datalist id='kategorien'>";
foreach ($records as $record){
echo "<option value='".$record->title."'>";
}
echo "</datalist>";
echo "</form>";
//End Formular
Das Ganze sieht jetzt in jedem Browser unterschiedlich aus und hat auch unterschiedliche Funktionalitäten.
Firefox Quantum
Ich habe zunächst nur mal den Buchstaben b eingegeben. Es klappt ein mickriges Listenfeld aus, aus dessen Inhalt zunächst noch nicht klar wird, nach welchen Kriterien da gesucht wird, es fängt mit Rezepten mit dem Anfangsbuchstaben a an:
Erst wenn man einen zweiten Buchstaben eingibt, ich nehm hier mal b, erhellt sich die Lage etwas. Anscheinend werden alle Einträge angezeigt, die den String ba enthalten:
Nehmen wir mal noch ein paar Buchstaben und suchen nach backen:
In der Tat, alle Rezepte in deren Titel backen vorkommt. Das heisst aber, dass man im Zweifelsfall verdammt viele Buchstaben eingeben muss, bis man die Auswahl auf ein Rezept eingrenzen kann. Gewöhnungsbedürftig, um es mal milde auszudrücken.
Chrome 65.0.3325.181
Hier siehts am Anfang auch ganz schön verwirrend aus, man bekommt nach Eingabe des b erstmal das letzte Ende der Liste zu sehen:
Erst nach Eingabe weiterer Buchstaben wird klar, dass auch hier nach einer im Titel enthaltenen Kombination gesucht wird.
Wenigstens kriegt man hier die Liste in einer übersichtlichen Breite angezeigt, das ist doch immerhin etwas.
IE 10
Machts wieder ganz anders. Eingabe des Buchstaben b bringt alle Rezepte, die mit b anfangen:
Diese Liste kann man mit der Eingabe weiterer Buchstaben genauer eingrenzen, ba liefert brav alle Rezepte die mit dieser Kombi anfangen:
Tscha, so unterschiedlich wird die Datalist von den Browsern umgesetzt. Wenn man’s weiss…
Zuerst wird das Logo ausgegeben, das ist unser Header-Bild. Dann kommt der Name der Seite und falls vorhanden der Slogan. Man darf sich hier ein wenig über das div-Gestrüpp wundern, das geht sicher auch einfacher, aber wir lassens jetzt mal so wie es ist. Ich setze mal nur eine Hintergrundfarbe für den Header:
#header {background-color: #bfd0ea;
}
Und ich schiebe den Block für die Suche nach rechts, wie der heißt habe ich mit Chrome rausgefieselt:
Das zugehörige css ist:
#block-search-form{float: right;
padding: 10px;}
Jetzt kriegt der header noch eine Hintergrundfarbe:
Was mich noch stört: wenn man auf eine andere Seite als die Startseite wechselt, wird der Seitentitel klein geschrieben, das hätte ich gern noch anders. Dafür genügt ein kleiner Eingriff in der page.tpl.php, in der ist hinterlegt, dass der Seitentitel nur in h1 formatiert wird, wenn der Content Title leer ist
<?php if ($site_name): ?>
<?php if ($title): ?>
<div id="site-name"><strong>
<a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
</strong></div>
<?php else: /* Use h1 when the content title is empty */ ?>
<h1 id="site-name">
<a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
</h1>
<?php endif; ?>
<?php endif; ?>
Dafür editiere ich den ersten Block hinter der der Zeile
Zu diesem Thema gibt es einige gute Tutorials im Netz, ich schreibs aber hier trotzdem nochmal komprimiert auf, nur die Basics, es ist nämlich nicht besonders schwierig. Ich baue hier so in etwa das Layout von WordPress TwentyFourteen nach, das ist mein Lieblings-Theme und schön schlicht und ohne Schnickschnack.
Die Ordner-Struktur
Man legt in [drupalinstallation]/sites/all/themes einen neuen Ordner an und benennt ihn mit dem Namen des neuen Themes (ohne Umlauts und Sonderzeichen), bei mir heisst er evi2014. In diesem Ordner werden zwei Unterordner angelegt, css und templates.
Die unbedingt notwendigen Dateien
Als Seitenvorlage kopiert man sich aus [drupalinstallation]/modules/system die Datei page.tpl.php, die kommt in den Ordner templates. In den Ordner css legt man eine style.css, die kann fürs erste noch leer sein.
In den Ordner evi2014 kommt jetzt die Datei evi2014.info, die hat Minimum folgenden Inhalt:
name = Evis2014
description = Angelehnt an mein Lieblings-WordPress-Theme TwentyFourteen.
core = 7.x
screenshot = screenshot.png
stylesheets[all][] = css/style.css
Ist eigentlich selbsterklärend, name und description sind frei wählbar, und die Drupalversion core= sollte stimmen. Wichtig ist hierbei, dass der Verweispfad auf die style.css stimmt, und dass die screenshot.png im selben Verzeichnis liegt.
Jetzt brauchen wir noch die tatsächliche Datei screenshot.png, die sollte ca.291×150 px gross sein und eine Vorschau unseres Themes enthalten.
Dann fehlt noch die logo.png, die brauchen wir für das Headerbild, bei mir ist sie 1260 px breit weil ich dafür die ganze Breite haben möchte.
Das wars schon! Jetzt sollte unser neues Theme bereits unter Design->Themes auftauchen und kann aktiviert werden.
Das sieht jetzt alles noch ein bisschen dürftig aus, unsere style.css ist ja noch leer.
Aber unsere Hauptkomponenten sind schon vorhanden, als da wären Das Hauptmenü (selbst erstellt), das Sekundärmenü (default von Drupal), und weiter unten (im Screenshot leider nicht zu sehen) unsere Blöcke. Die Blockvorschau sieht so aus:
Diese Einteilung kommt aus der page.tpl.php, mit der arbeiten wir weiter. Wo wir hinwollen, ist dieses dreispaltige Layout:
In die linke Seitenleiste kommen meine neuesten Rezepte (ein View), in die Mitte der Content, und rechts meine Rezeptkategorien (auch ein View.
Und der Weg dahin führt über die style.css. Das machen wir aber in einem neuen Beitrag.
Es kann ja rein theoretisch mal vorkommen, dass man existierende Drupal-Inhalte nach WordPress übernehmen möchte. Gehen wir mal davon aus, dass wir einen bestimmten Inhalltstyp aus Drupal als Blog-Beiträge nach WordPress exportieren möchte. Wir bleiben beim Kochbuch, der relevante Inhaltstyp ist „rezept“. Ich hab mal im Archiv gegraben und mir die Mechanik fürs grundlegende Anlegen eines WordPress-Posts geholt:
Mehr brauchts eigentlich nicht für den Anfang, der Titel und der Inhalt reichen mal für Demozwecke (Die Kategorien kommen später dran). Jetzt suchen wir uns aus Drupal die relevanten Daten zusammen.
Relevante Tabellen in Drupal
Zum einen die node-Tabelle, aus der brauchen wir vor allem die nid, den type und den title. Der content steckt in der field_data_body im Feld body_value, verknüpft wird über die nid im Feld entity_id. Der SQL sieht so aus:
SELECT field_data_body.entity_id, field_data_body.body_value, node.nid, node.type, node.title FROM field_data_body INNER JOIN node ON field_data_body.[entity_id] = node.[nid];
Das Ergebnis sieht erstmal so aus:
Wir haben hier noch articles und pages mit drin, die filtern wir mit einem where type = ‚rezept‘ weg, dann passt die Sache.
Jetzt fehlen noch die Kategorien
Dafür brauchen wir zuerstmal die Tabelle taxonomy_term_data, in der stehen die id und Namen der Kategorien drin, und die vid, das ist der Index der verwendeten Taxonomy, das ist bei mir die 2. Das ergibt bei mir eine Liste mit 28 Einträgen, von denen ich nur die tid und den Namen brauche:
Die importiere ich mit dem phpmyadmin in unsere WordPress-Datenbank.
Schritt 1: Anlegen der Kategorien in WordPress
Dafür setzen wir uns ein kleines Plugin auf, das zunächst nicht mehr als ein Formular mit einem Textfeld für den Namen der zu importierenden Tabelle und einen Start-Button enthält. Der Kern des Plugins ist ganz einfach. Auf der Variablen $akt_import liegt der Name der einzulesenden Tabelle mit den Kategorienamen. Durch die steppe ich zeilenweise durch und lege mit wp_create_category() die Kategorien neu an:
global $wpdb;
$allezeilen = $wpdb->get_results( "SELECT * from ".$akt_import."");
foreach ($allezeilen as $zeile){
echo $zeile->name."<br>";
wp_create_category($zeile->name);
}
Das Ergebnis ist wie erwartet:
28 neue Kategorien. Von denen brauchen wir jetzt die WordPress-Kategorie-IDs, die stecken jetzt in der Tabelle wp_terms:
Schritt 2: verknüpfen mit den Drupal-Daten
Die wp_terms hole ich mir jetzt zu den Drupal-Tabellen nach Access rein. Dort habe ich mir inzwischen aus der node und aus der field_data_body eine neue Tabelle gebaut, die nur die nid, den title und den body_value enthält:
Die wird jetzt erstmal über die nid mit der taxonomy_index und diese über die tid mit der taxonomy_term_data verknüpft:
Dann hole ich mir die wp_terms mit dazu und verknüpfe über den name mit der taxonomy_term_data:
Damit haben wir alle Felder, die wir für den Export nach WordPress brauchen, die term_id liefert uns die richtige Kategorie:
Das specken wir noch ein wenig ab und basteln uns eine saubere Export-Tabelle. Die enthält zunächst nochmal jeden Datensatz so oft, wie er Kategorien zugeordnet hat. Da ich in Drupal nur zwei Kategorien pro Datensatz hatte, taucht hier also jedes Rezept zweimal auf. Darauf setze ich eine Abfrage mit Gruppierung und nehme von der term_id einmal den letzten Wert und einmal den ersten Wert:
So, das wars. Diese Abfrage exportieren wir uns als CSV und holen sie uns in unsere WordPress-Datenbank rein. Für den tatsächlichen Import gibts aber einen neuen Beitrag.
Die Bildverwaltung in Drupal ist etwas versteckt und gewöhnungsbedürftig, man kann aber letztendlich doch viel damit machen, deswegen schauen wir uns die Sache noch einmal genauer an.
Wenn man in Drupal ein Bild hochlädt, wird dieses skaliert und im Dateisystem mehrfach abgelegt. Standardmässig sind folgende Skalierungsoptionen aktiv:
Konfiguration->Medien->Bildstile
Man kann hier auch einen oder mehrere eigene Bildstile anlegen, ich hab mir hier mal einen mit der Breite 50 px und dem Effekt „Skalierung“ genommen und ihn Briefmarke genannt.
Bildanzeige: Steuerung über Inhaltstyp
Wann welcher der angelegten Bildstile verwendet wird, wird über die Inhaltstypen (!) gesteuert. Suchen sie sich einen Inhaltstyp heraus, dem bereits ein Image-Field zugeordnet ist,oder legen sie es neu an. Ich nehm mal den „article“. Über Struktur->Inhaltstypen->Artikel->Anzeige verwalten gelangt man in ein Auswahlmenü, in dem man die Bildstile für die Anzeigemodi Standard und Anriss festlegen kann. Ich ändere das mal im Anrisstext auf meinen selbstdefinierten Bildstil Briefmarke. Ergebnis in der gekürzten Ansicht:
In der Seitenansicht bleibt es beim „grossen“ Bild mit dem voreingestellten Format „Large (480×480)“.
Weitere Einstellungsmöglichkeiten
Über Struktur » Inhaltstypen » Article » Felder verwalten kann man bei EINSTELLUNGEN FÜR DAS IMAGE-FELD beim Punkt Anzahl von Werten einstellen, wie viele Bilder maximal zu einem Artikel hochgeladen werden können, Default ist hier 1. Wie die Bilder dann im Artikel angezeigt werden kommt auf den voreingestellten Bildstil an. Mehrere eingefügte Bilder werden untereinander angezeigt, auch wenn sie theoretisch nebeneinander Platz hätten, das finde ich weniger schön. ( Anmerkung: Man kann sicher ins CSS eingreifen, aber ich glaube, das lässt sich auch über Views lösen)
Man kann hier auch die Option „Bildtitel“ mit aktivieren, das ergibt dann später einen Hovertext bei der Bildanzeige auf der Webseite. Ebenso kann man ein Default-Bild einstellen, eine maximale und minimale Bildauflösung einstellen und eine maximale Upload-Grösse definieren.
Es hat auch Vorteile
Man ist es ja von WordPress her gewohnt, Bilder überall und in jeder gewünschten Grösse in einen Beitrag oder auf einer Seite einfügen zu können. Die restriktivere Steuerung über Bildstile in Drupal hat vielleicht den Vorteil, dass für einen bestimmten Inhaltstyp immer ein einheitliches Layout verwendet wird. Ausserdem hat man hier im Gegensatz zu WordPress noch eine Chance, den Alt-Text und den Titel für jedes Bild im Nachhinein nochmal zu bearbeiten:
Wem das immer noch nicht genügt an Bild-Einstellmöglichkeiten, der braucht ein oder mehrere Zusatzmodule. Eines der am meisten empfohlenen ist Insert https://www.drupal.org/project/insert, ich habs aber auf meiner Testinstallation noch nicht zum Laufen gekriegt.
Bilder mit Views nebeneinander ausgeben
Neue View erstellen, z.B. „Bilder nebeneinander“. Anzeigen Inhalt of type Article, Create a page. Edit&Continue. Format Anzeigen Inhalt Fields, Felder Hinzufügen Inhalt (Bild), Bezeichnung leer machen, Bilddarstellung „Thumbnail“ auswählen. Wahlweise noch Fields hinzufügen Inhalt (Body), Bezeichnung entfernen. Das sollte dann in etwa so aussehen (der erste Artikel hat nur 1 Bild):
Ohne Views geht gar nix – aber mit Views geht alles!
Und soweit ich das überblicke, hats ja Views in den Core von Drupal 8 geschafft. Aber Drupal 7 ohne Views ist noch nicht mal die halbe Miete, ohne das geniale (und komplexe) Abfragetool kommt man an das volle Potential von Drupal gar nicht ran.
Views ist allerdings mit einer steinigen, steilen Lernkurve behaftet, ohne viel Ausprobieren und Googlen geht da gar nichts. Je mehr man sich aber mit dem vielseitigen Tool beschäftigt, um so klarer wird es dass es nix gibt was nicht geht – oder fast nix.
Es lassen sich alle, aber auch wirklich alle Datenbankinhalte strukturiert abfragen und optisch ansprechend aufbereitet darstellen. Die Frage ist halt nur, wie lang man basteln und forschen muss bis zum gewünschten Ergebnis.
Ich würde mir wünschen, dass viele der öfter gebrauchten und populären Views-Anwendungen schon als Vorlagen mitgeliefert würden, so dass man nicht jedesmal das Rad neu erfinden muss.
Wirklich prima: die Inhaltstypen
Mit dem Konzept der benutzerdefinierten Inhaltstypen wird es einem leicht gemacht, die Inhalte auch komplexer Webseiten strukturiert zu präsentieren. Mit den entsprechenden Layout-Overrides gepaart hat man ein mächtiges Werkzeug, logisch separierte Inhalte auch nach den eigenen Bedürfnissen aufbereitet darzustellen. Das ersetzt locker die Multiblog-Fähigkeit wie man sie z.B. bei Joomla hat, die Verwaltung und Präsentation der Inhaltstypen läßt sich fein differenziert steuern und macht richtig Spaß.
Die API: braucht man gar nicht so oft
Weil man bei genauem Hinsehen oft feststellt, dass eine gewünschte Funktionalität in Drupal schon vorhanden ist bzw. mit Views relativ leicht zu realisieren ist. Das bisschen was ich von der API bislang gebraucht habe war eigentlich immer sehr straightforward und gut dokumentiert, besonders von den Möglichkeiten der Datenbankoperationen bin ich sehr angetan. Erhebt sich die Frage, ob das mit Drupal 8 so bleiben wird… die APIs sind komplett neu aufgestellt worden.
Mein Fazit: Drupal ist das CMS der Wahl für alte Datenbanker
Wenn man es mit vielen unterschiedlichen Inhalten zu tun hat und auch mit grossen Datenmengen, die man über ruhig auch komplexe Abfragen an die Web-Oberfläche bringen möchte, ist Drupal mit Views unschlagbar.
Wenn es in der Datenbank drinsteckt, kriegt man es in Drupal auch wieder heraus, und das oft auf erstaunlich einfachen Wegen. Keine Verrenkungen wie in WordPress, wo für alle möglichen Inhalte die wp_content herhalten muss, und auch kein Vergleich zu Joomla, das einem den Weg zu den Datenbankinhalten oft unnötig schwierig macht.
Da kann man es dann schon verschmerzen, dass man mit Views erst mal eine Runde üben muss, der geniale Funktionsumfang wiegt die wenig intuitive Bedienung leicht auf. Ich bin mal gespannt, wie die Integration von Views in Drupal 8 gelungen ist!
Mir genügt es völlig, wenn in der Blogansicht die Titel der Rezepte angezeigt werden. Teaser Text verwende ich nicht, weil mir das zuviel Arbeit ist, den müsste ich ja für jedes der über 300 Rezepte neu erstellen! Also blende ich den Body des Rezeptes in der Blogansicht komplett aus, das funktioniert mit folgendem Eintrag in meinem Template Override node–blog.tpl.php:
<div class="content clearfix"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
//*****************Inhalt nur in der Full-Ansicht anzeigenif ($view_mode == 'full'){print render($content);}
?>
Das sieht dann so aus:
Überschrift „Weblogs“ auf der Blogseite ändern
Dafür legt man sich einen Override der der page.tpl.php an und benennt ihn mit page–blog.tpl.php. Dann nach dem Eintrag suchen:
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“.
(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.
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:
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.
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.
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.
Drupal ist nach WordPress und Joomla das drittverbreitetste CMS weltweit, laut Statista waren es Ende September 2017 1,14 Millionen Webseiten „Powered by Drupal“. Es wird oft damit Werbung gemacht, dass Drupal von vielen „offiziellen“ Webseiten wie Regierungen, Bildungseinrichtungen und internationalen Firmen eingesetzt wird und somit als ernstzunehmende CMS-Alternative zu den härtesten Konkurrenten WordPress und Joomla zu rechnen ist.
Am verbreitetsten ist immer noch der Versionszweig 7.x, die Version 8.x schwächelt noch ein bisschen in der Verfügbarkeit zusätzlicher Module im public domain Bereich und in der Dokumentation. Einen kurzen, knackigen Vergleich der beiden Versionen findet man hier bei DB Difference Between. Ich habe mich vor allem wegen der Anzahl und Qualität der verfügbaren Tutorials und Dokumentationen für die Version 7.57 entschieden, und zwar zum Testen in einer lokalen Installation auf XAMPP 7.2. Das wirft zwar ein paar PHP-Glitches (Deprecated function: The each() function is deprecated…), aber scheint im Großen und Ganzen einwandfrei zu funktionieren. Drupal ist allerdings auch bei vielen Hostern als Pre-Package im Angebot und kann dort sehr leicht zum Testen eingerichtet werden
Drupal präsentiert sich erstmal sehr spartanisch, nach erfolgreicher Installation sieht die Startseite recht mager aus, die Meldung „Es wurde noch kein Inhalt für die Startseite erstellt.“ fordert eine erste Aktion heraus. Mit Klick auf Neuen Inhalt hinzufügen->Einfache Seite landet man in einem sehr mageren Editor, aber da kümmern wir uns gleich drum. Geben sie ihrer neuen Seite einen netten Namen „Willkommen“ wäre OK und schreiben sie etwas Text hinein. Damit diese Seite jetzt auch auf der Startseite angezeigt wird, muss man unter Menüeinstellungen die Option „Menüpunkt erstellen“ anhaken, und unter „Veröffentlichungseinstellungen“ den Punkt „Auf der Startseite anzeigen“ anhaken. Speichern, und jetzt haben wir unseren ersten Menüpunkt.
Das Standard-Theme: Bartik 7.57
Genau wie WordPress und Joomla verwendet Drupal Themes, um das Aussehen der Seite zu steuern. Ich bleibe beim Standard-Theme Bartik und nehme nur ein paar Konfigurationseinstellungen vor. Eine feine Dokumentation über das Theme Bartik und dessen Regions findet man hier: https://www.drupal.org/docs/7/core/themes/bartik/introduction-to-bartik-theme
Die Blockpositions-Vorschau
Es gibt aber auch wie in Joomla die Option einer Theme-Vorschau mit den vorhandenen Blöcken, dazu unter Struktur->aktuelles Theme->Block-Regionen veranschaulichen (Bartik) anwählen, und man bekommt eine sehr schöne grafische Übersicht.
Ändern des Titels und des Slogans
Unter Konfiguration->System->Website-Informationen können sie Titel und Slogan der Webseite einstellen.
Ändern des Logos und des Favicons
Unter Design->akt. Theme->Einstellungen kann man ein individuelles Logo hochladen, dieses sollte allerdings bereits auf passendes Mass skaliert sein. Hier könnte man auch ein eigenes Favicon hochladen, sowie bestimmte Seitenelemente ein- und ausblenden. An dieser Stelle kann man auch das Farbschema des Themes einstellen, ich hab mal „Pflaume“ genommen.
Alle Entitäten einer Drupalseite werden als Nodes (siehe hier in den Joomla Docs) behandelt. Die relevanten Node-Tabellen werden hier kurz und knapp erklärt. Die Inhalte von Seiten und Beiträgen findet man in den Fields-Tabellen wieder, da kommen wir später noch dazu.
Jetzt kümmern wir uns erstmal um die Inhalte unserer neuen Seite, und dazu gibts einen neuen Beitrag.