Serendipity - Styx Edition

Individuelle Weblogs für Einsteiger und Profis

Styx is what Serendipity should be

Copyright
   Garvin Hicking (s9y.org),
   Ian Styx (https://github.com/ophian/)

 

 

Serendipity Styx 3.9, Juli 2022

Vorwort

Styx kann als Serendipity Next gelesen werden!

 

Dies ist eine Neubearbeitung für Serendipity Styx 3.9 und beruht auf meiner damaligen S9y-Origin "Entwurfs"-Revision für den Entwicklungsstand von Serendipity 2.1 (Alpha-Builds) aus dem Frühjahr 2016, Seit dem Spätsommer 2018 lag diese hier in einer aktuelleren Neubearbeitung für Styx 2.4 vor, welche jetzt erneut für die Styx 3er Series überarbeitet wurde. Diese Bearbeitungen beruhen alle auf dem damals veröffentlichten Buchtext und der im März 2012 an den Autor und die Community vom Verlag zurückgegebenen Rechte.

Die Entwurfs-Revision legte zu ihrem damaligen Zeitpunkt keinen absoluten Anspruch auf Vollständigkeit (insbesondere der kompletten Überarbeitung und Auflistung aller Konfigurationsoptionen aller hier genannten Plugins) und besitzt selbst jetzt in den Überarbeitungen noch ein paar wenige offene Fragen, welche mit ??? markiert sind. Bis auf ein paar Kleinigkeiten wurde darauf Wert gelegt, den ursprünglichen Text so weit wie möglich zu erhalten, doch immer dann konsequent zu überarbeiten bzw. zu ergänzen, wenn der damalige Text heutzutage keinen Sinn mehr machte, oder mit Erscheinen von Serendipity 2.0/2.1 bzw. Serendipity Styx hoffnungslos überholt war.

Des Weiteren wurden außer der Einrückung verschiedene Farben verwendet, um bestimmte Einheiten klarer herauszustellen. Das helle Blau dient der Anzeige von bestimmten Listendarstellungen und Konfigurations-Optionen, insbesondere bei Plugins und überhaupt in Beziehung zum Backend. Ebenso wurde es (im light mode) als Grundlage bei der Aufzählung von Datenbanktabellenfeldern gewählt. Das helle Gelb wurde dann angewendet, wenn es um Smarty, oder klare Frontend / Template (Theme) -Eigenschaften, -Aufzählungen, CSS, Werte und Variablen ging. (Im dark mode allerdings etwas anders gelöst.) Zwischen diesem Gelb und Blau konnte aber nicht immer eine konsequente Unterscheidung vorgenommen werden; so dass mitunter die eine Farbe auch die andere sein könnte. Bestimmte Eigenschaften von gekennzeichneten Hervorhebungen, wie Smarty-Variablen, Datei-Namen, Verzeichnissen, Datenbankfeld-Namen, Importer, Serendipity-Hooks, etc. wurden farblich unterschiedlich markiert bzw. hervorgehoben, damit sie in der Fülle nicht untergehen.

Durch die Anordnung der Seitenstruktur, der Kapitel und ihrer Unterabteilungen, über eine jederzeit ausfahrbare Seitenleiste, siehe das "Hamburger" Symbol im Seitenkopf links, können Sie im Text beliebig hin- und herspringen. So können sie einen Anker des Inhaltsverzeichnisses anspringen und die Leiste durch einen beliebigen Klick auf der Inhaltsseite schließen, oder das weiße im Kopf als Linksymbol zum Schließen der ausgefahrenen Seitenleiste benutzen. Im Text selbst sehen Sie die diagonal-orangenen Kettensymbole der Überschriften, die zum gleichen Ankersprung-Ergebnis führen. Der beim Seitenscrollen auf der angezeigten Seite unten rechts eingeblendete große Button, bringt Sie im Schnelldurchlauf wieder ganz nach oben. Durch die farblich mitwachsende Anzeige des Seitenfortschritts ("progress-bar") in der Sie begleitenden Navigationsleiste im Seitenkopf, können Sie gut einschätzen lernen, an welcher Stelle des Buches Sie sich gerade befinden. Zu guter Letzt gibt es noch die Example Sprungtags im Text, die zu Ergänzungen, Vertiefungen, Fortsetzungen des Gesagten an anderer Stelle des Textes führen.

Es ist noch unentschieden, ob es zu einer weiteren physischen Aufteilung (zum Beispiel in einzelne Kapitel per Request) des recht langen Textes kommen muss, damit die Ladezeiten und Swaps für User mit wenig Spielraum mit ihrem lokalem RAM weniger intensiv sind. Ansonsten ist die momentane Version darauf eingerichtet alles "in-one" zu laden, um anschließend per Javascript bestimmte Verwandlungen wie Sprungelemente und Linkanker vornehmen zu können. Danach müssen Sie nichts mehr neu laden, sondern können sich mittels der Sprungmarken und der ausfahrbaren Seitenleistennavigation im vollständig geladenen und aufbereiteten Werk frei herum bewegen. Ein erneutes Laden geschieht dann zum größten Teil aus dem Browsercache und ist wesentlich schneller erledigt.

Ansonsten ist noch viel Raum für weitere Optimierungen gegeben!

Ein großer Dank geht an Garvin Hicking, der mit seiner umfassenden Arbeit für Serendipity seit Mitte 2003 und seinem veröffentlichten Buch vom April 2008 den gewichtigen Grundstock für diese Neubearbeitung legte, ohne jene nicht wäre was sie ist!

 

 

Ian Styx, für die Serendipity Styx Edition

Juli 2022.

 

 

Origin available under CC-BY-NC-SA license.

Kapitel 1: Einführung

Chats und Foren dominierten noch in den 90er Jahren das interaktive Internet. Diskussionen wurden darüber hinaus allenfalls über Newsgroups und Mailbox-Systeme geführt. Mit der allgemeinen Verfügbarkeit von Internetzugängen wuchs auch das Bedürfnis nach einem System, um sich selbst in diesem neuen Medium zu präsentieren: Das sogenannte Self-Publishing war geboren.

Während der Boom der Wiki-Communities aus dem vornehmlich akademischen Wunsch nach Wissensaustausch resultierte, entstand auch für das Self-Publishing eine neue Art von Software - Weblogs, kurz: Blogs. Der Name ist Programm, denn die Grundfunktion ist ein persönliches Tagebuch (ein Logbuch) im Internet. Blogsysteme zeichnet aus, dass sie Inhalte sehr einfach darstellen und fassbar machen, denn schließlich sollen die persönlichen Bemerkungen viele -- auch zufällige - Besucher schon auf den ersten Blick ansprechen.

Ganz bewusst setzen sich Blogsysteme von den Content-Management-Systemen (CMS) ab, die aus Blogger-Sicht zu teuer, vor allem aber zu komplex sind. Mit steigender Popularität entstanden zahlreiche Blogsysteme im Open-Source- wie im kommerziellen Umfeld: Serendipity, Movable Type, Blogger.com, b2 Evolution, WordPress und andere.

Mittlerweile wird Blog-Software nicht nur für persönliche oder firmenspezifische Tagebücher eingesetzt, sondern ebenso für kleine, stark angepasste und individualisierte Projekt-/Produktseiten, Firmenpräsentationen oder redaktionelle Inhalte jeder Art.

Serendipity ist eines dieser Systeme. Es entstand aus dem Wunsch nach einer freien Software mit größtmöglicher Flexibilität, worauf auch der - für die deutsche Zunge zugegebenermaßen etwas gewöhnungsbedürftige - Name hinweist, der etwa bedeutet: "eine zufällige Entdeckung, die Überraschendes und Großartiges mit sich bringt". Und da der Name nicht nur schwierig auszusprechen, sondern auch umständlich zu schreiben ist, kürzt man ihn in Fachkreisen einfach ab: s9y. Geeks ersetzen längere Wörter gerne durch deren Anfangs- und Endbuchstaben und schreiben die Zahl der ausgelassenen Buchstaben einfach dazwischen...

Serendipity hat den Anspruch, von Anfängern einfach zu bedienen, aber von fortgeschrittenen Anwendern weitestgehend modifizierbar zu sein. Um auf möglichst vielen verschiedenen Serversystemen zu laufen, sollte es mit mehreren Datenbanksystemen kompatibel sein, die verbreitete Skriptsprache PHP einsetzen und einfach auf dem eigenen Webspace installierbar sein. Die Wahl der Lizenz für das System fiel auf BSD, denn diese räumt im Gegensatz zur GNU GPL auch die Möglichkeit ein, das Blogsystem in kommerziellem Umfeld sinnvoll zu nutzen.

So hob Anfang 2002 ein Kernteam bekannter PHP-Entwickler Serendipity aus der Taufe: Jannis Hermanns, Sterling Hughes, George Schlossnagle, Wez Furlong, Joyce Park und Joseph Tate sowie Sebastian Bergmann vom phpUnit-Projekt.[*] Die PHP-Testsuite ist unter https://phpunit.de/ erhältlich. Mit den Jahren entwickelten wechselnde Programmierer das System stetig und konsequent weiter. Seit 2003 war der Autor des ursprünglichen Buchtextes, Garvin Hicking, leitender Entwickler.

Dieses Online-Buch bezieht sich auf die aktuelle Serendipity Styx Version 3.9 und möchte einen umfassenden Überblick über das System und seine Anpassbarkeit vermitteln. Neben der Bedienung der Software werden Sie darum auch lernen, eigene Plugins zu schreiben, Templates anzupassen und Konfigurationsänderungen vorzunehmen.

Wie gesagt, Serendipity Styx kann auch als Serendipity Next gelesen werden!

1.1 - Was unterscheidet ein Blog von einem CMS?

Was unterscheidet ein Blog von einem CMS?

Ein Blogsystem zielt darauf ab, einzelne Artikel möglichst einfach zu erfassen und in einem festen Rahmendesign darzustellen. Ein CMS hingegen verwaltet ganz unterschiedliche Inhalte in individuellen Designs und baut komplexe Navigationsstrukturen auf.

Für Blogsysteme sind alle Artikel grundsätzlich gleichwertig und werden nur chronologisch sortiert dargestellt. Ein CMS sollte Seiten unterschiedlich gewichten und diese verschlagworten und kategorisieren können. Darum bietet es sich für umfangreiche Webseiten an, die nicht nur eine "Seitenansammlung" darstellen, sondern eine komplexe Hierarchie abbilden, was den Umgang mit sog. "Teasern", Übersichten, Unter- und Parallelseiten erfordert.

Dies ist natürlich eine grobe Vereinfachung, da viele Blogsysteme inzwischen auch solch komplexe Anwendungen meistern. Für Serendipity gibt es beispielsweise das Plugin Statische Seiten, mit dem man Inhalte losgelöst von den chronologisch sortierten Artikeln erstellen und auch Hierarchien mit Unterseiten abbilden kann (siehe Seite staticpage). Oder das Freetag Plugin für die Indizierung durch Schlagworte.

Ein weiterer fundamentaler Unterschied ist die Ausrichtung eines CMS auf Mehrbenutzerfähigkeit und Workflows, so dass ein Artikel vor seiner Veröffentlichung verschiedene Arbeitsphasen möglicherweise verschiedener Redakteure durchläuft. Gerade für umfangreiche Webseiten ist es wichtig, dass mehrere Artikelversionen nebeneinander existieren können: Während man bereits an neuen Fassungen einer Seite arbeitet, soll die Online-Version unverändert für Besucher zur Verfügung stehen. Solch ausgefeilte Mechanismen sind im Blog-Umfeld meist nur unnötige Last.

Somit lässt sich ein Blog grundsätzlich als funktionsreduziertes CMS beschreiben. Das mag negativ klingen, hat aber tatsächlich einen großen Vorteil: Ein Blog geht zielgerichtet auf Bedürfnisse des Web-Publishings ein. Die Bearbeitungsprozesse sind einfacher, und Blog-spezifische Techniken (RSS-Feeds, XML-RPC, Widgets, Web-Services, interaktive Funktionalitäten wie Kommentare und Trackbacks [*] Eine Erklärung dieser Begriffe finden Sie im Kapitel Terminologie auf Seite Terminologie.) lassen sich meist mit wesentlich geringerem Aufwand einbinden als in umfangreichen Content-Management-Systemen.

1.2 - Warum Serendipity?

Warum Serendipity?

Serendipity versteht sich als erweiterbares Blog-Framework, dessen Kernarchitektur so offen konzipiert ist, dass man individuelle Anpassungen vornehmen kann, ohne an den Sourcecode selbst Hand anzulegen. Änderungen am Aussehen des Blogs lassen sich durch Templates vornehmen, Funktionalitäten durch Seitenleisten- und Ereignis-Plugins nachrüsten.

Diese Modularität macht es möglich, eigenen Code vor Updates der Serendipity-Version zu schützen. Seit Erscheinen der ersten Version legen die Entwickler sehr viel Wert auf Abwärtskompatibilität. Im Gegensatz zu anderen Systemen ließen sich bestehende Plugins bisher selbst bei großen Versionssprüngen weiterverwenden. Dies spricht zum einen für eine gesunde Weiterentwicklung des Systems, zum anderen auch für die Plugin-Architektur, die sich als sehr stabil erwiesen hat.

Gerade die Auslagerung von Code macht Serendipity auch im kommerziellen Umfeld interessant. Aufgrund der BSD-Lizenz kann man dieses Blogsystem verwenden, ohne hinzugeschriebenen Code veröffentlichen zu müssen.

Der Einsatz dynamischer PHP-Skripte gewährleistet, dass Serendipity im Gegensatz zu mit Perl, Ruby oder Python entwickelten Blogsystemen auf beinahe jedem Webserver lauffähig ist. Zudem macht die Unterstützung mehrerer Datenbank-Management-Systeme die Software portabel, so dass sie mit unterschiedlichen Datenbank-Servern einsatzfähig ist.

Darüber hinaus legen die Entwickler viel Wert auf guten Programmierstil (mit phpDoc-Funktionskommentaren, einheitlichen Einrückungen und einer kleinteiligen Funktions-API) und sicheren Code. Im Laufe der Serendipity-Entwicklung gab es bislang nur wenige Sicherheitslücken, die bei Bekanntwerden innerhalb weniger Stunden offiziell behoben wurden. Auch gegen weniger verbreitete Angriffsmöglichkeiten auf eine Webanwendung wie XSRF [*] XSRF steht für Cross-Site Request Forgery und beschreibt eine Angriffsmethode, bei der eine fremde Website mit Privilegien eines authentifizierten Benutzers Aktionen (zB. das Löschen aller Artikel) durchführt. stellte Serendipity frühzeitig Schutzmechanismen bereit.

Serendipity-Templates werden unter Verwendung des Templating-Frameworks Smarty, [*] https://www.smarty.net/ einem De-facto-Standard unter PHP, entwickelt. Zahlreiche Entwickler schwören auf dessen einfache Syntax, die es selbst Anfängern ermöglicht, die HTML-Ausgabe anzupassen, ohne PHP lernen zu müssen.

Das zentrale Plugin- und Template-Archiv namens Spartacus [*] Spartacus auf Styx bietet derzeit mehr als 160 Plugins und knapp 100 Templates an. Diese können Sie direkt aus der Verwaltungsoberfläche Ihrer eigenen Blog-Installation heraus installieren oder aktualisieren. Die dort aufgeführten Plugins werden großteils offiziell gewartet und entsprechen den vom Serendipity-Projekt vorgegebenen Anforderungen an Programmierstil und Sicherheit. Plugins mit identischer Funktionalität, die den Benutzer vor die Qual der Wahl stellen, findet man hier nicht, und auch auf Kompatibilität zu allen verfügbaren Serendipity-Versionen wird geachtet.

Da die Serendipity Kernentwickler derzeit aus Deutschland kommen, haben gerade deutsche Anwender den Vorteil einer stets aktuellen deutschen Übersetzung der Benutzeroberfläche. Zudem sorgen eine engagierte Community und ein großes Supportforum mit bislang über hundertausend Beiträgen dafür, dass Fragen zum System oder Rückfragen selten unbeantwortet bleiben. Serendipity wird sehr nah an den Wünschen der Community entwickelt - das Feature-Diktat von "oben herab" ist verpönt.

Natürlich kann Serendipity zum jetzigen Zeitpunkt noch nicht alles. Der größte Nachteil besteht wohl darin, dass man auf eine einzelne Blog-Instanz festgelegt ist. Unter-Blogs (thematisch oder auch pro Benutzer) lassen sich zwar hintricksen, aber an ein echtes Multi-Blogsystem wie Movable Type kommt die Software in dieser Hinsicht nicht heran.

Aufgrund der dynamischen Kompilierung jedes Seitenaufrufs verursacht Serendipity auch mehr Prozessorlast als solche Systeme, die mit exportiertem HTML arbeiten. Serendipity kann auf gut eingerichteten Servern zwar mehrere Dutzend Seitenaufrufe parallel verarbeiten, für den Einsatz einer Community mit Tausenden parallelen Seitenaufrufen pro Sekunde ist das System jedoch nicht konzipiert.

Serendipity hebt sich von der Konkurrenz anderer frei oder kommerziell erhältlicher Systeme vor allem in folgenden Punkten ab:

  • Die Browser-basierte Installationsoberfläche erlaubt sowohl eine weitgehend automatische Konfiguration, bei der nur essentielle Daten abgefragt werden, als auch die Einflussnahme auf nahezu alle Parameter bei der Fortgeschrittenen Installation (Seite webinstaller). Jede installierte Version lässt sich über die integrierte Oberfläche auf die jeweils aktuellste updaten (Seite s9yupdate).
  • Texte pflegt man auf Wunsch mit übersichtlichen, einfach verständlichen und funktionalen WYSIWYG-Editoren ein (Seite WYSIWYG).
  • Die integrierte Mediathek für Bilder, PDFs, MP3s etc. gestattet Rechtemanagement, Stichwortsuche und automatische Vorschaugrafiken (Seite Mediathek). Über einen gesonderten Dialog (Seite Mediathek-Popup) bindet man die Dateien aus der Mediathek mit wählbaren Layout-Optionen einfach in Blog-Artikel ein. Die Inhalte dieser Mediathek lassen sich dynamisch in einer Verzeichnisansicht darstellen, wie Sie es zB. vom Windows Explorer gewöhnt sind.
  • Das gruppenbasiertes Rollenkonzept von Serendipity erlaubt das Anlegen unbegrenzt vieler Autorengruppen und das Vergeben individueller Rechte (Seite Benutzerverwaltung und Gruppenverwaltung).
  • Kommentare und Kategorien lassen sich verschachteln, Einträge mehreren Kategorien zuordnen. Natürlich implementiert Serendipity alle gängigen Blog-Standards (und ist somit vollständig Buzzword-kompatibel): Trackback, Pingback, XML-RPC, XHTML 1.1, CSS, RSS, Atom ... (siehe Seite Terminologie).
  • Eine flexible Plugin-API erlaubt es Ihnen, Seitenleisten- und Ereignis-Plugins einzusetzen oder zu entwickeln, die das System ohne Eingriffe in den Serendipity-Code beliebig erweitern (Seite pluginapi).
  • Das bereits erwähnte Online-Plugin-Archiv (Spartacus) erlaubt die Ein-Klick-Installation von mehr als 160 Plugins (Seite Spartacus).
  • Dank Plugin-Verwaltung per Drag&Drop können Sie das Aussehen und die Inhalte der Seitenleisten des Blogs nach Ihren Wünschen gestalten, ohne Templatedateien manuell ändern zu müssen (Seite Plugins verwalten).
  • Das dynamische, Smarty-basierte Template-Konzept erlaubt die strukturelle Änderung sämtlicher Frontend-Elemente über aufeinander aufbauende Templatedateien. Smarty-Templates dürfen ohne Einschränkung Kontrollstrukturen wie Schleifen, Abfragen und Variablen enthalten und optional mit zusätzlichem PHP-Code versehen werden (Seite Smarty-Templates).
  • Einfache Integration in bestehende Webseiten. Das Konzept der Shared Installation ermöglicht den Betrieb beliebig vieler Blog-Instanzen mit nur einer Code-Basis (Seite sharedinstall).
  • Serendipity kämpft an Ihrer Seite mit umfangreichen, konfigurierbaren Anti-Spam-Maßnahmen gegen unerwünschte Kommentare oder Trackbacks. Als Schlagworte seien Captcha, automatische Moderation, Akismet und Blacklists genannt (Seite spamblock).
  • Beim Datenbanksystem haben Sie die Wahl zwischen MySQL(i), PostgreSQL und SQLite.
  • Serendipity ist nicht nur Open Source, sondern unterliegt sogar der BSD-Lizenz. Somit kann das System auch in kommerziellen Programmen seinen Einsatz finden.
  • Ob WordPress, MoveableType, b2Evo, blogger oder andere -- Serendipity importiert auf Wunsch den Inhalt zahlreicher anderer Blogsysteme (Seite Daten importieren).
1.3 - Voraussetzungen

Voraussetzungen

Serendipity als Software wird nicht auf Ihrem persönlichen Computer ausgeführt, sondern läuft im Internet auf einem Webserver. Einen solchen mietet man meistens bei Providern wie Uberspace [*] https://uberspace.de/de/, Manitu [*] https://www.manitu.de/, 1&1 [*] https://www.ionos.de/, Strato [*] https://www.strato.de/, tiggerswelt [*] https://www.tiggerswelt.net/ oder anderen [*] https://www.webhostlist.de/; die Dienstleistung, die diese erbringen, nennt man Webhosting.

Für einen gewissen Monatsbeitrag erhalten Sie Zugangsdaten zu einem Rechner, auf den Sie HTML-Dateien und Software wie Serendipity mittels eines FTP-Programms hochladen können. So gespeicherte Software können Sie auf dem Webserver als Anwendungen ausführen; darauf greifen Sie mittels eines Webbrowsers von Ihrem PC aus zu - ganz so, wie Sie es von Webseiten wie eBay oder Amazon kennen.

Die Dateien, die zu Serendipity gehören, enthalten Quellcode, der in der Skriptsprache PHP [*] PHP ist die Abkürzung von PHP Hypertext Preprocessor, siehe https://www.php.net/. geschrieben ist. Ein PHP-Interpreter macht diesen bei jedem Aufruf auf dem Webserver maschinenlesbar. Das Ergebnis dieser Aktion liefert der Webserver an den Browser des Zielsystems. Laienhaft gesprochen, ließe sich PHP als Betriebssystem für Serendipity ansehen.

Dies ist wichtig, um die generelle Funktionsweise von Serendipity zu verstehen. Im Gegensatz zu Webbrowsern oder einer Office-Anwendung kann Serendipity selbst keine Echtzeit-Eingaben von Ihnen annehmen. Serendipity läuft komplett auf dem Webserver und wird über Ihren Browser sozusagen ferngesteuert. Dabei sendet Ihr Browser eine Anfrage an den Server, Serendipity verarbeitet diese und schickt ein Resultat. Danach geht der Vorgang wieder von vorne los.

Dies hat den Vorteil, dass auch die Besucher Ihrer Seite stets aktuelle Daten zu sehen bekommen. Da jeder Aufruf dynamisch die aktuellsten Daten darstellt, kann Serendipity beispielsweise vorbereitete Artikel mit Erreichen eines speziellen Datums automatisch einbinden, ohne dass Sie nochmals tätig werden müssen. Das ist ein fundamentaler Unterschied zu einem statischen Blogsystem wie MovableType. Dort speichert der Server (vereinfacht gesagt) nur HTML-Dateien, in die sich dynamische Komponenten wie die neuesten Kommentare oder die aktuelle Server-Uhrzeit nicht ohne Weiteres einbinden lassen.

Diese Vorgehensweise von Serendipity hat zahlreiche Vorteile: Ein Besucher kann, abhängig von seinen Zugriffsrechten, Artikel sehen, die andere nicht zu Gesicht bekommen. Ein Besucher kann das Design der Webseite selbständig durch Wahl einer Designvorlage verändern. Die Sprache der Benutzeroberfläche richtet sich auf Wunsch nach seinen Einstellungen usw.

Diese Dynamik hat zwar auch Nachteile (so verlangt sie nach mehr Speicher und macht das System langsamer), ermöglicht Ihnen als Blogbetreiber aber auch interessante Möglichkeiten, die wir im Folgenden detailliert beschreiben werden.

Um ein aktuelles Serendipity Styx einzusetzen, benötigen Sie SSH oder FTP-Zugriff auf einen Webserver, auf dem eine aktuelle PHP-Version (mindestens PHP 7.3) installiert ist und auf dem der Webhoster Zugriff auf eine Datenbank (MySQL (bevorzugt), PostgreSQL, SQLite) gewährt. Als Webserver-Software eignen sich Apache (bevorzugt), Nginx, Lighttpd und Microsoft IIS. Das Blogsystem lässt sich somit sowohl auf Windows- als auch auf Unix-Derivaten einsetzen.

Mit der Serendipity 1.7.x Serie stieg die interne Voraussetzung auf PHP 5.2 und mit dem Erscheinen von Serendipity 2.1 auf mindestens PHP 5.3, besser min 5.4+. Die letzte aktuelle Version der Styx 2er Serie, Serendipity Styx 2.9.5 vom 2. Mai 2020, hatte bereits PHP 5.6 als minimale Voraussetzung. Heutzutage ist mindestens PHP 7.4+ Voraussetzung, um in den erweiterten Genuss der sprachlichen Modellpflege außerhalb gravierender Sicherheitsfixes zu kommen. Vor allen Dingen, weil der Support für alle alten Versionen abgelaufen ist und die Supportzeiten immer kürzer wurden. Wie früher, lange Jahre auf alten PHP Versionen zu hocken kann schwerwiegende Sicherheitslücken eröffnen. Treten Sie ihren Providern also auf die Füße!

Damit Serendipity auf dem eigenen Webserver laufen kann, muss man einige PHP-Einstellungen berücksichtigen. Üblicherweise sind sie passend konfiguriert, so dass Sie als unbedarfter Benutzer direkt zum Kapitel Installation ab Seite Installation springen können, wenn Sie Ihren Webserver nicht selbst aufsetzen und dem Techniker bei Ihrem Provider keine Hinweise geben müssen.

1.3.1 - Systemseitige Einstellungen

Systemseitige Einstellungen

Um herauszufinden, welche PHP-Module auf Ihrem Webserver installiert sind, laden Sie folgende kleine Datei namens info.php in das Webdaten-Stammverzeichnis (auch Document Root genannt) [*] Das ist meistens das Stammverzeichnis, in dem Sie bei Benutzung Ihres FTP-Zugangs standardmäßig zu Beginn landen. Je nachdem, wie Ihr Provider den Webserver konfiguriert hat, kann es aber auch sein, dass Sie zuerst in ein Verzeichnis wie htdocs oder httpdocs wechseln müssen, um in das Stammverzeichnis des Webservers zu gelangen. auf den Server (im Buch www.example.com genannt) und rufen diese in einem Browser über http://www.example.com/info.php auf:

Aus Gründen der Einfachheit nutzen wir für diese Beispiel URLs das ungesicherte http:// Protokoll-Präfix, empfehlen aber dringend im realen Leben immer https:// über ein vertrauenswürdiges Zertfikat zu verwenden!


    <?php phpinfo(); ?>

Der Browser sollte dann eine Übersicht darstellen, aus der Sie Ihre aktuellen Einstellungen herauslesen können. Folgende Module benötigt Serendipity:

  • Das PHP-Modul session muss installiert und aktiviert sein sowie Session-Cookies zulassen. Dies erreicht man mit der php.ini-Einstellung session.use_cookies = On Serendipity verlangt darüber hinaus, dass die PHP-Sessiondateien schreibbar sind. Die php.ini-Einstellung session.save_path muss demnach auf ein Verzeichnis zeigen, in dem der Webserver bzw. PHP Schreibrechte hat. Gerade bei Windows-Servern enthält diese Variable häufig ein nicht existierendes oder nicht beschreibbares Verzeichnis.
  • Damit Serendipity in anderen Zeichensätzen verfasste Texte nach UTF-8 konvertieren und seine XML-Funktionalitäten ausspielen kann, muss das (standardmäßig vorhandene) PHP-Modul xml/libxml installiert und aktiviert sein.
  • Für andere Zeichensatzkonvertierungen, die besonders bei Import- und Exportvorgängen (zB. von RSS-Feeds) nötig werden, kann Serendipity sowohl das PHP-Modul iconv als auch mbstring verwenden. Beide Module sind in aktuellen PHP5-Versionen standardmäßig aktiviert.
  • Um Zeichenketten zu finden und zu bearbeiten, setzt Serendipity häufig reguläre Ausdrücke ein. Diese Funktionalität liefert das (standardmäßig installierte) PHP-Modul pcre.
  • Um die Mediathek vernünftig nutzen zu können, benötigen Sie entweder das PHP-Modul gd oder das Paket ImageMagick. Sollten Sie Letzteres benutzen, müssen die Dateien des Pakets für Ihren Web-Benutzer ausführbar sein.
  • Damit Serendipity auf fremde Webseiten zugreifen kann, um zB. Webservices zu integrieren und den Download von Plugins zu ermöglichen, benötigt es das (standardmäßig aktivierte) PHP-Modul socket, das Netzwerkfunktionen bereitstellt. Selbst wenn das Modul vorhanden ist, kann es sein, dass Firewall-Einstellungen am Server die Verbindung zu fremden Servern auf HTTP-Port 80 (oder anderen) verbieten. Je nach Einsatzzweck müssen Sie Verbindungen zu den Servern, die Serendipity von sich aus anspricht (zB. github.com für den Download von Plugins), explizit erlauben. Sollte dies nicht möglich sein, können Sie Serendipity zwar nutzen, müssen aber auf die entsprechende Funktionalität verzichten.
  • Damit die Serendipity-Komponenten intern auf https-URLs zugreifen können (und beispielsweise Trackbacks zu solchen geschützten URLs senden können), wird das PHP-Modul openssl benötigt. Ebenso wichtig ist, dass Ihr Serversystem mindestens openSSL ab Version 1.1.1d (zB. in Debian Buster) einsetzt, damit keine Kompromisse bei der Verschlüsselungsstärke für "langlebig" gespeicherte Auto-Logins (siehe Wartung) gemacht werden müssen.
  • Soll Serendipity die HTML-Seiten per gzip-Kompression bündeln, wird das PHP-Modul zlib benötigt.
  • Um E-Mails zu versenden (zB. um auf neue Kommentare hinzuweisen), muss PHP mit der sendmail-Option kompiliert worden sein.
  • Abgesehen von einem Datenbanksystem muss auf Ihrem Server auch die Client-Schnittstelle für die jeweilige Datenbank (MySQL(i), PostgreSQL, SQLite) als PHP-Modul (mysqli, pgsql, sqlite) eingebunden sein. Standardmäßig wird PHP mit MySQL-Bibliotheken eingerichtet; seit PHP 5 ist auch das Datenbanksystem SQLite üblicherweise aktiviert.
  • Um die Geschwindigkeit zu erhöhen, empfiehlt sich der Einsatz von PHP-Bytecode-Caches wie APC (apc), ZendCache oder ionCube.

PHP bietet zahlreiche sicherheitsrelevante Parameter, deren aktueller Wert bei der Installation des Blogs angezeigt und auf optimale Einstellung überprüft wird. All diese Einstellungen werden in der php.ini-Konfigurationsdatei geändert und bedürfen je nach Serverumgebung eines Neustarts der Webserver-Software. Für Hilfe zur Konfiguration von PHP und des jeweiligen Webservers schlagen Sie bitte in der Anleitung der jeweiligen Software nach, da dies den Rahmen dieses Buchs sprengen würde.

Kommt Apache zum Einsatz, können die Einstellungen auch pro Domain konfiguriert werden. Im jeweiligen <VirtualHost>-Abschnitt der Konfigurationsdatei (je nach Apache-Version unterschiedlich, meist httpd.conf oder auch in Dateien unterhalb des Apache conf.d-Verzeichnisses) muss dazu php_admin_value option wert bzw. php_value option wert eingetragen werden. Alle per php_value einstellbaren Optionen lassen sich auch über eine .htaccess-Datei im Stammverzeichnis des Webauftritts verändern. Einstellungen in dieser Datei haben Vorrang vor den globalen Optionen, die in der Webserverkonfiguration oder in php.ini definiert wurden. Via php_admin_value gesetzte Werte lassen sich von .htaccess-Dateien nicht mehr verändern.

Serendipity selbst legt bei der Installation eine solche Datei im Serendipity-Verzeichnis an. Sollte Ihr Webserver deren Auswertung unterbinden, können Sie die von Serendipity erstellte Datei gefahrlos löschen, verlieren dadurch aber die Möglichkeit, sprechende URLs zu benutzen sowie den Download einiger interner Dateien zu verhindern. Daher sollten Sie dies nur dann tun, wenn Ihr Provider auch nach Rücksprache die Auswertung der .htaccess-Dateien nicht genehmigt.

Haben Sie die Möglichkeit, die .htaccess-Nutzung über die Option AllowOverride in der Webserver-Konfigurationsdatei zuzulassen, geschieht dies im <VirtualHost>-Abschnitt mittels


    <Directory /pfad/zum/serendipity-verzeichnis>
  AllowOverride All
  Require all granted
</Directory>

Notfalls reicht auch AllowOverride Options FileInfo. Der Wert All erlaubt es Plugins grundsätzlich, weitere Webserver-Optionen zu setzen, und gibt Ihnen damit mehr Flexibilität.

Serendipity setzt in seiner .htaccess-Datei (siehe Seite htaccess) die Optionen session.use_trans_sid (Seite session-trans-sid) und register_globals (Seite register-globals). Bei der Benutzung des Apache-Moduls mod_rewrite kommen auch die Optionen RewriteEngine, RewriteBase und RewriteRule zum Einsatz. Die .htaccess-Optionen ErrorDocument und DirectoryIndex ermöglichen freie Permalinks (siehe Seite urlformung). Damit der Webserver bestimmte Serendipity-Dateien nicht im Klartext darstellt, folgt ein Deny from All als Sicherheitsmaßnahme.

Sprechende URLs

mod_rewrite ist kein PHP-Modul, sondern eine Funktionalität des Apache-Webservers. Wenn das Modul in Apache eingebunden wurde, erlaubt es einer Web-Anwendung, URLs zu benutzen, die nichts mit der tatsächlichen Dateistruktur auf dem Server zu tun haben. Statt die Nutzer damit zu behelligen, dass sie gerade ein PHP-Skript namens serendipity_admin.php nutzen, lässt man sie besser auf eine URL wie http://www.example.com/serendipity/admin/ zugreifen, die den Browser auf die tatsächlich existierende Datei serendipity_admin.php umleitet.

Das mod_rewrite-Modul ermöglicht es Serendipity, sogenannte sprechende URLs (auch URL-Umformung genannt) einzusetzen, die zum Beispiel Artikeltitel oder Kategorienamen enthalten. Für den Benutzer hat das den Vorteil, dass er eine URL schon anhand ihres Namens eindeutig zuweisen kann. Zudem können Suchroboter wie Google Ihre Artikel aufgrund der Schlagwörter in der URL besser indizieren.

Serendipity kann auch mit sprechenden URLs arbeiten, wenn mod_rewrite nicht verfügbar ist. Dann leitet der Apache-Webserver den Browser mittels eines Tricks an die echte URL weiter: Kann er eine Seite nicht finden, hängt es vom Error-Handling (genau: der ErrorDocument-Anweisung) ab, ob er die Fehlermeldung an den Browser durchreicht oder diesen auf eine andere Seite führt. Diese Methode ist jedoch einen Tick langsamer und unflexibler als mod_rewrite und klappt leider nicht auf allen Servern, da sie die oben erwähnte AllowOverride-Einstellung All voraussetzt. Andere Webserver wie Microsoft IIS oder lighttpd bieten diese Möglichkeiten leider nicht, daher ist dort keine URL-Umformung möglich [*] Mit etwas manuellem Aufwand und Kenntnis der Webserver lassen sich die benötigten Umformungsregeln jedoch auch nachrüsten (siehe Seite htaccess).

Bei der Installation wird Serendipity versuchen, automatisch die passendste Methode für Sie herauszufinden. Abhängig davon wird die .htaccess-Datei unterschiedlich erstellt, damit sie die jeweils erforderlichen Anweisungen enthält. Die gewünschte Methode zur URL-Umformung kann später in der Konfiguration natürlich auch umgestellt werden.

Sobald für Serendipity das mod_rewrite-Modul aktiviert ist, wird Serendipity sämtliche Aufrufe in seinem Unterverzeichnis umleiten. Sollten Sie später also einmal andere Programme unterhalb des Serendipity-Verzeichnisses aufrufen wollen, wird dies womöglich dazu führen, dass Sie statt des installierten Programms Serendipity sehen. Dies liegt daran, dass durch die .htaccess-Datei von Serendipity die URL-Umformungsregeln auch für alle Unterverzeichnisse gelten. Abhilfe können Sie schaffen, indem Sie in jedem Unterverzeichnis einer fremden Anwendung eine eigene .htaccess-Datei erstellen, mit dem Inhalt:


    RewriteEngine off

Diese Anweisung sorgt dafür, dass für das jeweilige Programm die URL-Umformung deaktiviert wird.

1.3.2 - Für Serendipity relevante PHP-Konfigurationsoptionen

Für Serendipity relevante PHP-Konfigurationsoptionen

Folgende Optionen sind/waren für Serendipity maßgeblich:

php_value session.use_cookies .htaccess, php.ini oder Webserverkonfiguration;

Serendipity speichert temporäre Dateien in PHP-Sessions. Um eine Session eindeutig zu identifizieren, vergibt das System Session-IDs, die üblicherweise in einem HTTP-Cookie gespeichert werden. Damit Serendipity PHP-Session-Cookies nutzen kann, muss diese Option aktiviert sein.

php_value session.use_trans_sid wird von Serendipity selbst in der .htaccess-Datei auf 0 gesetzt, kann aber auch in der php.ini oder der Webserverkonfiguration geändert werden;

Wenn der Browser keine Cookies akzeptiert, kann die Session-ID auch an die URL angehängt werden. PHP macht dies automatisch, wenn die Option session.use_trans_sid aktiviert ist. Diese Automatik ist seitens Serendipity jedoch aus Sicherheitsgründen unerwünscht. Sollte die Option dennoch aktiviert sein, können fremde Nutzer ungültige Session-IDs in die URL einschleusen und somit möglicherweise Ihre Session-Dateien kompromittieren. Ein Serendipity-Blog sollte daher niemals die Session-ID in einer URL angeben. Gibt Ihnen jemand eine Serendipity-URL wie http://www.example.com/serendipity/index.php?PHPSESSID=23213123adasd, kann es sein, dass diese Person Ihre Daten ausspähen will. Die serverseitige Deaktivierung der PHP-Option session.use_trans_sid beugt solchem Missbrauch vor.

php_admin_value allow_url_fopen nur in der php.ini oder in der Webserverkonfiguration änderbar;

PHP liest und behandelt URLs wie normale Dateien, wenn diese Option aktiviert ist. Gerade in älteren PHP-Versionen öffnet die Aktivierung dieser Option die Tür für Angriffsszenarien, in denen Code von fremden Internetseiten bei Ihnen ausgeführt werden kann (und so das System kompromittiert).

Damit die Aktivierung dieser sicherheitsrelevanten Option nicht erforderlich ist, greifen alle wichtigen Serendipity-Funktionen stattdessen über Sockets auf Netzwerk-Ressourcen zu. Nur veraltete Plugins erfordern möglicherweise die Aktivierung dieser Option. Es empfiehlt sich, sie zu deaktivieren und nur bei Bedarf zuzuschalten.

php_value register_globals wird von Serendipity selbst in der .htaccess-Datei auf off gesetzt, kann aber auch in php.ini oder der Webserverkonfiguration festgelegt werden;

Wenn diese Variable aktiviert ist, stellt PHP URL-Variablen im globalen Namensraum zur Verfügung. Ältere PHP-Programme benötigen diese Option, Serendipity greift jedoch nicht auf dieses Feature zurück. Aus Sicherheitsgründen ist es daher sehr zu empfehlen, die Option zu deaktivieren, sofern sie nicht für andere auf dem Webserver laufende Anwendungen benötigt wird.

php_admin_value safe_mode php_admin_value safe_mode_include_dir php_admin_value safe_mode_gid lediglich via php.ini oder Webserverkonfiguration änderbar;

PHPs Safe Mode stellt sicher, dass lokale PHP-Anwendungen wie Serendipity nur auf die Daten im eigenen Stammverzeichnis zugreifen und keine fremden Dateien einbinden können. Obwohl Serendipity mit dieser Einschränkung generell funktioniert, hat die Aktivierung dieses Modus folgende Nachteile: Die Optionen safe_mode_include_dir und safe_mode_gid legen fest, auf welche Verzeichnisse ein PHP-Skript Zugriff hat. Solange die Benutzerrechte (Permissions) und die Eigentumsverhältnisse (Ownership) auf dem Webserver für das Serendipity-Installationsverzeichnis korrekt gesetzt sind, lassen sich zB. Mediathek-Dateien problemlos hochladen. Ein falsch eingerichteter Safe Mode hat zur Folge, dass man mittels FTP oder Administrationsoberfläche keine Templates und andere Dateien hochladen und keine Bilder im Nachhinein löschen oder bearbeiten kann.

php_admin_value open_basedir nur via php.ini oder in der Webserverkonfiguration änderbar;

Ähnlich wie der Safe Mode lässt sich der Datei-Zugriffsschutz von PHP auf gewisse Verzeichnisse beschränken. Üblicherweise wird diese Option in Zusammenhang mit den Safe-Mode-Parametern konfiguriert. Während der Safe Mode lediglich den globalen Dateizugriff auf Gruppen- und Benutzerebene regelt, schränkt open_basedir den Zugriff auf vordefinierte Verzeichnisse ein.

Verwendet Ihr Webserver diese Option, gehört das Serendipity-Installationsverzeichnis unbedingt in die damit konfigurierte Verzeichnisliste. Anderenfalls kann der Webserver die Installationsdateien nicht aufrufen. Als Trennzeichen zwischen zwei Verzeichnispfaden dient in dieser Option das Semikolon (;).

Bleibt diese Option leer, ist der Zugriff auf alle Verzeichnisse möglich. Befindet sich bereits der Verzeichniseintrag . in der Auflistung, steht dieser Punkt synonym für das Verzeichnis, in dem ein PHP-Programm ausgeführt wird.

Gerade auf Servern, die viel mit symbolischen Dateisystemlinks arbeiten, muss der Administrator sorgfältig auf die korrekte Konfiguration der involvierten Verzeichnispfade achten.

php_value session.cookie_domain .htaccess, php.ini oder Webserverkonfiguration;

Wenn Serendipity einen HTTP-Cookie setzt (also zB. die Session-ID oder Login-Daten), enthalten diese den Namen der Domain, auf dem sich die Serendipity-Installation befindet. Falls in der PHP-Variable session.cookie_domain ein Domainname eingetragen ist, nutzt Serendipity stattdessen diese Domainangabe. In dem Fall stellen Sie sicher, dass sich dieser Wert mit dem Domainnamen des s9y-Servers deckt. Wenn ein Webserver für mehrere Domains konfiguriert ist und an dieser Stelle einen zentralen Domainnamen setzt, ist dies oft Ursache für spätere Probleme.

php_value session.save_path .htaccess, php.ini oder Webserverkonfiguration;

Alle von Serendipity gespeicherten Sessiondaten werden im mit dieser Option angegebenen Verzeichnis gespeichert. Der ausführende PHP-Prozess muss darauf Schreibrechte besitzen. Stellen Sie bei Windows-Servern sicher, dass hier ein gültiger Verzeichnisname (zB. C:/Temp) eingetragen ist. Sollten PHP-Sessions nicht schreibbar sein, zeigt Serendipity Fehlermeldungen an.

php_admin_value file_uploads php_value post_max_size php_value upload_max_filesize php_value max_input_time .htaccess, php.ini oder Webserverkonfiguration - file_uploads nur via php.ini oder Webserverkonfiguration änderbar;

Damit man überhaupt Dateien hochladen kann, muss file_uploads aktiv sein. Die maximale Dateigröße einer hochgeladenen Datei legen post_max_size, das ein Limit für HTTP-Requests mitsamt aller Daten definiert, und upload_max_filesize fest, das seinerseits eine spezielle Obergrenze nur für die mittels HTTP-Request übermittelten Dateien setzt. Die maximale Zeit für die Verarbeitung einer Datei beim Upload legt die Variable max_input_time fest.

php_admin_value memory_limit Einstellung via php.ini oder Webserverkonfiguration;

Serendipity benötigt einiges an Arbeitsspeicher auf dem Webserver. In einer Grundkonfiguration reichen meist zwischen drei und vier MB RAM. Der Speicherbedarf kann mit der Anzahl und der Komplexität von Plugins jedoch zunehmen.

Wie viel verfügbaren Speicher PHP-Anwendungen insgesamt nutzen dürfen, legt die Variable memory_limit fest. Sollte der Arbeitsspeicher Fehlermeldungen zufolge nicht mehr ausreichen, müssen Sie entweder dieses Limit hochsetzen oder Serendipity-Plugins löschen.

php_value display_errors php_value error_log .htaccess, php.ini oder httpd.conf;

Einige Server geben PHP-Fehlermeldungen nicht an den Browser weiter, um weniger leicht angreifbar zu sein.[*] Fehlermeldungen können kritische Dateipfade eines Servers offenlegen (Information Disclosure). Solche Informationen erlauben es Angreifern, bestimmte Rückschlüsse auf die Einrichtung eines Server zu ziehen. Wenn Sie allerdings einmal auf Probleme stoßen oder eigene Anpassungen eine leere Seite zum Ergebnis haben, empfiehlt es sich ggf., diese beiden Optionen temporär zu aktivieren. Die bessere Alternative heißt: häufiger die Fehler-Logfiles des Webservers prüfen.

 

1.3.3 - Die Serendipity .htaccess-Datei

Die Serendipity .htaccess-Datei

Befehle, die Serendipity eigenständig in die .htaccess-Datei im Stammverzeichnis einträgt, fasst die Software in einen Block ein, der mit #Begin s9y beginnt und mit #End s9y endet. Wenn Sie eigene Parameter in diese Datei einfügen, tun Sie dies daher vor #Begin s9y oder nach #End s9y. Das verhindert, dass Serendipity diese Zeilen ändert. Wenn Sie eine von Serendipity gesetzte Option überschreiben müssen, fügen Sie die Option mit dem von Ihnen gewünschten Wert am besten nach dem s9y-Block nochmals ein.

Auf einem Server ohne mod_rewrite sieht der s9y-Block wie folgt aus:

# BEGIN s9y
DirectoryIndex /serendipity/index.php
php_value session.use_trans_sid 0
php_value register_globals off

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y

Der erste Parameter, DirectoryIndex, legt die zentrale Serendipity-Datei index.php als Startseite des Blogs fest. Wenn in der Serendipity-Konfiguration bei der URL-Umformung (siehe Seite urlformung) die Option Apache ErrorHandling eingestellt wurde, folgt als nächste Zeile der Eintrag ErrorDocument 404 /serendipity/index.php. Die darin genannte Datei dient als Weiterleitungsziel für alle virtuellen URLs, auch bei der Verwendung von mod_rewrite.

Die nächsten beiden Zeilen deaktivieren die PHP-Einstellungen session.use_trans_sid und register_globals.

Zuletzt folgen mehrere Abschnitte, die den Zugriff auf interne Serendipity-Dateien (*.tpl.php, *.tpl, *.sql, *.inc.php und *.db) verbieten.

Wurde mod_rewrite aktiviert, sieht die .htaccess bis auf einen Block genauso aus wie die eben gezeigte:

# BEGIN s9y

ErrorDocument 404 /serendipity/index.php
DirectoryIndex /serendipity/index.php
php_value session.use_trans_sid 0
php_value register_globals off

RewriteEngine On
RewriteBase /serendipity/
RewriteRule ^((id/([0-9]+))/?) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
...
RewriteRule (.*.html?) index.php?url=/$1 [L,QSA]

<Files *.tpl.php>
    deny from all
</Files>
...

# END s9y

Hinzugekommen ist der Befehl RewriteEngine On, der mod_rewrite aktiviert. RewriteBase legt den Stammpfad für alle Operationen fest. Die einzelnen RewriteRules legen fest, wohin der Nutzer weitergeleitet wird, wenn er spezielle URLs aufruft. Der erste Teil hinter einer RewriteRule gibt an, welches Muster in der URL gesucht wird, der zweite Teil legt fest, welche Datei aufgerufen wird, und zuletzt folgen spezielle mod_rewrite-Optionen in eckigen Klammern.

L gibt eine abschließende Regel an: Sobald eine URL auf das jeweilige Muster zutrifft, werden die übrigen Muster nicht mehr geprüft. QSA bedeutet, dass URL-Parameter (die sogenannten GET-Variablen) an die Ziel-URL angehängt werden. NC besagt, dass Groß- und Kleinschreibung bei einer URL nicht unterschiedlich behandelt wird.

Die jeweiligen Regeln werden mittels regulärer Ausdrücke formuliert, die bestimmte Muster in Zeichenketten detailliert beschreiben.

1.3.4 - PEAR

PEAR

Das PHP Extension and Application Repository (kurz PEAR) ist eine Sammlung von PHP-Skripten und -Modulen, von der zahlreiche Web-Anwendungen Gebrauch machen. Auch Serendipity setzt mehrere PEAR-Komponenten ein: Cache::Lite, HTTP::Request, Onyx, Net::Socket, Text::Wiki und XML::RPC. Damit diese nicht zentral auf dem Webserver installiert sein müssen, liefert Serendipity die Komponenten im Unterverzeichnis bundled-libs mit.

Wenn die entsprechenden PEAR-Komponenten bereits auf dem Webserver vorhanden sind, räumt Serendipity diesen standardmäßig den Vorrang ein, damit Systemadministratoren bei kritischen Updates nicht auch das bundled-libs-Verzeichnis anfassen müssen. Dabei kommt es manchmal zu (Versions-)Konflikten.

In diesem Fall kann man in der globalen Serendipity-Konfigurationsdatei serendipity_config.inc.php mit


    $serendipity['use_PEAR'] = false;

darauf beharren, dass die von Serendipity Styx mitgelieferten Komponenten zum Einsatz kommen.

1.4 - Terminologie

Terminologie

In Zeiten des Web 2.0 (siehe Seite Webservices) buhlen zahlreiche allgegenwärtige Marketing- und Technologiebegriffe um Aufmerksamkeit. Da diese auch im Zusammenhang mit Serendipity wichtig sind, gehen wir darauf im Folgenden gezielt und knapp ein. Detaillierte Definitionen liefert zB. die deutsche Wikipedia.[*] https://de.wikipedia.org/wiki/Wikipedia:Hauptseite

1.4.1 - XHTML, HTML, XML und CSS

XHTML, XML und CSS

HTML [*] https://meiert.com/de/publications/indices/html-elements/ stellte ursprünglich eine einfache Syntax zur Formatierung von Dokumenten im Web bereit. Während es anfangs nur sehr primitive Auszeichnungselemente gab (Überschriften, Fettungen, Tabellen), sorgten viele Entwickler-Gremien schnell und leider auch unübersichtlich für Erweiterungen. Parallel zu HTML wurde XML (Extensible Markup Language) als universelles Dateiformat entwickelt, um beliebige maschinen- und menschenlesbare Inhalte darzustellen. Im Gegensatz zu Binärformaten lassen sich für XML plattformübergreifend Schnittstellen bereitstellen und standardisiert eigene Unterformate für alle erdenklichen Einsatzzwecke erfinden.

Auch HTML wurde mittels XHTML-Standard mit der XML-Syntax aufgefrischt und konsolidiert. Strenge Regeln sorgen nun dafür, dass sich HTML-Dokumente von vielerlei Programmen interpretieren und "validieren" (also auf syntaktische Korrektheit prüfen) lassen. In der Theorie ermöglicht dies weitgehende Abstraktion von Layout und Inhalt. Der besseren Interpretation durch Software wegen konnte das CSS-Format (Cascading Style Sheets) seinen Siegeszug antreten. CSS-Dateien lassen sich auf Elemente in XHTML-Dokumenten anwenden und legen so die Formatierung der strukturellen Elemente eines Dokuments fest.

Auch wenn viele Webseiten heute noch nicht mit gültigem XHTML entwickelt werden und es Bemühungen gibt, die "dumme Einfachheit" von HTML mit laxeren Prüfungen wieder aufleben zu lassen, ist ein Vorteil von XHTML unumstritten: Weiterverwendbarkeit.

Inzwischen sind wir bei dem universalen HTML 5 [*] https://www.w3.org/TR/html5/ und gar HTML 5.1 [*] https://w3c.github.io/html/ gelandet.

1.4.2 - Browser

Browser

Ein Browser ist eine Software auf Ihrem Computer, mit der Sie Internetadressen aufrufen und ansehen können. Bekannte Browser sind der Mozilla Firefox, Google Chrome oder auch Apple Safari. Der Begriff "Browser" steht dabei für das "Stöbern" (neudeutsch "Surfen") im Internet, denn erst durch diese Software wird aus einem speziell formatierten HTML-Dokument etwas, das ein Besucher am Bildschirm wirklich ansehen und benutzen kann.

Die am Markt verfügbaren Browser unterscheiden sich in Merkmalen wie Sicherheit, Geschwindigkeit, Funktionsumfang und auch Darstellungsqualität. Obwohl HTML und CSS festgelegte Standards sind, weicht jeder Browser bei deren Interpretation doch geringfügig ab, daher stellen verschiedene Browser ein und dieselbe Webseite möglicherweise unterschiedlich dar.

1.4.3 - Client, Server

Client, Server

Bei der Kommunikation im Internet sind Millionen von Computern miteinander vernetzt. Beim Abrufen von Daten aus dem Internet über Ihren Browser verbindet sich Ihr Computer mit einem fremden Computer, auf dem diese Daten liegen.

Ihr Computer stellt dabei einen Client dar, also den Empfänger. Der Rechner, der Daten ausliefert, dient dabei als Server, also als Absender. Bei Nutzung fast jedes Internet-Protokolls spielen für die Kommunikation zwei Datenkategorien eine Rolle: das, was ein Client sendet und empfängt, und das, was ein Server sendet, empfängt und verarbeitet.

1.4.4 - RSS, Feeds, Syndication und Aggregation

RSS, Feeds, Syndication und Aggregation

RSS ist die Abkürzung für Rich Site Summary oder auch Really Simple Syndication und der Name eines Datenformats, das gemeinsam mit den Blogs die Web-Welt verändert hat.

Eine Datei im RSS-Format ist grundsätzlich erst einmal nur eine XML-Datei, die einen speziellen Satz von Elementen enthält. Diese legen die Eigenschaften von Blog-Artikeln, wie Titel, Inhalt oder Hyperlinks, fest.

Eine RSS-Datei stellt eine Art Newsticker dar, der meistens die chronologisch neuesten Änderungen an News-Artikeln oder Blog-Einträgen aufführt. Solche Dateien werden kontinuierlich (meist automatisch) aktualisiert und auch als Feed bezeichnet. Dafür ausgelegte Software kann eine solche maschinenlesbare RSS-Datei weiterverarbeiten und mit dem Inhalt anderer Webseiten zusammenführen (hier seien die Schlagworte Aggregation und Syndication genannt).

RSS-Reader-Programme ermöglichen es Internet-Nutzern, die RSS-Dateien von Webseiten ähnlich wie mit einem E-Mail-Programm regelmäßig zu überprüfen, und informieren so leicht und übersichtlich über Änderungen.

Manche RSS-Dateien liefern den Inhalt eines neuen Artikels mit, so dass der Nutzer ihn sich unabhängig von der Webseite ansehen kann. Diese Einbindungsweise fokussiert auf den eigentlichen Inhalt von Webseiten, da sie es erlaubt, Inhalte beinahe darstellungsneutral zu beziehen.

Unterschiedliche Gremien haben zahlreiche RSS-Versionen erarbeitet, teilweise inkompatibel zueinander und mit jeweils anderen Attributen. Das verbreitetste RSS-Format ist Version 2.0. Serendipity unterstützt auch RSS 0.9, 0.91 und 1.0. Diese gelten heutzutage aber als veraltet.

1.4.5 - Webservices, Web 2.0, Social Web

Webservices, Web 2.0, Social Web

In dem Maße, wie Webserver in Skriptsprachen wie PHP und Perl geschriebene Anwendungen zu interpretieren lernten, wurde es immer einfacher und interessanter, verschiedene Komponenten miteinander zu verbinden. Dynamische Software eröffnete ganz neue Möglichkeiten, Besuchern einer Webseite Zusatzdienste, sogenannte Webservices, zu präsentieren. Als Beispiel seien die Anzeige von neuen Terminen, die Darstellung von Wetterdaten, spezielle passwortgeschützte Bereiche oder auch die Darstellung von Bookmarks genannt.

Auf zahlreichen Webseiten kann man oft kostenlos Community-Dienste in Anspruch nehmen, die sich mittels Webservices an die eigene Webseite anbinden lassen - sei es die Liste aktueller Fotos von der eigenen Flickr-Fotoseite, die Darstellung der Lieblingslinks, des aktuellen Wetters zuhause oder auch die Einbindung fremder Werbung. Derartige Services bezeichnet man auch als Social Web, da ein Gedankenaustausch in einer gemeinsamen Community stattfindet.

Der Begriff Web 2.0 steht gesamtheitlich für die Wandlung des ehemals statischen Web 1.0 hin zu einer Web-Welt mit verflochtenen Diensten und großen Interaktionsmöglichkeiten unter Einbeziehung der Web-Nutzer.

1.4.6 - XML-RPC, SOAP, REST

XML-RPC, SOAP, REST

Damit ein Webservice angesprochen werden kann, benötigt man eine gemeinsame Schnittstelle zwischen Empfänger (Client) und Absender (Server). Eine solche lässt sich mittels verschiedener Techniken anbieten.

Die im PHP-Umfeld verbreitetste Schnittstelle nennt sich XML-RPC. RPC steht hierbei für Remote Procedure Call, also der Aufruf einer Funktion durch ein fremdes Programm. Zur Datenübergabe und -annahme wird hierbei XML verwendet. Der Server erhält eine XML-Datei mit speziellen Anforderungen. Die ausführende Server-Software interpretiert diese, wertet sie aus und schickt das Ergebnis wieder im XML-Format zurück an den Client.

Eine dazu konkurrierende Schnittstelle nennt sich SOAP (Simple Object Access Protocol). Auch SOAP arbeitet mit XML-Datensätzen, hat aber eine wesentlich komplexere Datenarchitektur und wird aufgrund dieses Overheads im Web eher selten eingesetzt.

Als dritte bekannte Schnittstelle bietet sich REST an: Representational State Transfer. Diese simpelste der Schnittstellen führt Abfragen anhand einfacher URL-Parameter durch und gibt üblicherweise auch einfach zu interpretierende XML-Daten zurück.

XML-RPC ist für die Weblog-Welt insofern interessant, als sie es erlaubt, Inhalte neutral von der verwendeten Blogsoftware zu erfassen. Die meisten Blogsysteme binden eine gemeinsame XML-RPC-Schnittstelle ein, die das Erstellen und Bearbeiten von Artikeln mittels "Fernsteuerung" ermöglicht. Dadurch kann ein Benutzer seine Artikel mit ganz normaler Desktop-Software wie zB. ecto, marsEdit, WindowsLive Writer oder sogar Microsoft Word schreiben, anstatt sie in der Web-Oberfläche seiner Blogsoftware zu verfassen. Gerade für Benutzer, die sich nicht mit neuer Schreib-Software auseinandersetzen wollen, ist diese Variante sehr interessant.

1.4.7 - Atom

Atom

Um die verschiedenen Varianten von RSS wieder zueinanderzuführen, entwickelte das W3C-Gremium einen Standard namens Atom. In einem vollständig gültigen XML-Format deckt es alle Fähigkeiten von RSS ab, wird aber aufgrund der höheren Komplexität heute immer noch als Konkurrenz zu RSS 2.0 angesehen.

Der Begriff Atom steht nicht nur für ein Dateiformat, sondern auch für eine Implementation der XML-RPC- oder SOAP-Protokollschnittstelle, die es erlaubt, entsprechend ausgerüstete Weblog-Software fernzusteuern.

1.4.8 - Trackback und Pingback

Trackback und Pingback

Da Blogs letztlich Sprachrohre von Individuen darstellen, ist es für einen Blog-Betreiber meist sehr wichtig, sein Blog mit anderen zu vernetzen. Ganz im Sinne des interaktiven Webs bestand ein wichtiger Gedanke bei der Erfindung des Blogs darin, Beiträge eines Autoren auf dessen Seite kommentieren zu können und so in Dialog zu treten.

Leser von Blogs sind häufig selber Blogbetreiber und möchten -- gerade bei abweichender Meinung - eine Diskussion gern auf der eigenen Seite weiterführen, ohne dabei die Verbindung mit dem Initiator zu verlieren. Hierfür wurde die Technik der Trackbacks erfunden, die es einem Autor erlaubt, seinen Artikel mit einem anderen zu verketten. Die Besonderheit dabei: Die fremde Webseite wird davon automatisch in Kenntnis gesetzt. Somit befindet sich nicht nur auf der eigenen Seite ein Link auf den Quellartikel, sondern es gibt auch einen, der vom Quellartikel auf die eigene Seite zeigt. Wie das bei Serendipity funktioniert, behandelt Kapitel trackback ab Seite trackback.

Ein Pingback ist eine abgeschwächte Form des Trackbacks. Der Initiator kann auf diese Weise den Ursprungsautor darauf hinweisen, dass er sich auf ihn bezogen hat. Dabei wird auf dessen Blog kein (ausführlicher) Verweis für andere Besucher erzeugt.

1.4.9 - API und Plugin

API und Plugin

Eine API (Application Programming Interface) stellt ein Software-Regelwerk (meist eine konkrete Liste an Funktionen oder Klassen) zur Verfügung, an das man sich als Programmierer halten kann, um auf gewisse Funktionen einer Software zuzugreifen. Bei Serendipity benötigt man ein solches Regelwerk vor allem für Erweiterungen mit eigenen Plugins oder den Zugriff von fremder Software.

Serendipity bietet eine funktionsorientierte Kern-API zur Verwaltung von Artikeln und Datenbankabfragen. Weiterhin gibt es eine spezielle, objektorientierte Plugin-API, die alle notwendigen Methoden abdeckt, die man als Entwickler eigener Plugins benötigt.

Ein Plugin ist Software, die sich nahtlos in ein Hauptprogramm einbindet (to plug bedeutet einstöpseln). Es hat Vorteile, gewisse Funktionalitäten in Plugins bzw. Programmmodule auszulagern. Dadurch hält man zum einen die Kernsoftware schlank, zum anderen kann man losgelöst von der Kernsoftware Aktualisierungen durchführen und Funktionalitäten erweitern. Ein Benutzer hält sein System schlank und performant, indem er nur die Plugins installiert, die er für seine Anwendungsfälle nutzt. Auch bei Webservices gibt es zahlreiche APIs, die den Verkehr zwischen Client und Server jeweils strukturieren.

1.4.10 - Mashup

Mashup

Der Begriff Mashup bezeichnet die Verkettung mehrerer Webservices. Dank der Offenheit vieler APIs lassen sich die abgefragten Daten beliebig miteinander kombinieren, zB. die Wetterdaten eines mittels Google Maps dargestellten Orts anzeigen. Oder man bindet auf der Karte die Bilder ein, die Flickr-Benutzer zu diesen Geo-Koordinaten eingestellt haben. Die Verknüpfungsmöglichkeiten sind oft nur durch Ihre Phantasie begrenzt.

1.4.11 - Usability, Barrierefreiheit, Accessibility

Usability, Barrierefreiheit, Accessibility

Usability ist ein Forschungsfeld, das sich damit beschäftigt, wie man zB. eine Webseite am besten bedienen kann. Es beschäftigt sich ua. mit der konzeptionellen Struktur einer Seite, dem Aufbau der Navigation, der Gliederung der Inhalte und auch der Einbindung von Formularen, Suchen und anderen interaktiven Elementen.

Da sich eine Webseite häufig stark von einer normalen Software auf dem Computer unterscheidet, lassen sich Software-Usability-Weisheiten nicht einfach auf Webseiten übertragen. Wie man dennoch zielgerichtet auf Benutzer eingeht und deren Erwartungen erfüllt, ist Aufgabe der Web-Usability.

Eine Teilmenge des Oberbegriffs Usability ist die Barrierefreiheit (englisch Accessibility). Diese beschreibt Techniken und Maßnahmen, die auch behinderten Personen die Benutzung einer Webseite ermöglichen. Darunter zählen Dinge wie eine geschickte Farbwahl, sinnvolle Kontraste, aber auch der gezielte Einsatz von Bildern nur an Stellen, wo sie nötig sind.

XHTML erlaubt zudem die Trennung von Layout und Inhalt, die man der Barrierefreiheit zuliebe stets beachten sollte. Gültiger, valider Quellcode ist Voraussetzung dafür, dass jeder Browser (und damit jeder Besucher) Ihre Webseite problemlos bedienen kann. Denken Sie auch an blinde Menschen, die die Inhalte Ihrer Seite vorgelesen bekommen müssen: Wenn Sie die Navigation nicht speziell hervorheben, kann es sein, dass dem Benutzer diese beim Vorlesen vorenthalten wird.

Serendipity Standard-Templates versuchen so barrierefrei wie möglich zu sein und bei der Usability auf klare Strukturen zu achten. Erfahrungsgemäß ist dies bei einem Open-Source-Projekt recht schwer, da meist nur Programmierer und erfahrene Benutzer am Werk sind, die keinen Wert auf einfache Zugänglichkeit legen. Serendipity hat hier im Laufe der letzten Jahre sehr stark zugelegt und ist daher für eine barrierefreie Zukunft bestens gerüstet. Wie Sie diese in Ihrem Blog letztlich selber umsetzen, wird ab Seite Anpassungen ausführlich besprochen.

1.4.12 - BBCode, Textile, Markup und Textformatierung

BBCode, Textile, Markup und Textformatierung

Üblicherweise werden Blog-Artikel in HTML-Syntax formatiert. Da HTML jedoch gerade für Anfänger nicht ganz trivial ist, gibt es mehrere Standards, die das Ziel einfacher Textformatierung verfolgen. Solche Standards, darunter BBCode [*] https://www.phpbb.com/community/help/bbcode Markdown [*] https://michelf.ca/home/ oder Textile [*] https://textile-lang.com/ bieten eigene Tags (also Formatierungsmarker) an, die ein System wie Serendipity später in HTML-Format konvertiert.

BBCode basiert auf in Foren üblichen Markierungen: [b]text[/b] formatiert zB. das Wort text fett. Alle Tags werden in eckigen Klammern geschrieben; Vereinfachungen wie [URL=http://www.google.com]Google[/url] erlauben es, relativ einfach Links zu setzen.

Serendipity bietet für alle bekannteren Markups Plugins an, so dass auch Kommentatoren zu einem Blog-Eintrag auf diese Syntax zugreifen können. Die direkte Eingabe von HTML ist bei Kommentaren nicht möglich, daher stellen solche Plugins die einzige Möglichkeit der Formatierung dar.

1.4.13 - WYSIWYG

WYSIWYG

Eine weitere Möglichkeit, die Redakteuren die Eingabe von Text erleichtert, ist der sogenannte WYSIWYG-Modus: What You See Is What You Get. JavaScript-Module erstellen im Webbrowser ein Texteingabefeld. Dieses enthält Formatierungsbuttons ähnlich wie bei OpenOffice bzw. Microsoft Word, die es erlauben, die Farbe oder den Schriftstil zu ändern, per Drag&Drop Texte und eingebundene Bilder zu verschieben oder Tabellen einzufügen.

Im Folgenden wird also zwischen dem PLAIN TEXT Editor, also dem einfachen Textfeld mit oder ohne BB-Code artige Formatierungshilfen, und dem Rich Text Format (WYSIWYG-Modus) unterschieden.

Artikel die mit dem PLAIN TEXT Editor erstellt und gespeichert wurden, werden zur Laufzeit des Abrufes in HTML umgewandelt. Dazu dienen verschiedenste Plugins. Benutzen Sie die fortschrittlicheren markdown oder textile Formatierungen, geschieht das gleiche. Auch diese wandeln als vereinfachte Auszeichnungssprachen bestimmte Formatierungshilfen in HTML zur Ausgabe um.

Das Rich Text Editor Format (WYSIWYG-Modus) speichert derweil gleich das komplette HTML fertig zur Ausgabe. Dies ist insbesondere wichtig zu wissen, damit man sein System konsistent halten kann.

Wenn Sie allerdings um die Tücken wissen, macht es nichts aus ein altes Blog von beispielsweise markdown auf den CKEditor umzustellen. Es ist heutzutage einfach das zu präferierende Format.

Serendipity wird standardmäßig mit dem WYSIWYG-Editor CKEditor [*] https://ckeditor.com/ ausgeliefert. Dieser Editor läuft problemlos mit allen aktuellen Browsern (Chrome, Firefox, Internet Explorer, Firefox, Safari, etc) und wird professionell und aktiv weiterentwickelt. Er hat sich mittlerweile zum quasi-Standard der HTML Editoren am Markt entwickelt. In Serendipity ist er als Core-BASIC-Editor im /templates/_assets Ordner angesiedelt. Außerdem existiert noch das CKEditor Plus-Plugin, das immer die neueste Version mit leichter Zeitverzögerung mitbringt und per Plugin Konfiguration sehr leicht verschiedenste Ausbaustufen de Editors zulässt. Im Grunde ist es damit unnötig geworden irgendein anderes WYSIWYG-Editor-Plugin wie TinyMCE einzusetzen, wenn nicht absolut wichtige persönliche Präferenzen dafür sprechen. (Siehe WYSIWYG)

1.4.14 - Widgets, Nuggets, Blogroll

Widgets, Nuggets, Blogroll

Viele Webservices erlauben es, ihre Dienste mit einem einfachen Code-Schnipsel auf der eigenen Seite einzubinden. Beliebte Beispiele dafür sind zB. Google AdSense, das aktuelle Wetter, die letzten Flickr-Bilder und vieles mehr. Solche eingebundenen Schnipsel bezeichnet man als Widgets oder Nuggets/Klötze. Diese lassen sich bei Serendipity leicht in das eigene Blog einbauen.

Ein Beispiel für ein Widget ist die sogenannte Blogroll. Dies ist letztlich nichts anderes als eine Liste von Blogs, die man persönlich liest oder als empfehlenswert betrachtet. Sie erlaubt es zB., den eigenen Freundeskreis virtuell zu präsentieren. Durch Blogrolls werden die Leser eines Blogs auch auf thematisch ähnliche oder sozial verbundene Blogs aufmerksam. Kein unwichtiges Feature, wenn man bedenkt, dass sich die Popularität häufig verlinkter Blogs in Suchmaschinen steigert.

1.5 - Templates, Themes und Styles

Templates, Themes und Styles

Alles, was der Besucher eines Blogs sieht, entspringt einem zentralen Layout. Die Begriffe Template, Theme, Style und Layout sind im Kontext von Serendipity grundsätzlich synonym und bezeichnen lediglich eine Ansammlung von Dateien, die später in HTML-Code und Design übersetzt werden. Der HTML-Code eines Templates enthält Platzhalter (sogenannte Smarty-Variablen), an deren Stelle später der Artikeltitel, -text oder andere dynamische Inhalte erscheinen.

1.6 - Spam, Bots, Captcha

Spam, Bots, Captcha

Mit zunehmendem kommerziellen Gewicht des Internets ist es attraktiv, für Webseiten auf so vielen Partnerseiten wie möglich zu werben. Sobald der "Partner" aber mit Werbung bombardiert wird oder diese unfreiwillig zB. in Form von Gästebucheinträgen und Kommentaren zu redaktionellen Inhalten erhält, spricht man gemeinhin von Spam. Dabei helfen automatisierte Systeme (Bots) den Spammern, ihre Werbung möglichst vielfältig und schnell auf fremde Webseiten zu schleusen. Wie beim Medium E-Mail, in dem mehr als zwei Drittel aller weltweit versandten E-Mails unerwünschte Werbemails sind, geht man bei Foren und Weblogs davon aus, dass eine ähnlich hohe Quote von Beiträgen aus automatisiertem (und teilweise abgewehrtem) Spam besteht.

Software kann nur sehr schwer unterscheiden, ob der Textbeitrag eines Besuchers "echt" ist oder von einem automatischen System stammt. Aufgrund der Funktionsweise des Internets ist es nicht möglich herauszufinden, ob ein Aufruf einer Webseite von einem Menschen oder von einer Maschine stammt. Daher beschäftigen sich die meisten Techniken zur Spamabwehr damit, diesen Unterschied herauszuarbeiten.

Schon in den Anfangszeiten der Informatik postulierte der Mathematiker Alan Turing, wie sich Mensch und Maschine unterscheiden lassen: Bei Turing-Tests setzt man Abfragetechniken ein, die die Interaktion eines Menschen erfordern: Er soll logische Aufgaben lösen, Farben oder Bilder analysieren etc. - alles Dinge, die eine Maschine nach heutigem Forschungsstand nicht können sollte.

Eine gebräuchliche Form dieses Tests nennt sich CAPTCHA (Completely Automated Public Turing Test to tell Computers and Humans Apart). Captchas nutzen Grafiken mit einer Zahlen- oder Buchstabenkombination, die häufig noch dazu visuell verfremdet dargestellt wird. Der vor dem Rechner sitzende Mensch soll diese identifizieren und eingeben. Nur wenn die eingetippten Zeichen mit denen auf dem Bild übereinstimmen, gilt eine Nachricht nicht als Spam.

Ein großes Problem dieser Grafiken ist der höhere Performancebedarf sowie die Tatsache, dass sehbehinderte Menschen bei der Entzifferung oft Probleme haben. Auch sind Bot-Entwickler nicht untätig und haben mittels Schrifterkennung per OCR [*] Optical Character Recognition große Fortschritte gemacht, so dass sie geläufige Captchas doch automatisiert entziffern können.

1.7 - RDF, Semantic Web, Mikroformate

RDF, Semantic Web, Mikroformate

Schon heute lässt sich die Datenflut des Internets kaum bewältigen, noch ist sie annähernd überschaubar. Volltextsuchmaschinen sind normalerweise nicht in der Lage, die im Web publizierten Texte anhand der üblichen grammatikalischen Syntax miteinander in Beziehung zu bringen. Um dieses Problem zu beseitigen, wurde die Initiative des Semantic Web (Semantisches Internet) gegründet. Diese entwarf eine Syntax namens RDF (Resource Description Framework) auf Basis der XML-Regeln. RDF-Anweisungen lassen sich in XHTML-Daten einbetten und repräsentieren Metadaten (etwa Bildunterschriften, thematische Eingrenzungen, Querverbindungen ...) zu einem gegebenen Dokument.

Anhand der Metadaten können Suchroboter und andere Webservices Seiten leichter analysieren und gewichten. Je mehr Metadaten verfügbar sind, desto engmaschiger lassen sich alle Informationen des Internets miteinander verknüpfen - und das nun auch nicht mehr nur einseitig.

Zum heutigen Zeitpunkt ist die Erfassung von Metadaten eine recht aufwendige Sache und obliegt dem Redakteur eines Textes. Daher sind brauchbare RDF-Metadaten noch recht wenig verbreitet und beschränken sich auf sogenannte Mikroformate. Darunter versteht man Abwandlungen des RDF-Standards oder einfacher: XML-Attribute, die ein Dokument um spezialisierte Metadaten ergänzen, zB. um Visitenkarten, Kalenderdaten oder Produktbewertungen.

1.8 - Tagging

Tagging

Häufig handelt es sich bei Blogs um lose Artikelsammlungen, die der Autor mal mehr und mal weniger miteinander in Bezug gesetzt hat. Klassischerweise wurden Artikel thematisch ausschließlich festen Kategorien zugeordnet. Damit stand der Redakteur vor dem Problem, sich bereits von vornherein Gedanken über eine hierarchische Struktur seiner zukünftigen Texte machen zu müssen.

Aus dieser Not heraus wurde das Tagging erfunden: Einem Artikel lässt sich so dynamisch eine beliebige Menge an Schlagwörtern zuordnen. Mit deren Hilfe kann sich ein Benutzer zu Artikeln weiterführen lassen, die dasselbe Stichwort tragen. Das geht zB. über Tagwolken, also Übersichten der meistgebrauchten Tags, die häufig durch unterschiedliche Schriftgrößen gewichtet werden.

Gerade im Kontext von Foto-Providern wie Flickr ist Tagging sehr sinnvoll. Ein Bild einer starren Hierarchie zuzuordnen bedeutete viel Arbeit, ohne zwingend für mehr Übersicht zu sorgen. Anhand der Stichwörter jedoch kann man zügig auch andere Bilder mit ähnlichem Kontext auffinden, zB. weitere Fotos, die mit dem Begriff "Hochzeit" verkettet sind.

1.9 - Wiki

Wiki

Der Begriff Wiki steht für eine offene Webseite, auf der sich Informationen von vielen Benutzern gleichzeitig zusammentragen lassen. Mittels Versionierung und Protokollierung werden unterschiedliche Bearbeitungen hervorgehoben und miteinander kombiniert.

Zum großen Erfolg der Wikis trug ihre einfache Syntax bei. Anstelle komplizierter HTML-Regeln beschränken sich Wiki-Anwendungen auf einfache Auszeichnungen (die je nach Software jedoch variieren können). Beispielsweise lässt sich ein Wort durch Einschließen in Sternchen * fetten.

Das zentrale Problem von Wikis ist der Vandalismus ihrer Benutzer -- die Freiheit in einer kollaborativen Umgebung können Einzelne ausnutzen, indem sie destruktive Änderungen vornehmen, was zu hohem Moderationsaufwand führt. Gerade im Bereich des freien Wissensmanagements (Stichwort Wikipedia) hat sich eine solche Form der technisch lockeren Zusammenarbeit jedoch bewährt.

1.10 - AJAX

AJAX

Eine Technologiekomponente, die das Web 2.0 nachhaltig verändert hat, wird unter dem Schlagwort AJAX (Asynchronous Javascript and XML) geführt. Letztlich handelt es sich dabei um eine einfache Form von JavaScript, die XML als Basis für Variablen und Daten verwendet. Innerhalb des Browsers können in dieser Sprache geschriebene Skripte mit Webservices kommunizieren und so Webseiten weiter dynamisieren. Setzte früher jede Aktion auf einer Webseite das Ausfüllen und Absenden von Formularen voraus, können nun auch Aktionen ausgeführt werden, ohne dass der Benutzer merkt, dass neue Komponenten nachgeladen werden.

Dies bringt Web-Anwendungen den gewohnten Desktop-Anwendungen um einiges näher, stellt jedoch auch höhere Anforderungen an Programmierer und Clients und führt zu neuen Arten von Sicherheitslücken.

1.11 - Pod- und Vodcast

Pod- und Vodcast

Dass Internet-Surfer über ständig höhere Bandbreiten verfügen, schafft den wachsenden Bedarf an Multimedia-Inhalten. Webseiten (und damit auch Blogs) lassen sich um Videos oder Audio-Dateien ergänzen, die im Browser automatisch abgespielt werden. Da Videos und Audio-Dateien auch in die RSS-Feeds der Blogs eingebunden werden können, die MP3-Player wie Apples iPod automatisch importieren, spricht man hier von Podcast (Audio) oder Vodcast (Video).

1.12 - Moblogging

Moblogging

Das mobile Bloggen via Handy oder PDA bezeichnet man als Moblogging. Auf Reisen hat man meist keinen Zugriff auf einen normalen Webbrowser. Um dennoch Inhalte in einem Blog publizieren zu können, gibt es die Möglichkeit, eine E-Mail an das eigene Blog zu schicken, die automatisch als Beitrag veröffentlicht wird. Auch gibt es inzwischen mobile XML-RPC-Anwendungen, die über eine GPRS/UMTS-Verbindung direkt auf das Blog zugreifen.

1.13 - (Hyper-)Links, URLs und Permalinks

Ein Hyperlink (Kurzform: Link), umgangssprachlich auch Verknüpfung oder Verweis genannt, gibt die Fundstelle eines Dokuments im Internet an und erlaubt es so, verschiedene Dateien miteinander zu vernetzen.

Das Konzept ähnelt Querverweisen oder Fußnoten bei einem Buch: Zeigt Ihnen Ihr Browser einen speziell markierten Begriff in einer HTML-Seite, können Sie durch dessen Anwahl zur referenzierten Internetseite springen. Erst durch diese Verweise werden die Dateien unterschiedlicher Webserver miteinander in Verbindung gesetzt und stellen dadurch das ursprüngliche Kernkonzept der HTML-Auszeichnungssprache dar.

Den Begriff Link benutzt man oft als Synonym für den Fachbegriff URL (Uniform Resource Locator). Was sich so kompliziert anhört, ist das, was Sie üblicherweise unter dem Namen Internetadresse bereits kennen. Diese beschreibt, auf welche Art und Weise (das heißt: über welches Protokoll, siehe Seite Protokolle) und von welchem Rechner sich das Dokument beziehen lässt (http://www.ebay.de, http://www.example.com). Oft enthält sie zudem Pfadangaben/Dateinamen wie in https://ophian.github.io/blog/index.html.

Außer den URLs gibt es noch die URIs (Uniform Resource) Deren Definition geht über die der URLs hinaus. Eine URI kann sogenannte URL-Variablen enthalten, die nicht Bestandteil einer URL sind. Sie werden üblicherweise von einem ?-Zeichen eingeleitet und sind mittels & voneinander getrennt. In vielen Fällen ist der Unterschied zwischen URL und URI für Sie als Leser unerheblich, und oft wird von einer URL gesprochen, wenn man fachlich eigentlich URI sagen müsste. Als Merksatz gilt: Sobald an eine URL Variablen angehängt sind, muss man von einer URI sprechen.

Ein Permalink ist eine spezielle URL, die den Inhalt eigentlich dynamischer Webseiten permanent "eingefroren" zugänglich macht. Bei deren Aufruf erhält ein Besucher immer dieselbe Seite, egal, wann er sie aufruft. Obwohl sich Übersichtsseiten aufgrund des chronologischen Bezugs bei jedem neuen Blogeintrag ändern, erlaubt es ein Permalink, Artikel eindeutig zu identifizieren und immer wieder aufrufen zu können.

Permalinks können in Serendipity nach Benutzervorgabe formatiert werden und unterschiedliche Prä-/Postfixe aufweisen (siehe Seite Permalinks-Frontend).

1.14 - Suchmaschinenoptimierung

Suchmaschinenoptimierung

Der Bereich der Suchmaschinenoptimierung (kurz SEO für Search Engine Optimization) ist ein sehr weites Feld. Um Ihre Webseite möglichst weit oben in den Suchergebnissen von Google und Co. erscheinen zu lassen (ihnen also ein hohes Ranking zu verschaffen), gibt es einige Tricks und Kniffe und vor allem auch Konzeptionelles zu beachten.

Webseiten werden heutzutage fast automatisch von allen Suchrobotern gefunden. Jeder Link, der auf Ihre Seite führt, gibt dieser mehr Gewicht bei der Berechnung des Page Rank bei Google [*] Andere Suchmaschinen wie Yahoo benutzen vergleichbare Algorithmen, die ähnlich wie die Rezeptur eines schwarzen Zuckergetränkes als Firmengeheimnis gelten und Grund vieler Spekulationen sind.. Die Begriffe, die Sie auf Ihren Unterseiten angeben, werden jeweils verschlagwortet und erscheinen in Abhängigkeit von der Gewichtung an oberer oder unterer Stelle in der Liste entsprechender Suchmaschinenergebnisse.

Serendipity kann Ihnen teilweise bei der Suchmaschinenoptimierung helfen. Durch sprechende URLs (siehe Seite mod-rewrite) lassen sich Artikeltitel mit in die URL aufnehmen, was die Gewichtung erhöht. Die Verwendung korrekt verschachtelter Überschriften innerhalb der HTML-Seite und eine gültige HTLM-Syntax steigern die Effektivität eines Suchroboters. Weiterhin gibt es Plugins, mit denen Sie Kreuzverkettungen zu ähnlichen Artikeln in Ihrem Blog erstellen können (siehe Seite freetag) oder auch eine spezielle Google-Sitemap-Datei (siehe Seite googlesitemap) anlegen.

Letzten Endes zählt aber auch die Strukturierung Ihrer Artikeltexte sehr viel. Die Verteilung der (Schlüssel-)Wörter ist ebenso wichtig wie die Benutzung von Wörtern, die Ihre Besucher womöglich zu einem Thema erwarten. Nicht unwichtig kann der Aufbau eines Partner-Netzwerks sein, da Verlinkungen auf Ihre Seite den Page Rank erhöhen. Hier wird jedoch auch viel unseriöse Geschäftemacherei betrieben. Hüten Sie sich also vor Tricks, die womöglich ins Gegenteil umschlagen können.

Letztlich erhalten Sie gute Suchmaschinenergebnisse nur dann, wenn Sie für Ihre Besucher interessante Texte oder Services anbieten. Alle anderen technischen Kniffe nutzen Ihnen nichts, wenn die Besucher herausfinden, dass Ihre Webseite nicht das hält, was sie durch eine Suchmaschine verspricht.

1.15 - Protokolle: HTTP, FTP, SSH

Protokolle: HTTP, FTP, SSH

Im Internet gibt es eine beinahe unendliche Zahl verschiedener Protokolle, die Regeln definieren, nach denen Rechner, Anwendungen und Server miteinander kommunizieren. Im Zusammenhang mit Serendipity sind folgende Protokolle von Belang:

  • HTTP, das Hypertext Transfer Protocol, ist sicherlich das geläufigste, denn Sie verwenden es bei jedem Abruf einer Internetseite. Erkennbar ist dies daran, dass die meisten URLs, die Ihr Webbrowser anzeigt, ein vorgestelltes http:// enthalten. Über dieses Protokoll überträgt der Webserver ein Dokument an den eigenen Computer, wobei der Webbrowser als Empfänger dient. Die Sonderform https tritt auf, wenn ein Webserver eine sichere, verschlüsselte Verbindung zur Datenübertragung nutzt. Dabei kommt das Protokoll SSL (Secure Socket Layer) zum Einsatz, so dass die übertragenen Daten durch den Einsatz von Zertifikaten ausschließlich vom Server und vom Client entschlüsselt werden können. Bei http ist es grundsätzlich möglich, dass auch andere Benutzer oder Proxies die Übertragung belauschen können.
  • Obwohl auch HTTP als Protokoll zum Dateitransfer dient und mittlerweile oft dafür eingesetzt wird, gibt es ein noch spezielleres (und älteres) Protokoll für den Dateiaustausch: das File Transfer Protocol FTP. Dieses Protokoll ermöglicht nicht nur den Empfang (Download), sondern auch ein Senden von Dateien (Upload).
  • Im Gegensatz zu graphischen Betriebssystemen wie Windows kann Unix komplett mit textbasierten Befehlen gesteuert werden, was sich gerade im Einsatz als Webserver als große Erleichterung herausgestellt hat. Das geht auch ferngesteuert übers Netz, am besten über einen abgesicherten SSH-Zugang.[*] SSH steht für Secure Shell. Mit Shell bezeichnet man ein Programm, das die interaktive Steuerung über Textbefehle ermöglicht. Diese Zugriffsmöglichkeit auf einen Server bezeichnen viele Leute irrtümlicherweise auch als root-Zugang. Den hat man aber nur, wenn man über das Login (meist als User root) volle Zugriffsrechte für den Server bekommt. SSH-Zugang ist aber auch mit reduzierten Zugriffsrechten (als unprivilegierter Nutzer) möglich. Web-Provider bieten selten SSH-Zugang an. Häufig steht ausschließlich FTP und HTTP zum Zugriff auf einen Server zur Verfügung. Die Bedienung einer SSH-Konsole setzt zudem einiges an Fachkenntnissen voraus, die wir in diesem Buch nicht vermitteln können. Dennoch wird an Stellen, wo SSH-Zugriff die Arbeit erleichtert, auf diesen eingegangen.
1.16 - Frontend, Backend, Admin-Oberfläche

Frontend, Backend, Admin-Oberfläche

Bei vielen Web-Anwendungen unterscheidet man zwischen Frontend und Backend. Vereinfacht ausgedrückt ist ein Frontend all das, was der Besucher einer Webseite sieht. Als Backend oder Admin-Oberfläche bezeichnet man das, was ein Redakteur oder Administrator nach einem Login in den geschützten Bereich sehen kann.

 

1.17 - Cookies und Sessions

Cookies und Sessions

Da HTTP ein verbindungsloses Protokoll ist, "vergisst" der Webserver nach jedem Zugriff, was der Benutzer beim vorigen Aufruf getan hat. Das ist besonders bei dynamischen Web-Anwendungen ärgerlich, da man sich normalerweise bei jeder Aktion erneut einloggen müsste. Als rettenden Kniff gibt es das Konzept der Sessions oder Sitzungen.

Webbrowser besitzen einen kleinen Datenspeicher. Dort kann ein Webserver den Browser anweisen, eine kleine Datenmenge auf der eigenen Festplatte zu speichern. Diesen kleinen Datensatz nennt man Cookie. Er wird meistens dazu eingesetzt, einen Besucher eindeutig zu identifizieren, so dass er autorisierte Aktionen ausführen kann. Cookies haben einen schlechten Ruf erworben, da viele Werbetreibende sie dazu benutz(t)en, ihre Werbe-Zielgruppe eindeutig wiederzuerkennen und Statistiken über deren Nutzerverhalten zu sammeln. Auch besteht oft die Angst, dass ein Webserver so auf die eigene Festplatte zugreifen könnte.

Diese Furcht ist normalerweise unbegründet. Fast alle Browser ermöglichen es Ihnen, Cookies nur von vertrauenswürdigen Quellen und nur im Bedarfsfall anzunehmen oder abzuweisen. Serendipity benötigt solche Cookies ebenfalls für das Frontend und das Backend, daher muss der Webbrowser so eingestellt werden, dass er Cookies annimmt.

Um Nutzeraktionen als zusammengehörige Session zu erkennen, speichert Serendipity eine einfache Zufallskombination aus Buchstaben und Zahlen, die Session-ID, als Cookie im Browser des Besuchers. Bei jedem Folgeaufruf überträgt dieser die ID zurück an den Server, der damit den Besucher identifizieren und zuvor gesetzte Variablen (die Sessiondaten) wiederherstellen kann. Sessiondaten werden auf dem Server gespeichert und nicht in Cookies, so dass der Nutzer sie nicht beliebig verändern kann.

Eine Sitzung ist zeitlich begrenzt. Das heißt, dass nach einem gewissen Timeout die Sessiondaten auf dem Server (automatisch) gelöscht werden und keinen unnötigen Speicherplatz beanspruchen.

1.18 - Parsen und Kompilieren

Parsen und Kompilieren

Der englische Begriff to parse beschreibt das maschinelle, automatisierte Auslesen einer Datei. Bei diesem Vorgang interpretiert ein Parser etwaige Platzhalter und Instruktionen (Schleifen, Bedingungen ...).

Die Smarty-Templatedateien enthalten allesamt Anweisungen, die erst nach diesem Vorgang des Parsens gültige HTML-Ausgaben enthalten.

Alternativ bezeichnet man diesen Vorgang auch als Kompilierung (von englisch: to compile). PHP selbst stellt eine interpretierende Skriptsprache dar, die erst nach der Interpretation der PHP-Funktionen und -Anweisungen einen maschinenausführbaren Code zurückliefert.

Kapitel 2: Einrichtung / Installation

Die folgenden Installationsanweisungen sind bewusst sehr ausführlich gehalten, um auch Anfängern den Einstieg zu ermöglichen. Fortgeschrittene Anwender finden eine Zusammenfassung im Abschnitt Schnelle Installation auf Seite Schnelle Installation.

 

2.1 - Wahl der Waffen

Wahl der Waffen

Um Serendipity voll auszunutzen, benötigt man einiges an Zusatzsoftware, als erstes ein Programm um Dateien (und auch Serendipity selbst) auf den eigenen Server hochzuladen. Üblicherweise geschieht dies mittels eines FTP-Programmes, in manchen Fällen aber auch per SSH bzw. SFTP [*] siehe Abschnitt Protokolle auf Seite Protokolle. Sollten Sie FTP einsetzen, empfiehlt sich ein Programm, das mit Threads [*] Threading wird von FTP-Programmen benutzt, um mehrere gleichzeitige Verbindungen zu einem Server aufzubauen. umgehen kann, was den Upload vieler kleiner Dateien beschleunigt. Für Windows sind SmartFTP oder FileZilla [*] https://www.smartftp.com/ https://filezilla-project.org/ für solche Zwecke empfehlenswert. Weiterhin sollte das FTP-Programm auch ermöglichen, Dateirechte mit dem Befehl chmod zu ändern.

Zum Entpacken von Serendipity benötigen Sie ein Programm wie 7-Zip oder Winzip oder entsprechende Kommandozeilen-Tools in einer Linux-Umgebung.

Um das Blogsystem zu bedienen, benötigen Sie selbstverständlich einen aktuellen Webbrowser. Serendipity läuft mit allen gängigen Webbrowsern (Mozilla Firefox, Google Chrome / Chromium, Edge, Vivaldi, Opera, Safari, und Weitere). Um später leicht Änderungen an Ihrem Layout durchzuführen, empfiehlt der Autor den Einsatz von Mozilla Firefox oder Chromium Variationen, um im Bedarfsfall Designänderungen direkt in der Browser-Ansicht testen. Dies erleichtert die Template-Erstellung ungemein.

Alle großen Browser verfügen über geeignete Developer-Tools (meist unter der Tastatur-Taste [F12] erreichbar [*] Das ist natürlich spezifisch in verschiedenen Browsern auf verschiedenen Betriebssystemen. Zum Beispiel wäre das gleiche auf OS X in Chrome so [⌥ + ⌘ + J] zu erreichen.), die die genannten Änderungen spielerisch einfach “am lebenden Objekt” einer Webseite ermöglichen. [*] https://developer.mozilla.org/en-US/docs/Tools https://developer.chrome.com/devtools

Zur Verwaltung von Datenbanken und Tabellen gibt es zahlreiche SQL-Anwendungen. Bei der Benutzung von MySQL ist das Web-basierte phpMyAdmin [*] https://www.phpmyadmin.net/ sehr zu empfehlen, für PostgreSQL gibt es analog phpPgAdmin [*] https://github.com/phppgadmin/phppgadmin und für SQLite phpSQLiteAdmin.[*] https://www.phpliteadmin.org/ Die Installationsanleitung für diese Web-Anwendungen schlagen Sie bitte auf den jeweiligen Projekt-Webseiten nach.

 

2.2 - Installation

Installation

Im Folgenden gehen wir davon aus, dass Sie entweder selbständig einen Webserver mit PHP und Datenbanken eingerichtet haben oder von einem Dienstleister einen entsprechend aufgesetzten Webserver bereitgestellt bekommen.

Dort müssen Sie Serendipity unterhalb des Document Root (siehe Seite DocRoot) ablegen. Im Folgenden nennen wir dieses Verzeichnis exemplarisch /var/www/example.com. Alle Angaben, die diesen Pfad enthalten, müssen Sie auf Ihre individuellen Gegebenheiten anpassen.

Sie werden Serendipity in einem Unterverzeichnis dieses Stammpfads installieren, so dass Sie das Blogsystem später über die URL http://www.example.com/serendipity/ aufrufen können. Ob Sie dieses Unterverzeichnis ebenfalls serendipity nennen, bleibt Ihnen überlassen - es darf auch blog, tagebuch oä. heißen. Sie sollten jedoch Sonderzeichen wie den Unterstrich (_) sowie Zahlen am Anfang oder Ende des Verzeichnisnamens vermeiden, da dies zu Problemen mit dynamisch generierten URLs führen kann.

Sie können Serendipity natürlich auch direkt ins Stammverzeichnis selbst installieren. Beachten Sie jedoch dabei, dass dadurch die Installation anderer Software, etwa eines Forums oder eines Statistikprogramms, schwieriger werden könnte, wenn die URL-Umformung aktiviert wurde und Serendipity direkte Zugriffe auf Unterverzeichnisse möglicherweise als eigene Seitenausgabe auffasst (siehe Seite mod_rewrite ganz unten und .htaccess im Allgemeinen).

2.2.1 - Upload der Dateien

Upload der Dateien

Serendipity Styx sollten Sie natürlich direkt auf der GitHub-Projektseite.[*] https://github.com/ophian/styx/releases unter Releases herunterladen. Es ist ratsam mit den namentlich ausgezeichneten Downloads zu beginnen, denn die Source code (zip) und Source code (tar.gz) Dateien sind reine Developer snapshots, während die namentlichen Serendipity Archive über eine interne Bereinigung und mehrere Sicherheitsmaßnahmen wie Berechtigungen etc. verfügen.

Auf GitHub finden Sie sowohl die aktuellste Ausgabe als auch Beta- und ältere Versionen und die täglichen Snapshots. Obwohl es sich bei Letzteren um die tagesaktuellen Entwicklerversionen handelt, sind diese bei Serendipity für gewöhnlich sehr stabil.

Außerdem können Sie die Pakete in mehreren Archivformaten herunterladen: als zip-Datei, sowie als xz (Dateinamensendung tar.xz) oder gzip (Dateinamensendung tar.gz) gepackten Tarball. Alle drei Varianten enthalten die gepackten PHP-Dateien, die Sie auf Ihren Webserver hochladen müssen. Für Windows-Benutzer ist das zip-Archiv am einfachsten zu handhaben, unter Unix empfiehlt sich der Tarball. Am besten schauen Sie vorher kurz einmal nach welches Format tatsächlich angeboten wird.

Falls Sie via ssh direkten Shellzugriff auf Ihren Webserver haben, laden Sie das Paket mittels wget ohne Umwege direkt auf den Server und entpacken es mit einem Kommandozeilen-Programm:


    user@server:~# cd /var/www/example.com/
user@server:~# wget "https://github.com/ophian/styx/releases/download/3.2.0/serendipity-3.2.0.tar.xz"
[...]
user@server:~# tar -xvf serendipity-3.2.0.tar.xz
[...]

Anderenfalls laden Sie das Paket auf Ihren eigenen Rechner und entpacken es dort mit einem geeigneten Programm in ein temporäres Verzeichnis. Aus diesem Ordner heraus laden Sie alle Dateien und Unterverzeichnisse des entpackten serendipity-Unterverzeichnisses mit allen Dateien mittels FTP-Programm auf Ihren Webserver.

Achten Sie beim Aufspielen der Dateien unbedingt darauf, dass der Transfer nicht an einer Stelle abbricht oder fehlschlägt. Teilweise hochgeladene Dateien können Serendipity unbenutzbar machen. Da insgesamt mehrere hundert kleine Dateien hochgeladen werden, empfiehlt es sich, im FTP-Programm die Benutzung sogenannter Threads zu aktivieren. Damit öffnet es mehrere parallele FTP-Verbindungen und lädt die Dateien so schneller hoch. In jedem Fall sollten Sie sorgfältig auf etwaige Fehlermeldungen achten.

2.2.2 - Abgesicherte Installation

Abgesicherte Installation

Serendipity Styx wird über eine sogenannte abgesicherte Installation geschützt, um zufällige andere Gäste aus dem Installationsprozess herauszuhalten. Dazu dient eine temporäre install_token.php Datei, die man schnell per FTP heraufladen und im Root Verzeichnis von Serendipity platzieren muss. Um eine abgesicherte Installation auszuführen, müssen Sie diese Datei namens install_token.php mit dem String (Beispiel Token)

<?php $install_token = 'ea032be371d64ec77009257f6f0f9b424b182519'; ?>

in diesem Wurzelverzeichnis erstellen. Achten Sie darauf keine zusätzlichen Leerzeichen oder Zeilen am Anfang oder Ende der Datei einzufügen. Dieser Token ist einzigartig und fixiert die Autorisierungs-Beziehung zwischen Ihnen und dem Installer.

Sobald diese Datei existiert, müssen Sie die Installation innerhalb der nächsten XX Minuten ausführen und dürfen ihren Browser währenddessen nicht schließen. Sie müssen Cookies erlauben.

Fügen Sie also nun den Sicherheits Install Token ein, der Ihnen auf der Seite angegeben wird, laden Sie die Datei hoch und reloaden Sie die Browserseite.

Sie sind nicht autorisiert die Installation auszuführen, wenn Ihr vorgegebener Install-Token nicht demjenigen aus der hochgeladenen Datei install_token.php entspricht. Stellen Sie sicher, dass Sie die Datei mit dem korrekten Inhalt erstellt haben. Sie können einen neuen Token erstellen, in dem Sie die Datei löschen.

Ist ihr sicherer Install-Token gültig, können Sie Serendipity wie gehabt installieren.

Selbst wenn Sie vergessen sollten die Datei nach getanem Werk wieder zu löschen, richtet diese keinen Schaden an.

2.2.3 - Einrichten der Verzeichnisse

Einrichten der Verzeichnisse

Nach dem Upload finden Sie auf Ihrem Webserver im Verzeichnis serendipity einige Dateien mit .php-Endung (index.php, comment.php, serendipity_admin.php ...) sowie einige Unterverzeichnisse (bundled-libs, docs, include, lang, plugins, ...).

Um Zugriffsrechte auf einem Server zu verwalten, bedienen sich sowohl Windows- als auch Linux-Systeme sogenannter Eigentümer- und Gruppenrechte. Jeder Benutzer des Systems kann Dateieigentümer und jeder Eigentümer kann Mitglied einer oder mehrerer Benutzergruppen sein.

Jede Datei (und jedes Verzeichnis) auf einem Server ist einem Eigentümer und einer Gruppe zugewiesen. Für beide wird der Zugriff auf eine Datei über ein Zugriffs- (oder Ausführbarkeits-), Lese- und Schreibrecht geregelt. Meist hat ein Eigentümer die vollen Rechte an einer Datei: Er kann sie ansehen, ändern und löschen. Die anderen Mitglieder derselben Benutzergruppe können jedoch abweichende Rechte haben, so dass sie die Datei nur ansehen, aber nicht verändern dürfen. Zudem muss noch geregelt werden, welche Zugriffsrechte Benutzer haben, die weder Eigentümer noch Gruppenmitglieder sind. Auch für diese "anderen Benutzer", also den "Rest der Welt", werden Zugriffs-, Lese und Schreibrecht aufgeteilt.

Wenn Sie eine Datei mittels FTP auf einen Webserver laden, tun Sie dies (zwangsläufig) mit dem Benutzeraccount, der für den FTP-Zugriff eingerichtet wurde. Hochgeladene Dateien werden diesem Benutzeraccount und standardmäßig einer Gruppe zugewiesen, der Ihrem Benutzerkonto angehört. Dieses Vorgehen stellt sicher, dass andere Benutzer, die auf demselben Server tätig sind, nicht einfach Ihre Dateien lesen oder verändern können. Optimalerweise haben diese keine Möglichkeit, auf von Ihnen hochgeladene Dateien zuzugreifen.

Die Webserver-Software, die die von Ihnen hochgeladenen Dateien interpretiert und als Webseite ausliefert, läuft ebenfalls mit den Rechten eines bestimmten Benutzers. Dieser heißt häufig www-data, wwwrun oder auch nobody. Damit dieser Systembenutzer Software wie Serendipity ausführen kann, muss er bestimmte Rechte an den von Ihnen hochgeladenen Dateien haben. Das müssen Sie sicherstellen. In üblichen Konfigurationen ist Ihr Benutzeraccount Mitglied derselben Gruppe wie der Webserver-Nutzer, die Lesezugriff auf alle hochgeladenen Dateien hat.

Beim Hochladen von Dateien mittels FTP können Sie in diese Rechte eingreifen. Dazu bieten viele Programme bei Rechtsklick auf eine Datei oder ein Verzeichnis ein Menü namens Permission oder CHMOD an (Abbildung 2.1a).

chmod.png
Abbildung 2.1a: CHMOD-Maske des FTP-Programmes FileZilla
Abbildung 2.1b: CHMOD-Über die Linux Konsole

Dort trägt man, Unix-Konventionen entsprechend, die Zugriffsrechte für Eigentümer/Benutzer (Owner), Gruppe (Group) und Rest (Other) ein: für jede dieser drei Nutzerkategorien eine Zahl.

Eine 0 bedeutet "kein Zugriff", eine 1 "Ausführen möglich", eine 2 "Schreiben erlaubt" und eine 4 "Lesen erlaubt". Diese Zahlen lassen sich addieren, so dass ein Lese- und Schreibzugriff durch die Zahl 6 angegeben wird. Für Verzeichnisse gilt dabei, dass diese nur betreten werden dürfen, wenn das Recht mit der Zahl 1 in der Summe enthalten ist, etwa beim Vollzugriff mit 7.

Mit der Zugriffsmaske 777 erhält jeder Nutzer volle Zugriffsrechte auf die betroffene Datei. Damit stellt man einfach sicher, dass sowohl der eigene Benutzeraccount als auch der des Webservers volle Zugriffsrechte haben -- allerdings auch andere Benutzer auf demselben Server. Daher ist es besser, die Zugriffsrechte von Dateien und Verzeichnissen so strikt wie möglich zu setzen. Wie dies konkret bei Ihnen aussieht, klären Sie am besten mit Ihrem Provider.

Als Beispielhaft gelten also 775 für Verzeichnisse und 644 für Dateien. Am besten konsultieren Sie die Serendipity Styx FAQ für mehr.

Damit der Webserver Serendipity ausführen kann, benötigt er Leserechte für alle Dateien und Verzeichnisse. Um Serendipity zu installieren, braucht er zudem anfangs Schreibzugriff auf das Stammverzeichnis, damit er die Dateien serendipity_config_local.inc.php und .htaccess erstellen kann. Darüber hinaus wird das Installationsprogramm die Unterverzeichnisse templates_c, archives und uploads zu erstellen versuchen. Sollte es diese schon geben, müssen Schreibrechte für den Webserver-Benutzer dafür vergeben werden. Nach der Installation benötigt der Webserver nur noch Schreibrechte auf die genannten drei Unterverzeichnisse und zwei Dateien, den globalen Schreibzugriff auf das Stammverzeichnis können Sie also wieder entfernen.

Wenn Sie darüber hinaus das Spartacus-Plugin zum Download von Templates und Plugins nutzen wollen (siehe Kapitel Spartacus ab Seite Spartacus), müssen auch die Verzeichnisse plugins und templates beschreibbar sein (und bleiben).

2.2.4 - Einrichten der Datenbank

Einrichten der Datenbank

Nachdem nun also alle notwendigen Dateien hochgeladen wurden und Sie die Zugriffsrechte konfiguriert haben, müssen Sie eine Datenbank für Serendipity einrichten.

Je nachdem, welche Datenbanksoftware auf Ihrem Webserver zur Verfügung steht, kann dieser Vorgang unterschiedlich ausfallen.

Verwendet Ihr Webserver mindestens PHP5, ist die Datenbank SQLite automatisch verfügbar. Dieses Datenbanksystem speichert alle seine Datenbanken und Tabellen in einer einzigen Datei. Diese wird im Serendipity-Verzeichnis abgelegt und während der Installation ohne Ihr Zutun automatisch erstellt, es sind daher keine vorbereitenden Eingriffe notwendig.

Beim Einsatz von MySQL und PostgreSQL geht Serendipity davon aus, einen Datenbankbenutzer und eine leere Datenbank vorzufinden. Üblicherweise erhält man die Zugangsdaten von seinem Provider, da der Benutzeraccount bereits besteht. Manche Provider gestehen Ihnen nur eine einzelne Datenbank zu, so dass Sie keine neuen erstellen können. Das ist nicht weiter tragisch, da sich Serendipity problemlos mit anderen Anwendungen innerhalb derselben Datenbank betreiben lässt. Viele Provider bieten zudem eigene Oberflächen zur Erstellung einer Datenbank an.

Serendipity benötigt lediglich irgendeine Datenbank für seine Tabellen -- man kann also problemlos eine bereits bestehende Datenbank für die Installation benutzen.

Für Styx und MariaDB/MySQL geben Sie der Datenbank am besten gleich die korrekte utf8mb4_unicode_ci, bzw. noch besser die neuere und erweiterte utf8mb4_unicode_520_ci Kollation mit auf den Weg.

Wie auch an anderer Stelle erwähnt, wird der Name MySQL hier als Synonym für MariaDB/MySQL Datenbanken benutzt. Empfohlen ist auf MariaDB zu setzen, ein Unternehmen das vom MySQL-Gründer Michael "Monty" Widenius betrieben wird, und das in wesentliches Details gegenüber Oracles MySQL zu empfehlen ist.

Sollte noch kein Datenbankbenutzeraccount bestehen, müssen Sie ihn anlegen. Dabei ist wichtig, dass der Benutzer über alle Rechte verfügt, die Serendipity später im Betrieb benötigt. Konkret heißt das, dass er Tabellen anlegen (CREATE), aktualisieren (ALTER) und indizieren (INDEX) sowie Datensätze anlegen (INSERT), aktualisieren (UPDATE), lesen (SELECT) und löschen (DELETE) darf.

Um für MySQL einen solchen Benutzer anzulegen, benutzt man (in einem Programm wie phpMyAdmin, welches die meisten Provider anbieten) folgende SQL-Syntax:


    CREATE DATABASE serendipity;
GRANT SELECT, CREATE, INSERT, UPDATE, DELETE, ALTER, INDEX ON serendipity
TO 'serendipity'@'%' IDENTIFIED BY PASSWORD 'passwort';

Diese beiden Befehle erstellen die leere Datenbank namens serendipity und den gleichnamigen Benutzer, der die notwendigen Zugriffsrechte erhält und sich über das Passwort passwort ausweisen muss. Bei PostgreSQL benutzt man folgende Syntax:


    CREATE USER serendipity WITH PASSWORD 'passwort';
CREATE DATABASE serendipity WITH OWNER = serendipity;
GRANT SELECT, CREATE, INSERT, UPDATE, DELETE, ALTER ON DATABASE
serendipity TO 'serendipity'

Um die Serendipity-Installation erfolgreich durchzuführen, benötigen Sie den Benutzernamen des Datenbanknutzers (hier serendipity), dessen Passwort, den Namen einer leeren Datenbank und den Namen (oder die IP-Adresse) des Datenbankservers.

2.2.5 - Die grafische Installationsroutine

Die grafische Installationsroutine

Nach diesen Vorarbeiten rufen Sie die URL Ihrer Serendipity-Installation im Browser auf, hier also http://www.example.com/serendipity/. Versuchen Sie nicht, eine Datei Ihrer lokalen Festplatte aufzurufen oder eine Datei mittels FTP-Zugriff zu öffnen (zB. via Doppelklick). Dies würde Ihnen lediglich den Quellcode der PHP-Anwendung anzeigen. Stattdessen müssen Sie den Webbrowser einsetzen, damit Ihr Webserver die PHP-Anwendung ausführt.

Bei korrekter Einrichtung des Webservers sehen Sie nun eine Kurzübersicht wie in Abbildung 2.2, die aufführt, welche Voraussetzungen der Server erfüllen muss, ehe Sie fortfahren können. Sollte sich diese entgegen Ihren Wünschen in englischer Sprache präsentieren, konfigurieren Sie Ihren Browser so um, dass Deutsch die bevorzugte Sprache darstellt.

install.png
Abbildung 2.2: Installationsbildschirm (mit exemplarischen Fehlern wie sie im Alltag fast nie vorkommen)

Weist Sie die Übersicht auf einen Fehler bei den Schreibrechten oder den Server-Einstellungen hin, beheben Sie ihn und rufen Sie die Installationsoberfläche erneut auf. Warnungen werden mit roter Schriftfarbe dargestellt, eingeschränkte Funktionen oder Hinweise in Gelb; korrekte Einstellungen sind grün hervorgehoben.

Hinweise der Installationsoberfläche zeigen dabei einen Unterschied zwischen dem von Serendipity empfohlenen Wert und der Einstellung auf Ihrem Webserver an. Im Gegensatz zu Fehlern können Sie Serendipity bei solchen Hinweisen aber trotzdem betreiben, jedoch entweder mit Einbußen bei der Performance oder Funktionalität.

Stimmen die systemseitigen Voraussetzungen, was gerade bei den Rechten oft schon die Regel ist, starten Sie die Installationsoberfläche über einen der beiden Links am Ende der Seite: Einfache Installation oder Fortgeschrittene Installation.

Die Einfache Installation verlangt von Ihnen nur die absolut notwendigen Angaben. Dagegen bietet die Fortgeschrittene Installation sämtliche Konfigurationsoptionen an, die sich auch später im laufenden Betrieb ändern lassen. Da wir in Kapitel Konfiguration ab Seite Konfiguration detailliert auf alle Optionen eingehen, klicken Sie an dieser Stelle am besten auf Einfache Installation.

install2.png
Abbildung 2.3: Initiale Konfiguration

Die Folgeseite (Abbildung 2.3) stellt alle Installationsoptionen in Gruppen unterteilt dar.

Der Abschnitt: Datenbankeinstellungen

In diesem Bereich stellen Sie die Zugangsdaten für die gewünschte Datenbank ein. Im Feld Datenbanktyp können Sie zwischen allen im PHP-Kern verfügbaren Datenbanktypen wählen.

Den Servernamen (meist localhost oder ein Name wie db1231231.puretec.de) tragen Sie genauso wie den Namen und das Passwort des Datenbankbenutzers in die zugehörigen Felder ein. Beim Datenbanktyp SQLite spielen diese Einstellungen keine Rolle und dürfen leer bleiben.

Als Datenbankname tragen Sie den Namen der, entsprechend der Beschreibung auf Seite DBeinrichten, erstellten Datenbank ein. Darin erstellt Serendipity Tabellen, deren Namen es das Präfix serendipity_ oder styx_ voranstellt. Diese Vorsilbe ermöglicht die Installation in eine Datenbank, in der bereits andere Tabellen liegen. Wählen Sie in der Fortgeschrittenen Installation ein anderes Präfix, können Sie auch mehrere Serendipity-Instanzen auf einem Server installieren.

Der Abschnitt: Generelle Einstellungen

Die Optionen im Abschnitt Generelle Einstellungen legen den Standard-Benutzer für das zu installierende Blog fest. Tragen Sie als Admin-Benutzername also den Namen ein, den Sie später beim Login verwenden wollen. Er sollte möglichst keine Sonderzeichen oder Umlaute enthalten, da dies zu Problemen bei unterschiedlichen Zeichensätzen führen kann. Das Gleiche gilt für das Admin-Passwort; lediglich im Feld Voller Name können Sie auch auf Sonderzeichen zurückgreifen.

Die Angabe der Admin-E-Mail-Adresse benötigt Serendipity beim Verschicken von Hinweisen über neu eingegangene Kommentare und Trackbacks.

Den Blog-Titel und die Blog-Beschreibung zeigt das Frontend im Kopfbereich an und verwendet beides auch für die Titelzeile im Browser.

Die Sprache des Blogs gibt die Standardsprache vor, in der Serendipity Nachrichten und Meldungen darstellt. Später lässt sich für Besucher der Webseite und für jeden Redakteur individuell eine Sprache einstellen (siehe Seite eigeneeinstellungen-sprache).

Der Abschnitt: Design und Optionen

Der letzte Einstellungsblock legt bei der einfachen Installation lediglich fest, ob der Standard-Redakteur den WYSIWYG-Editor zur Erstellung von Einträgen benutzen möchte.

Abschluss der Installation

Sind alle Optionen eingetragen (keine Angst, Sie können sie später allesamt wieder verändern), schließen Sie den Installationsvorgang durch einen Klick auf Vollständige Installation ab.

Die letzte Seite der Installationsroutine (Abbildung 2.4) informiert Sie über die von Serendipity durchgeführten Aktionen. Dazu gehört das Anlegen der notwendigen Tabellen und des Standardbenutzers und die Einrichtung der Standard-Plugins. Sollten Sie an dieser Stelle noch nicht über eine passende Datenbank verfügen oder andere Fehler auftreten, informiert Sie Serendipity auch darüber. Dann heißt es zurück zu Abschnitt DBeinrichten ab Seite DBeinrichten.

install3.png
Abbildung 2.4: Einrichtung abgeschlossen

Bei fehlerfreier Installation können Sie über die URL http://www.example.com/serendipity/ das Frontend aufrufen und unter http://www.example.com/serendipity/serendipity_admin.php mit den gewählten Login-Daten auf das Backend zugreifen.

2.2.6 - Die Konfigurationsdatei serendipity_config_local.inc.php

Die Konfigurationsdatei serendipity_config_local.inc.php

Alle grundlegenden Konfigurationsvariablen wie die Daten für den Datenbankzugang und die aktuelle Versionsnummer speichert Serendipity in der Datei serendipity_config_local.inc.php im Stammverzeichnis. Diese Datei sieht ungefähr wie folgt aus:

<?php
    /*
      Serendipity configuration file
      Written on Thu, 14 Apr 2022 11:22:27 +0200
    */

    $serendipity['versionInstalled']  = '3.8.2';
    $serendipity['dbName']            = 'serendipity';
    $serendipity['dbPrefix']          = 'styx_';
    $serendipity['dbHost']            = '127.0.0.1';
    $serendipity['dbUser']            = 'root';
    $serendipity['dbPass']            = 'root';
    $serendipity['dbType']            = 'mysqli';
    $serendipity['dbPersistent']      = false;

    // End of Serendipity configuration file
    // You can place your own special variables after here:

?>

Ähnlich wie bei der .htaccess-Datei (siehe Seite htaccess) können Sie in dieser Datei später auch eigene Konfigurationsparameter nachtragen. Fügen Sie diese nach der Zeile You can place your own special variables after here: ein, so dass Serendipity sie bei einer Konfigurationsänderung nicht versehentlich überschreibt. Je nach Konfiguration des Webservers kann es sein, dass Sie keine Schreibrechte für diese Datei besitzen. Dies lässt sich mit dem fixperm.php-Skript (siehe Seite fixperm) ändern.

2.2.7 - Fehler bei der Installation

Fehler bei der Installation

Die zahlreichen Konfigurationsmöglichkeiten von Webservern geben Spielraum für hinterlistige Fehler.

Nur eine leere Seite erscheint

Wenn an einer Stelle der Installation lediglich eine weiße Seite erscheint, liegt dies meist an sogenannten PHP Fatal Errors. Normalerweise sieht man diese direkt auf der Webseite, aber einige Webserver sind so eingestellt, dass sie PHP-Fehlermeldungen unterdrücken. Wenn das Installationsskript endet, ohne vollständig ausgeführt worden zu sein, führt dies dann zu den weißen/leeren Seiten.

Um die Fehlermeldung dennoch zu sehen, versuchen Sie, in den PHP-Fehlerlogfiles Ihres Webservers nachzuschauen. Diese liegen meist in einem logs-Unterverzeichnis. Den genauen Speicherort solcher Dateien teilt Ihnen der Provider mit.

Man kann aber auch versuchen, im Serendipity-Stammverzeichnis eine Datei namens .htaccess anzulegen und mit folgender Zeile zu füllen:


    php_value display_errors on

Beim Speichern der Datei achten Sie bitte unbedingt darauf, dass PHP dafür Schreibrechte erhalten muss, da es diese Datei während der Installation automatisch verändert. Achten Sie auch darauf, dass einige FTP-Programme Dateien, die mit einem Punkt anfangen, verstecken, so dass Sie diese erst nach Umkonfiguration des Programms sehen.

Die Fehlermeldungen geben meist Aufschluss über die Ursache. Oft sind dies fehlende oder defekte Dateien. Enthält eine Datei Parse Errors [*] PHP meldet einen Parse Error, wenn eine Datei fehlerhafte Zeichen oder eine ungültige Syntax enthält., ist dies meist auf fehlerhafte FTP-Uploads zurückzuführen. Auch fehlende Leserechte kommen als Ursache in Frage.

Am häufigsten kann der Ordner templates_c nicht beschrieben werden. Dieser ist für von Smarty kompilierte Dateien gedacht, die für die Darstellung des Frontends verwendet werden.

HTTP/500 Fehlermeldung

Serendipity setzt einige Standardoptionen über die Datei .htaccess. Von einigen Webservern wird dieser Mechanismus jedoch nicht unterstützt und kann gar zu einem Abbruch des Skripts führen. Sollte sich Serendipity nach der Installation nicht aufrufen lassen, löschen Sie die .htaccess-Datei einfach. Sie ist für den Betrieb nicht zwingend notwendig. Ohne diese Datei können Sie jedoch keine URL-Umformung benutzen, die für Serendipity "sprechende URLs" ermöglicht (siehe Seite urlformung).

Seiten werden nicht gefunden

Um "sprechende URLs" wie http://www.example.com/serendipity/archives/1-Mein-erster-Artikel.html zu unterstützen, kann Serendipity zwei Arten der URL-Umformung unterstützen. Da Pfade und Dateien wie oben genannt nur virtuell erstellt werden und nicht wirklich auf dem Server liegen, muss Serendipity über Umleitungen auf seine zentrale Datei index.php geleitet werden.

Diese Umleitung konfiguriert Serendipity anhand der Datei .htaccess. Dort gibt es zwei Varianten der URL-Umformung: mod_rewrite und Apache Errorhandling.

mod_rewrite ist die komfortabelste Variante der Umformung, benötigt aber ein zusätzliches Webserver-Modul, welches nicht immer verfügbar ist. Apache Errorhandling setzt einen Trick ein, der eigentlich nicht gefundene Seiten (HTTP/404 Not Found) virtuell auf eine zentrale Seite umleitet, die dann den eigentlichen Inhalt ausgibt.

Serendipity versucht bei der Installation die beste Art für Sie automatisch zu erkennen. Auf manchen Servern gelingt dies jedoch nicht, und es kann sein, dass Serendipity die URL-Umformung fälschlicherweise aktiviert. Wenn diese Umformung nicht klappt, gehen alle Links von Serendipity somit "ins Leere". Dazu zählen auch Links zum Stylesheet des Frontends, die das Layout beeinflussen.

Löschen Sie die .htaccess, um dieses Problem zu lösen. Danach suchen Sie die Serendipity-Administrationsoberfläche via http://www.example.com/serendipity/serendipity_admin.php auf, loggen sich ein und gehen über den Menüpunkt Konfiguration zu der Unterebene Design und Optionen. Dort findet sich die Option URL-Formung. Diese Option stellen Sie auf None und speichern die Konfiguration. Daraufhin wird die .htaccess-Datei neu erstellt.

Nun sollten Sie Serendipity-Unterseiten wieder problemlos öffnen können.

Installation erneut ausführen

Wenn die Installation aus irgendwelchen Gründen fehlgeschlagen ist, möchten Sie Serendipity vielleicht von Grund auf neu installieren. Dazu muss Serendipity in den Ursprungszustand zurückversetzt werden. Löschen Sie dafür die Datei serendipity_config_local.inc.php. Diese Datei enthält die Basis-Konfigurationsparameter des Blogs, und sobald diese Datei nicht mehr vorhanden ist, erkennt Serendipity nicht mehr, dass es installiert ist.

Auch die Datei .htaccess sollte vor einer neuen Installation gelöscht werden. Bei beiden Dateien ist zu beachten, dass sie von PHP erstellt wurden und von Serendipity mit minimalen Rechten versehen werden, um diese Daten zu schützen. Daher kann es unter Umständen sein, dass Sie mit Ihrem FTP-Zugang keinen Zugriff mehr auf diese Datei haben!

Um dies zu beheben, bedienen Sie sich eines kleinen PHP-Skripts. Speichern Sie eine Datei namens fixperm.php im Serendipity-Stammverzeichnis mit folgendem Inhalt:

<?php

$ziel = '/var/www/example.com/serendipity/serendipity_config_local.inc.php';
if (chmod($ziel, 0777)) {
  echo "Rechte geändert.";
} else {
  echo "Fehler: Rechte dürften nicht verändert werden.";
  echo "Sie müssen den Provider kontaktieren.";
}

?>

Rufen Sie danach die Datei mittels http://www.example.com/serendipity/fixperm.php im Browser auf. Nach dem Aufruf sollten Sie die Ausgabe "Rechte geändert" sehen, und die Dateirechte sollten nun so verändert worden sein, dass Sie wieder vollen Zugriff auf die Datei haben.

Übrigens können Sie dieses kleine Skript auch später benutzen, um andere Dateien im Serendipity-Verzeichnis wieder mit Zugriffsrechten für Sie auszustatten. Dabei müssen Sie lediglich die Code-Zeile verändern, die den Namen der zu ändernden Datei enthält.

Zuletzt müssen Sie noch die von Serendipity angelegten Datenbanktabellen wieder löschen. Wenn diese Tabellen nicht gelöscht werden, würde Serendipity diese bei einer Neuinstallation schützen wollen. Nur wenn alle Tabellen von Serendipity vorher mittels phpMyAdmin oder Ähnlichem gelöscht werden, wird eine vollständige Neuinstallation möglich sein.

Fehler beim Login

Wenn Sie Fehlermeldungen am Anfang der Seite erhalten, die aussehen wie diese:


    Warning: session_write_close() [function.session-write-close]:
open(/var/lib/php/session/sess_h5a8jerb22q54pkqcjb4qtnqr1, O_RDWR)
failed: Permission denied

dann bedeutet dies, dass Ihr Webserver keinen gültigen Speicherpfad für die PHP-Sessiondateien eingetragen hat. Entweder können Sie den Fehler beheben, indem Sie korrekte Schreibrechte zu dem in der Fehlermeldung genannten Pfad einrichten. Oder Sie müssen einen gültigen Pfad in der Datei php.ini in der Variable session.save_path eintragen.

Ein weiteres Problem, das bei falsch eingerichteten PHP-Sessions auftreten kann, ist, wenn Sie sich nach jedem Klick im Serendipity-Backend erneut einloggen müssen. Dies bedeutet, dass der Webserver Ihre Logindaten nicht in einer Session speichern und Sie somit nicht eindeutig wiedererkennen kann.

Ein ähnliches Problem kann auch dann auftreten, wenn Ihr Browser keine Cookies annimmt, weil sie zB. von einem Werbefilter oder Anti-Virus-Programm gefiltert werden. Auch kann es passieren, dass, wenn Sie die Serendipity-Oberfläche mit einer URL wie http://localhost/serendipity/ aufrufen, die Cookies für eine solche URL nicht angenommen werden. In einem solchen Fall müssten Sie Serendipity über die IP-Adresse wie http://127.0.0.1/serendipity/ aufrufen.

Weiterleitung auf verschiedene URLs

Wenn Sie Serendipity installieren, möchten Sie Ihr Blog möglicherweise unter mehreren URLs aufrufen können.

Ein klassischer Fall dieser unterschiedlichen URLs ist, wenn Ihr Blog sowohl unter http://example.com/serendipity/ als auch http://www.example.com/serendipity/ verfügbar sein soll. Damit Serendipity die jeweils genutzte URL als Standard für Folgeseiten übernimmt, müssen Sie lediglich in der Konfiguration desselben die Option HTTP-Hostname (siehe Kapitel HTTP-Hostname ab Seite HTTP-Hostname) aktivieren.

Diese Funktion hilft Ihnen jedoch nur dann, wenn der benutzte Pfad (in diesem Fall /serendipity/) in allen Fällen gleich bleibt. Sollten Sie Ihr Blog aber sowohl unter der URL http://example.com/serendipity/ als auch http://serendipity.example.com/ darstellen wollen, dann würden Sie diese Vorbedingung nicht erfüllen können. Serendipity kann mit einer derartigen Einstellung nicht umgehen.

Der Grund dafür ist, dass bei einer abweichenden Pfadkomponente die relativen Links nicht mehr korrekt funktionieren. Bei der einen URL müsste Serendipity für den HTTP-Pfad immer /serendipity/ nutzen, während bei der anderen URL immer / genutzt werden müsste. Die Links würden daher nicht übereinstimmen und zu zahlreichen Problemen bei der Darstellung von Grafiken und Verweisen führen.

Das bessere Vorgehen in diesem Fall wäre also die Einrichtung einer Weiterleitung. Dabei sollten Sie sich eine endgültige URL aussuchen und alle weiteren optionalen URLs zu dieser Zielseite weiterleiten.

Weiterleitungen können Sie auf unterschiedliche Weisen realisieren. In unserem Beispiel gehen wir davon aus, dass http://serendipity.example.com/ die Zielseite und http://example.com/serendipity/ die Quellseite darstellt.

Bei vielen Standardinstallationen für mehrere verfügbare URLs würden beide URLs bereits auf dasselbe Verzeichnis verweisen. http://serendipity.example.com/index.php als auch http://example.com/serendipity/index.php würden physikalisch auf dieselbe Datei zeigen, man spricht daher von einem Alias. Sollte dies bei Ihnen der Fall sein, haben Sie zwei Möglichkeiten der Weiterleitung:

  • Weiterleitung via .htaccess bei identischen Serendipity-Verzeichnissen Wenn auf Ihrem Server mod_rewrite zur Verfügung steht, können Sie an den Anfang Ihrer .htaccess-Datei des Serendipity-Verzeichnisses vor dem Blog #Begin s9y folgende Zeilen einfügen: RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^serendipity/(.*)$ http://serendipity.example.com/$1 [QSA]
    Diese Regel weist den Webserver an, dass sämtliche Zugriffe zu http://example.com/ auf die Zielseite http://serendipity.example.com/ weitergeleitet werden. Sie müssen also jeweils den Quellservernamen, das Quellverzeichnis auf dem Quellserver und den Zielserver in den obigen Zeilen an Ihre Gegebenheiten anpassen.
  • Weiterleitung mittels PHP bei identischen Serendipity-Verzeichnissen Ohne mod_rewrite müssen Sie die Weiterleitung innerhalb der Datei serendipity_config_local.inc.php einprogrammieren. Öffnen Sie diese Datei in einem Editor (bei fehlendem Schreibzugriff schauen Sie sich bitte fixperm.php auf Seite fixperm an) und fügen Sie in die Zeile vor dem letzten ?> Folgendes ein: // Ist der ausführende Server der Quellserver?
    if ($_SERVER['HTTP_HOST'] == 'example.com') {
        // Ersetze böse Sonderzeichen
        $ziel = str_replace(
          array("\n", "\r"), 
          array('', ''),
          $_SERVER['REQUEST_URI']
        );
        
        // Entferne Quell-Pfad zur Weiterleitung
        $ziel = preg_replace('@^/serendipity/@i', '/', $ziel);

        // Leite zu Ziel-Server weiter
        header('Location: http://serendipity.example.com' .$ziel);
        exit;
    }
    Dieser Code sorgt dafür, dass, wenn Serendipity auf dem Quellserver aufgerufen wird, der Besucher automatisch auf die Zielseite weitergeleitet wird.

Sollten durch die Art der Einrichtung jedoch beide URLs (Weiterleitungsquelle und Weiterleitungsziel) auf unterschiedliche Verzeichnisse Ihrer Domain zugreifen, dann können Sie die einfachste Form der Weiterleitung nutzen:

  • Weiterleitung mittels index.html bei unterschiedlichen Serendipity-Verzeichnissen Erstellen Sie die Datei index.html in dem Verzeichnis der Quell-URL (in unserem Beispiel /serendipity/): <html>
      <head>
        <meta http-equiv="refresh" content="0;url=http://serendipity.example.com/">
      </head>
      <body>
      </body>
    </html>
    Beim Aufruf der Quell-URL wird dann unkompliziert auf die Ziel-URL weitergeleitet.
  • Weiterleitung mittels index.php bei unterschiedlichen Serendipity-Verzeichnissen Etwas schneller geht die Weiterleitung mittels PHP, da die Weiterleitung dann intern im Browser ausgeführt wird und Sie nicht vorher kurz eine weiße Seite im Browser aufflackern sehen. Speichern Sie im Quellverzeichnis folgende index.php-Datei: <?php
    header('Location: http://serendipity.example.com/');
    ?>

Einen Sonderfall dieser Weiterleitung stellt das Beispiel dar, wenn Sie Serendipity zwar in einem Unterverzeichnis Ihres Webservers installiert haben (http://example.com/blog/), aber gerne möchten, dass Serendipity beim Aufruf der Haupt-Domain (http://example.com/) direkt aufgerufen wird. Die einfachste Variante hier wäre natürlich, dass Sie Serendipity in das Stammverzeichnis Ihrer Webseite installieren, da dies problemlos möglich ist. Sollten Sie dies aus irgendwelchen Gründen nicht bevorzugen, können Sie ebenfalls die oben genannte Methode der Weiterleitung mittels index.php oder index.html nutzen.

Falsche Anzeige von Datumsangaben oder Sonderzeichen

Serendipity benutzt zur Darstellung von Datumsangaben für Artikel und im Kalender ein serverseitiges System namens locales. Diese locales sind, grob gesagt, eine Sammlung von nationalen Sprachbesonderheiten und geben an, wie in beinahe allen gesprochenen Sprachen die Währungs- und Datumsangaben formatiert und geschrieben werden. Damit Serendipity auf möglichst vielen Sprachumgebungen ohne viel Aufwand lauffähig ist, verlässt es sich auf diesen De-facto-Standard.

Ebenfalls zur weitreichenden Unterstützung verschiedener Sprachen unterstützt Serendipity mehrere Zeichensätze. Ein Zeichensatz regelt, mit welchem Binärsystem Buchstaben für den Computer abgespeichert werden -- denn je nach Zeichensatz ist für einen Computer "ä" nicht gleich "ä". Für die deutsche Sprache ist der standardisierte ISO-8859-1-Zeichensatz üblich. Um jedoch auch mit anderen Sprachen benutzbar zu sein, hat sich der Zeichensatz UTF-8 etabliert, da dieser beinahe alle Sonderzeichen jeder Sprache enthält. Ein arabischer Artikel könnte so also direkt neben einem deutschen Artikel stehen, ohne dass Sonderzeichen falsch dargestellt würden.

Sobald die Zeichensätze vermischt werden, kann es zu Fehldarstellungen im Browser kommen - Mozilla Firefox zeigt statt des korrekten Zeichens dann ein Karo-Symbol mit einem Fragezeichen an. Wenn Sie dies einmal in Ihren Artikeln beobachten, liegt ein solcher Zeichensatzkonflikt vor.

In der Serendipity-Konfiguration können Sie einstellen, ob Serendipity mit nationalem Zeichensatz oder UTF-8 betrieben wird. Standardmäßig wird dies bei der Installation für größtmögliche Kompatibilität direkt auf UTF-8 gesetzt. Sie sollten daher bei einer frischen Installation keinerlei Probleme mit Zeichensätzen erwarten - erst bei späteren Änderungen am System könnten möglicherweise einmal Probleme auftreten.

Die Behandlung von Sonderzeichen zur Speicherung in Datenbanken ist recht komplex und kann mehrere Fehlerursachen haben.

Die erste Fehlerursache kann Ihr Browser sein. Stellen Sie sicher, dass dieser den UTF-8-Zeichensatz darstellen kann. Wenn Sie beim Besuch der Seite http://www.columbia.edu/kermit/utf8.html falsche Sonderzeichen sehen, ist dies ein Indiz für eine fehlerhafte Browserkonfiguration, die Sie mithilfe der Dokumentation Ihres Webbrowser lösen müssen.

Die zweite Fehlerursache kann der Webserver sein, der Zeichensätze selbständig verändert. Apache bietet eine Option an, ein sogenanntes DefaultCharset zu setzen, das die Ausgabe von Sonderzeichen eventuell verändern könnte. Wenn der Webserver nicht die von Serendipity bestimmten Content-Type-HTTP-Kopfzeilen an den Browser sendet, kann es sein, dass der Webserver durch seine Standardeinstellung die Umbelegung durch Serendipity verhindert. Sprechen Sie daher mit ihrem Provider und bitten Sie ihn, diese HTTP-Kopfzeilen zu überprüfen.

Zu guter Letzt gibt es nun noch die Datenbank, die Artikel mit unterschiedlicher Kodierung speichern kann. Gerade zwischen MySQL 4.0 und 4.1 gab es weitreichende Änderungen in der Behandlung von Zeichensätzen, die sich bei einem MySQL-Update darin äußern konnten, dass Serendipity die Sonderzeichen falsch anzeigte. Um dies zu korrigieren, müssen Sie sicherstellen, dass alle MySQL-Tabellen und -Spalten als Collation den übereinstimmenden Zeichensatz benutzen (also de_latin beim ISO-Zeichensatz und utf8 für UTF-8). Sobald dies korrekt übereinstimmt, kann in der Serendipity-Konfiguration die Option Datenbank-Zeichensatzkonvertierung aktivieren gewählt werden, was dann wieder zu einer korrekten Darstellung der Sonderzeichen führen sollte.

In einigen Fällen ist es möglicherweise notwendig, einen vollständigen SQL-Export der Datenbank vorzunehmen und die Datei mittels eines Editors vom ISO-8859-1- ins UTF-8-Format zu überführen, neu zu importieren und danach Serendipity zentral auf UTF-8-Zeichensätze umzustellen. Alternativ können Sie das mit folgendem PHP-Skript erreichen, das einen Datenbankdump namens dump-iso.sql in dump-utf8.sql vom ISO-8859-1-Zeichensatz in den UTF-8-Zeichensatz verwandelt. Etwaige SQL-Befehle (COLLATION), die MySQL-Zeichensätze bestimmen, müssen Sie jedoch manuell in der Datei umwandeln, um sie später als vollständiges UTF-8 importieren zu können:

<?php

$input  = file_get_contents('dump-iso.sql');
$output = @utf8_encode($input);
$fp     = fopen('dump-utf8.sql', 'wb');
if ($fp) {
  fwrite($fp, $output);
  fclose($fp);
} else {
  echo "Keine Schreibrechte, bitte korrigieren.";
}

?>

Zurück aber zu dem Problem mit falsch angezeigten Datumsangaben. Damit der Wochentag "Freitag" nicht als "Friday" oder Ähnliches ausgegeben wird, muss eine deutsche Sprachdatei für das locales-System auf dem Server hinterlegt werden. Locales sind auf allen Betriebssystemen verfügbar und in fast allen Fällen vorinstalliert. Je nach System können sie auch nachinstalliert werden (bei Linux zB. mittels locale-gen). Für jede Sprache gibt es abhängig vom Zeichensatz eine Sprachdatei. Für Deutsch ist es üblicherweise de_DE.UTF8 (UTF-8-Zeichensatz) oder de_DE.ISO88591 (nationaler Zeichensatz). Manchmal ist auf Servern nur das ISO-Locale installiert, und deshalb wird der Monat "März" mit einem falschen Sonderzeichen dargestellt. Abhilfe schafft hier die Installation der passenden UTF8-Locale-Datei. UTF8 ist grundsätzlich immer vorzuziehen.

Die Installation der Locales kann nur vom Serverbetreiber vorgenommen werden, im Problemfall müssen Sie sich also an diesen wenden. Die Locales, die Serendipity anwendet, finden Sie im Übrigen in der Datei lang/serendipity_lang_de.inc.php bzw. lang/UTF-8/serendipity_lang_de.inc.php in einer Zeile wie:


    @define('DATE_LOCALES', 'de_DE.ISO-8859-1, de_DE.ISO8859-1, german, de_DE, de_DE@euro, de');

Die definitive Nutzung der korrekten locales wird sich in Zukunft noch verschärfen, da PHP spätestens mit Version 9 aus Sicherheitsgründen auf diesen besteht. Ansonsten werden Ihrem Zeit und Datumsangaben nur im englischen Format zur Vefügung stehen.

2.3 - Schnelle Installation

Schnelle Installation

  • Serendipity-Release-Paket von der Homepage herunterladen und via FTP auf den Webserver hochladen.
  • Zugriffsrechte überprüfen: Stammverzeichnis und Unterverzeichnis archives, templates_c, uploads müssen Schreibrechte für PHP besitzen, alle anderen Dateien und Verzeichnisse Leserechte.
  • Eine leere Datenbank erstellen, falls noch nicht vorhanden. Sicherstellen, dass der Datenbankbenutzer die Rechte CREATE, INSERT, UPDATE, DELETE, ALTER, INDEX, SELECT besitzt. Im Falle von Styx und MariaDB/MySQL geben Sie der Datenbank am besten gleich eine utf8mb4_unicode_ci, bzw. noch besser die neuere utf8mb4_unicode_520_ci Kollation mit auf den Weg.
  • Via HTTP die Installationsroutine aufrufen: http://www.example.com/serendipity/
  • Der Installationsroutine folgen und die Anfangskonfiguration vornehmen. Einrichtung

Kapitel 3: Frontend / Übersicht

Nach der Installation können Sie unter http://www.example.com/serendipity/ das Frontend aufrufen. Hier spielt sich alles ab, was jeder Besucher sehen kann: Man kann Einträge lesen und kommentieren, in älteren Archiven stöbern, eine Suche durchführen und auch etliche Plugin-Funktionalitäten (Umfrage, Flickr-Fotos ...) ansehen.

Im Folgenden gehen wir von dem standardmäßig genutzten Theme (siehe Seite theme) Pure aus. Die meisten anderen Themes richten sich in der Darstellung der Seitenelemente nach demselben Schema, können aber in Details davon abweichen. Wie man die Darstellung anpassen kann, werden Sie in späteren Kapiteln ab Seite Anpassungen lernen.

 

3.1 - Übersicht

Übersicht

Die Startseite eines Serendipity-Blogs zeigt üblicherweise die chronologisch letzten 15 Artikel in allen Kategorien untereinander an, wobei der erste Artikel der aktuellste ist. Je nach Template ist dieser Inhaltsbereich von ein bis zwei sogenannten Seitenleisten umgeben. In den Seitenleisten können sich Seitenleisten-Plugins ansiedeln, die beliebige Inhalte darstellen können. Ebenfalls abhängig vom Template sehen Sie meist eine zentrale Seitenüberschrift (Kopf- oder auch Banner-Bereich genannt) und eine weitere Überschrift vor der Artikelübersicht.

startpage_empty_dm_de.png
Abbildung 3.1: Frontend nach der Installation im Dark Mode

Die Standard-Installation von Serendipity richtet eine rechte Seitenleiste ein, in der folgende Elemente dargestellt werden:

Kalender Frühere Serendipity Versionen installierten hier zuallererst den Kalender. Inzwischen ist die Meinung gewachsen auf diese Art der Navigation und Darstellung per default verzichten zu können. Der Kalender stellt den aktuellen Monat in einer graphischen Übersicht dar. Der aktuelle Tag wird hervorgehoben, und jeder Tag, an dem ein Artikel verfasst wurde, ist ebenfalls hervorgehoben. Bei einem Klick auf einen Tag oder auf die Navigationspfeile in der Kopfzeile des Kalenders kann man sich die Artikel anzeigen lassen, die im gewählten Zeitraum verfasst wurden.

Suche In die Eingabebox der Schnellsuche kann man einen Suchbegriff eingeben und den Suchvorgang mittels (Enter)-Taste ausführen. Die Suche umfasst dabei sowohl Artikelüberschrift als auch den Artikelinhalt und zeigt in der Ergebnisseite die gefundenen Artikel genauso an wie in einer normalen Artikelübersicht eines Zeitraumes. Details zur Suche sind am Ende des Kapitels (Seite Suche) erwähnt.

Archive Die Links dieses Plugins zeigen unterschiedliche chronologische Abschnitte der Blogeinträge an. Standardmäßig werden die letzten drei Monate mit Link angezeigt, und ein Klick darauf ruft die übliche Artikelansicht auf, bei der jedoch nur der gewünschte Zeitraum berücksichtigt wird. Der Link Das neueste führt zur üblichen Startseite und der Link Älteres zu einer besonderen Übersichtsseite (siehe Abschnitt Archive auf Seite Permalinks-Frontend).

Kategorien In dem Seitenleisten-Block Kategorien wird eine Liste aller eingerichteten Kategorien des Blogs dargestellt. Ein Klick auf eine Kategorie wird daraufhin ausschließlich Artikel anzeigen, die dieser Kategorie zugeordnet sind. Neben jedem Kategorienamen befindet sich zudem ein kleines Symbol, das auf den RSS-Feed dieser Kategorie zeigt. Außerdem besteht für den Besucher die Möglichkeit, mehrere Kategorien zur Ansicht zu kombinieren. So könnte man sich alle Beiträge mehrerer Kategorien anzeigen lassen, indem man die Auswahlboxen neben mehreren Kategorien ankreuzt und danach auf den Button Los! darunter klickt. Alle Kategorien führt zurück auf die Übersichtsseite des Blogs, in der wieder alle Beiträge aller Kategorien gezeigt werden.

Blog abonnieren Alle Feed-Formate (siehe Terminologie, Seite RSS), die das Blog anbietet, werden in dieser Box dargestellt. Die unterstützten Formate sind RSS 0.91, RSS 2.0, Atom 0.3 und Atom 1.0. Zusätzlich gibt es noch einen speziellen RSS 2.0-Feed, der alle Kommentare zu den Beiträgen enthält. Mit diesem Feed können Besucher des Blogs auch auf dem Laufenden über neue Kommentare bleiben.

Verwaltung des Blogs Damit ein Redakteur sich leicht in das Backend des Blogs einloggen kann, wird ein Link dorthin angeboten. Je nachdem, ob der Benutzer bereits eingeloggt ist, steht hier entweder Zum Login oder Administrationsbereich.

Powered by Zuletzt befindet sich in diesem Block eine kleine Werbung für Serendipity. Besucher Ihres Blogs finden die Technik dahinter womöglich faszinierend, so dass sie dieser Hinweis über das eingesetzte System interessiert. Da ein Open-Source-System von seinen Benutzern und seiner Verbreitung lebt, freuen sich die Entwickler immer sehr, wenn dieser Hinweis nicht entfernt wird.

Fast alle der genannten Plugins lassen sich in ihrer Pluginkonfiguration genauer auf Ihre Wünsche einstellen.

3.2 - Beiträge

Beiträge

Da nach der Installation noch keine Einträge verfasst wurden, wird im Inhaltsbereich nur die Meldung "Keine Einträge vorhanden" angezeigt.

Unterhalb des Inhaltsbereichs befindet sich der Fußbereich, in dem man je nach dargestellter Seite vor- und zurückblättern kann. Viele Archivansichten können so chronologisch von vorne nach hinten durchblättert werden.

Sobald sich in dem Blog ein Artikel befindet, wird dessen Titel und der einfache Eintragstext angezeigt. Zusätzlich werden Meta-Angaben über einen Artikel eingeblendet: die Erstellungszeit, die Kategorie, in der sich ein Artikel befindet, der Name des Autors und die Anzahl der Kommentare zu diesem Artikel.

pure_dm_de.png
Abbildung 3.2: Frontend mit einem eingetragenen Artikel im Dark Mode

Jeder Beitrag kann zudem einen sogenannten Erweiterten Eintrag aufweisen. Dieser Zusatztext wird in der Übersichtsseite nicht angezeigt, sondern erst bei der Detailansicht eines Artikels. Sobald ein Artikel solchen Zusatztext enthält, führt der Link "Artikeltitel" vollständig lesen oder ein Klick auf den Titel des Beitrags zu dieser Detailseite.

Auf dieser Detailseite befinden sich außerdem alle Kommentare und Trackbacks zu einem Artikel. Auch in der Seitenüberschrift verändert sich der Kopfbereich und stellt durch die Aufnahme des Artikeltitels dar, dass man sich auf einer einzelnen Artikelseite befindet.

Sollte man sich bereits in das Backend eingeloggt haben, erscheint bei den Meta-Angaben zu einem Artikel auch ein Link Eintrag bearbeiten, mittels dessen man den entsprechenden Artikel direkt bearbeiten kann.

 

3.3 - Archive

Archive

Wie bereits erwähnt, verfügt Serendipity über einige besondere chronologische Artikelübersichten, abhängig von der gewählten Kategorie, dem Zeitraum (nach Jahr, Monat, Woche oder Tag), einem Autor und einer Seitenzahl.

Diese Seiten sind alle vom Inhalt her gleich aufgebaut, da alle Ansichten die Artikel gleichartig auflisten. Lediglich die dargestellten Inhalte sind nach dem gewünschten Kriterium gefiltert, und der Kopfbereich sowie der Fußbereich geben die Art der Übersichtsseite an.

Alle Seiten haben zudem einen Stamm-Permalink (siehe Kapitel Terminologie auf Seite terminologie-permalinks) gemeinsam: http://www.example.com/serendipity/archives/XXX. Alle Archivseiten sind so einem virtuellen Verzeichnis zugeordnet, die Darstellung richtet sich nach dem dahinterstehenden XXX. Unterschiedliche Pfadkomponenten legen dabei fest, was genau angezeigt wird:

/archives/2007.html stellt alle Artikel des Jahres 2007 dar.

/archives/2007/12.html stellt alle Artikel aus Dezember 2007 dar.

/archives/2007/12/01.html stellt alle Artikel vom ersten Dezember 2007 dar.

/archives/1-Beispiel.html stellt eine einzelne Artikelseite dar.

/archives/C1.html stellt alle Artikel der Kategorie mit der Nummer 1 dar. Die Pfadkomponente C (für Category) wird dabei gefolgt von einer Zahl.

/archives/P2.html stellt die zweite Seite einer Übersicht dar. Die Pfadkomponente P (für Page) wird gefolgt von einer Seitennummer.

/archives/A1.html stellt alle Artikel des Autors mit der Nummer 1 dar. Die Pfadkomponente A (für Author) wird gefolgt von einer Zahl, die den Autor angibt.

/archives/W52.html stellt alle Artikel der Kalenderwoche 52 dar. Die Pfadkomponente W (für Week) wird gefolgt von der Wochennummer.

/archives/summary.html legt fest, dass die Artikelübersicht ausschließlich Datum und Artikeltitel (also ohne jeglichen Inhalt) darstellt. Diese Ansicht - wie fast alle weiteren summary Seiten - hat eine fest eingestellte, optionslose und spezifische Limitierung von 25 Artikeln pro Seite (bzw. 24, wenn die normale fetchLimit Selektion schon auf diese Zahl eingestellt ist), kann aber über eine manuell gesetzte $serendipity['summaryFetchLimit'] Variable zB. in der serendipity_config_local.inc von Hand überschrieben werden.

Wichtig ist dabei, dass die Pfadkomponenten (bis auf die für eine einzelne Artikelseite) hierbei beliebig miteinander kombinierbar sind. Dabei ist nur zu beachten, dass die Angabe des Datums (Jahr, Monat, Tag) immer direkt am Anfang des Permalinks stehen muss. Hier einige Beispiele für die Kombinationsmöglichkeiten:

/archives/2007/C1/A2.html stellt alle Artikel des Jahres 2007 dar, die in Kategorie 1 vom Autor 2 geschrieben wurden.

/archives/2007/12/summary.html stellt die Seite der Artikelübersicht (nur Datum und Titel) aller Artikel im Dezember 2007 dar.

/archives/summary/P2.html stellt die zweite Seite der zusammenfassenden Artikelübersicht (nur Datum und Titel) aller Artikel dar.

/archives/2020/summary.html stellt die Artikelübersicht (nur Datum und Titel) aller Artikel im Jahr 2020 dar.

/archives/2020/summary/P2.html stellt die zweite Seite der Artikelübersicht (nur Datum und Titel) aller Artikel im Jahr 2020 dar.

/archives/2007/12/P2.html stellt die zweite Seite der offenen Artikelübersicht aller Artikel im Dezember 2007 dar.

/archives/W52/A1.html stellt alle Artikel des ersten Autors der 52. Kalenderwoche des aktuellen Jahres dar.

/archives/2018/W52.html stellt alle Artikel der 52. Kalenderwoche im Jahr 2018 dar.

Die URL muss immer auf .html enden, die letzte Pfadkomponente darf somit keinen abschließenden / enthalten.

Da für die Ansicht der Artikel nach Autoren oder nach Kategorie eigenständige Permalinks wünschenswert sind, bietet Serendipity dieselben Artikelübersichten auch bei Aufruf folgender URLs (ohne .html) an:

/authors/1-AutorName stellt die Artikelübersicht nach Autor dar, wobei in diesem Fall der Name des Autors zu Suchmaschinenzwecken in der URL stehen kann. Mehrere Autoren können hierbei mittels ; nach der Nummer des Autors kombiniert werden: authors/1;2;3-AutorName. Der Parameter P für die gewünschte Seite kann angehängt werden.

/categories/1-KategorieName stellt die Artikelübersicht nach Kategorie dar, wobei in diesem Fall der Name der Kategorie zu Suchmaschinenzwecken in der URL stehen kann. Mehrere Kategorien können hierbei mittels ; nach der Nummer der Kategorie kombiniert werden: categories/1;2;3-KategorieName. Die Parameter P für die gewünschte Seite sowie A für die Einschränkung nach Autoren können zusätzlich angehängt werden.

Über http://www.example.com/serendipity/archive/ gelangt man zu einer Übersichtsseite mit einer speziellen chronologischen Übersicht.

pure_archive_dm_de.png
Abbildung 3.3: Archiv-Übersicht im Dark Mode

Dort werden für alle Jahre, in denen Artikel verfasst wurden, die Monate dargestellt. Die Links im Standard Theme Pure Monat (ganz anzeigen) und Anzahl der Einträge (Überschriften anzeigen) führen hierbei wieder zu den eingangs erwähnten Archiv-Übersichtsseiten.

Auch die URL für die spezielle chronologische Übersicht kann mit speziellen Pfadkomponenten eingeschränkt werden - eine Einschränkung nach Zeitraum erfolgt dabei jedoch nicht, da die Übersicht immer den ganzen Zeitraum berücksichtigt. (Das .html ist hier optional.)

/archive/C1.html stellt die Übersicht aller Artikel der Kategorie mit der Nummer 1 dar. Die Pfadkomponente C (für Category) wird dabei gefolgt von einer Zahl.

/archive/A1.html stellt die Übersicht aller Artikel des Autors mit der Nummer 1 dar. Die Pfadkomponente A (für Author) wird gefolgt von einer Zahl, die den Autor angibt.

 

3.4 - Kommentare und Trackbacks

Kommentare und Trackbacks

Artikel des Blogs können von Besuchern kommentiert oder referenziert werden. Diese Kommentare werden von Serendipity auf unterschiedliche Weise im Frontend eingebunden und können in weiteren Übersichtsseiten speziell gefiltert werden.

3.4.1 - Kommentare zu einzelnen Artikeln

Kommentare zu einzelnen Artikeln

Die Ansicht der Kommentare (und Trackbacks) zu einem Beitrag erreicht man entweder durch einen Klick auf die Detailseite eines Beitrags oder indem man auf den Link Kommentare (x) klickt. Je nach Einstellung des Blogs (siehe Seite config-popups) öffnet sich dann ebenfalls die Detailseite des Beitrags oder ein Popup-Fenster mit den Kommentaren.

Trackbacks zu einem Artikel werden unterhalb eines Beitrags vor den Kommentaren chronologisch geordnet angezeigt. Ein Trackback ist ein Artikel eines fremden Blogs, der sich auf Ihren geschriebenen Beitrag bezieht. Dabei führt der Link des Trackbacks zu diesem fremden Beitrag, und zur Orientierung werden die ersten Absätze des fremden Beitrags mit angezeigt. Damit ein fremdes Blog sich auf Ihren Artikel beziehen konnte, war der Link Trackback für spezifische URI dieses Eintrags vorgesehen. Ein Klick darauf, oder das Überfahren mit der Maus verriet, dass dieser Link nicht für die Ansicht im Browser gedacht war, sondern für fremde Blogsysteme übernommen werden sollte. Besucher mussten diesen Link verwenden, um ein Trackback zu Ihnen zu senden. Heutzutage ist dies aber viel einfacher gelöst, denn sollte ihr Theme bereits über einen "link rel" tag im Seitenkopf verfügen <link rel="trackback" type="application/x-www-form-urlencoded" href="https://ihrBlog.de/styx/comment.php?type=trackback&entry_id=28"> (als beispielhaften Eintrag), was heutzutage die Regel ist, ist die genannte URL für alte Systeme obsolet, denn ihr System "lauscht" bereits automatisch auf eventuell gesetzte Trackbacks, wenn jemand die eigentliche URL ihres Artikels https://ihrBlog.de/styx/archives/28-titel.html im eigenen Blog verlinkt.

Nach den Trackbacks folgt die Auflistung der Kommentare. Standardmäßig werden diese thread-basiert aufgelistet. Dabei startet die Auflistung mit dem chronologisch ersten Kommentar, und mögliche andere Kommentare, die sich auf diesen beziehen, werden eingerückt darunter dargestellt. Daher nennt sich diese Ansicht Verschachtelt. Falls Sie eine chronologisch sortierte Ansicht bevorzugen, kann man diese über den Link Linear aufrufen.

Als Redakteur des Blogs sehen Sie zudem noch den Link Kommentare für diesen Eintrag nicht mehr zulassen, mit dem Sie die Kommentarfunktionalität eines Beitrags (auch übergangsweise) sperren können. An derselben Stelle erscheint danach auch wieder ein Link zum Entsperren.

pure_article_dm_de.png
Abbildung 3.4: Artikel-Ansicht mit Kommentardarstellung im Dark Mode

Zu jedem Kommentar wird der Name des Kommentatoren dargestellt, sowie (falls von ihm angegeben) seine E-Mail-Adresse und Homepage.

Nach der Auflistung der vorhandenen Kommentare kann ein eigener, neuer Kommentar eingefügt werden. In das Eingabeformular trägt man dazu seine Daten (Name, E-Mail, Homepage, Bezug) sowie den gewünschten Kommentartext ein. Unterhalb der Eingabebox befindet sich ein Hinweis, welche Textformatierungsmöglichkeiten es gibt, um gewisse Dinge hervorzuheben.

Die Auswahlbox Daten merken? kann genutzt werden, damit der eingetragene Name in Zukunft vom Browser vorausgefüllt wird. Die Box Bei Aktualisierung dieser Kommentare benachrichtigen bestimmt, ob man bei einem neuen Kommentar zu dem Beitrag per E-Mail informiert werden soll.

Um einen Kommentar vor Übermittlung zu überprüfen, kann man den Button Vorschau benutzen. Die Folgeseite zeigt den eigenen Kommentar dann so innerhalb der Webseite, wie er danach für alle Besucher erscheinen sollte. Gerade wenn Sie Sonderzeichen oder HTML-Code in Ihrem Kommentartext benutzen, dient die Vorschau der Kontrolle, ob später auch wirklich alles angezeigt werden kann.

Nach Abschicken eines Kommentars kann es je nach Einstellung des Artikels zu einer Moderation kommen - in diesem Fall muss ein Redakteur einen Kommentar erst autorisieren, bevor er angezeigt wird (siehe Seite Kommentare).

3.4.2 - Kommentarübersichten

Kommentarübersichten

Neben der gezielten Ansicht von Kommentaren zu einem Artikel gibt es auch eine Übersichtsseite, auf der alle Kommentare unabhängig vom Artikel dargestellt werden.

pure_startpage_comments_dm_de.png
Abbildung 3.5: Kommentarübersicht im Dark Mode

Dies eignet sich besonders, um zu sehen, zu welchen Einträgen bestimmte Personen kommentiert haben. Die Seite zeigt dabei wie üblich seitenweise blätterbar die Überschrift eines Artikels an, und darunter die getätigten Kommentare.

Diese /comments/ Ansichten haben eine fest eingestellte, optionslose und spezifische Limitierung von 10 Kommentaren pro Seite, können aber über die manuell gesetzte $serendipity['CBAfetchLimit'] Variable zB. in der serendipity_config_local.inc von Hand überschrieben werden. Als ein gutes Maß haben sich 20 Kommentare per Seite herausgestellt, deshalb ist es zu empfehlen diese Variable zu setzen, wenn Sie solcherlei Übersichten anbieten.

Diese Übersichtsseite ist bisher in wenigen Templates eingebaut und wird daher von Besuchern auch seltener genutzt.

Das Permalink-Schema sieht dabei wie folgt aus:

/comments/kommentator/ stellt die Übersicht aller Kommentare dar, die vom Benutzer kommentator stammen. Die Kommentatoren werden dabei in der Datenbank nach exakter Übereinstimmung mit dem Namen in der URL herausgesucht. Ohne Angabe eines solchen Wertes werden die Kommentare aller Benutzer angezeigt. Sollten Sie nach Namen mit Leerzeichen suchen, müssen Sie ein + anstelle des Leerzeichens einfügen, zB. /comments/John+Doe/.

/comments/last_5/ stellt die Übersicht der Kommentare der letzten fünf Tage zu allen Artikeln des aktuellen Monats ab Uhrzeit dar. Ohne Angabe eines solchen Wertes werden alle Kommentare angezeigt.

/comments/from_2007-12-01/ stellt alle Kommentare seit dem 01.12.2007 dar. Das Datum muss hierbei der GNU DATE-Syntax entsprechen, siehe https://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html. Ohne Angabe dieses Wertes wird keine minimale Zeitbeschränkung gesetzt.

/comments/to_2007-12-31/ stellt alle Kommentare dar, die bis zum 31.12.2007 gemacht wurden. Das Datum muss ebenfalls der GNU DATE-Syntax entsprechen. Ohne Angabe dieses Wertes wird keine maximale Zeitbeschränkung gesetzt.

/comments/trackbacks/ stellt anstelle einer Übersicht zu Kommentaren die Übersicht der Trackbacks dar.

/comments/comments_and_trackbacks/ stellt sowohl Kommentare als auch Trackbacks dar.

/comments/comments/ stellt nur Kommentare dar. Da die Variable dem Standard entspricht, kann man sie üblicherweise weglassen.

/comments/P2.html stellt die zweite Seite einer Übersicht dar. Die Pfadkomponente P (für Page) wird gefolgt von einer Seitennummer.

Auch bei diesem Schema lassen sich die Pfadkomponenten miteinander kombinieren, um besondere Ansichten zu erhalten:

/comments/garvin/last_5 stellt die Übersicht der Kommentare der letzten fünf Tage des Benutzers garvin dar.

/comments/from_2007-01-01/to_2007-12-31/ stellt die Übersicht aller Kommentare vom 01.01. bis zu 31.12.2007 dar.

/comments/comments_and_trackbacks/from_2007-01-01/P2/ stellt die zweite Übersichtsseite aller Kommentare und Trackbacks seit dem 01.01.2007 dar.

3.5 - Seite nicht gefunden (404)

Seite nicht gefunden (404)

Immer wenn man eine URL des Serendipity-Blogs aufruft, die zu einer ungültigen Seite führt, wird statt einer Fehlerseite die Standard-Übersicht angezeigt. Selbstverständlich wird für Suchroboter und Ähnliches dennoch eine HTTP-404-Statusmeldung ausgegeben, um die Ungültigkeit der angeforderten Seite herauszustellen.

Die Standard-Übersicht wird dargestellt, damit Besucher des Blogs dazu motiviert werden, sich über die restlichen Inhalte des Blogs schnell einen Überblick zu verschaffen, anstatt nur eine leere, nichtssagende Fehlermeldung zu sehen.

Neuere Versionen zeigen zusätzlich aber wieder eine Fehlermeldung, da das fehlerlose Fallback sich als zu verwirend für manche User herausstellte. Damit die Meldung in bestimmten Situationen unterdrückt wird, muss in den Template Dateien auf die {if $view == '404'} Variable zurückgegriffen werden, um eine bestimmte Reaktion auszulösen.

 

3.6 - RSS-Feeds

RSS-Feeds

Streng genommen zählen RSS-Feeds nicht zum eigentlichen Frontend, da ein RSS-Feed außerhalb von Serendipity angezeigt wird. Ein RSS-Feed enthält, wie eingangs im Zusammenhang der Terminologie erwähnt (siehe Seite RSS), einige XML-Elemente, die die aktuellsten Einträge des Blogs mit einigen zusätzlichen Metadaten aufführen. RSS steht für Really Simple Syndication.

Folgende RSS-Versionen sind verfügbar:

/feeds/index.rss2 Aktuelle Beiträge in RSS-Version 2.0. Diese Version wird aufgrund ihrer Vollständigheit bevorzugt, da sie die meisten Möglichkeiten bietet und den höchsten Verbreitungsgrad besitzt.

/feeds/index.rss Aktuelle Beiträge in RSS-Version 0.91 (veraltet).

/feeds/index.rss1 Aktuelle Beiträge in RSS-Version 1.0 (veraltet).

/feeds/atom03.xml Aktuelle Beiträge in Atom-Version 0.3 (veraltet).

/feeds/atom10.xml Aktuelle Beiträge in Atom-Version 1.0. Diese Version liegt in ihren Möglichkeiten ungefähr gleichauf mit RSS 2.0 und wird in Zukunft sicherlich noch an Bedeutung gewinnen, da dieser Atom-Standard vom W3C-Gremium [*] Das W3C-Gremium entscheidet in einer großen Arbeitsgruppe über die Standardisierung von Internet-Formaten wie HTML und andere. empfohlen wird. Das hat sich aber bis zum laufenden Jahr noch nicht wirklich bewahrheitet [*] https://meiert.com/de/publications/translations/intertwingly.net/rss-2.0-and-atom-1.0/.

/feeds/index.opml Aktuelle Beiträge im OPML-Format. Dies beinhaltet nur Artikelübersichten und dient mehr der Übersicht als einem tatsächlichen Feed-Format.

Es gilt zu beachten, dass die URLs für die RSS-Feeds von Besuchern immer aufgerufen werden können, selbst wenn Sie das Seitenleisten-Plugin nicht aktiviert haben. Daher ist es auch grundsätzlich irrelevant, welche Versionen Sie persönlich bevorzugen, da Ihre Besucher die notwendige Version eigenständig beziehen können.

Neben den Einträgen können auch aktuelle Kommentare und Trackbacks zu einem Blog bezogen werden:

/feeds/comments.rss2 Kommentare im RSS-2.0-Format.

/feeds/trackbacks.rss2 Trackbacks im RSS-2.0-Format.

/feeds/comments_and_trackbacks.rss2 Kommentare und Trackbacks im RSS-2.0-Format.

Diese Feeds können auch durch Änderung der Dateiendung in einem anderen Format ausgegeben werden: .rss2 für RSS 2.0, .rss1 für RSS 1.0, .rss für RSS 0.91 und .atom für Atom 1.0.

Um nur einen Feed von einer speziellen Kategorie oder einem Autor abzurufen, sind folgende URLs möglich (jeweils auch mit oben genannten Dateiendungen):

/feeds/categories/Kategoriename.rss2 Aktuelle Beiträge der Kategorie Kategoriename.

/feeds/authors/Autorname.rss2 Aktuelle Beiträge des Autors Autorname.

RSS-Feeds liegen von Serendipity in mehreren Versionen vor und werden allesamt auf die Ausgabedatei rss.php umgeleitet. Diese Datei stellt den Feed dar und kann einige optionale Parameter aufnehmen. Ein kleiner Teil dieser Optionen wird durch Einstellungen des Seitenleisten-Plugins "Blog abonnieren" beeinflusst, die ab Seite syndication aufgeführt sind.

Die rss.php Datei kann somit auch direkt von einem Browser aufgerufen werden, da sie übersichtlichere Paramter ermöglicht. Diese Parameter können jeweils miteinander verbunden werden. Um mehrere Parameter anzugeben, ruft man die URL mittels rss.php?parameter1=wert1&parameter2=parameter3&... auf. Bitte beachten Sie, dass Sie aus technischen Gründen die folgenden Parameter ausschließlich beim Aufruf der rss.php-Datei anhängen können, nicht aber beim Aufruf der sprechenden Feed-URLs wie /feeds/index.rss2.

rss.php?version=version wobei version folgende Werte haben kann: 0.91, 1.0, 2.0, atom0.3, atom1.0 und opml1.0. Individuelle Feeds, die von Ihnen erstellt werden können (siehe Seite customfeeds), werden ebenfalls einer eindeutigen Version zugeteilt und können durch diesen Parameter später aufgerufen werden. Ohne Angabe der Version wird das RSS-2.0-Format gewählt.

rss.php?category=1 wobei die Zahl der jeweiligen Nummer einer Kategorie des Blogs entspricht. Um einen RSS-Feed für Einträge mehrerer Kategorien zu bündeln, können die Kategorie-Nummern mittels Semikolon (;) hintereinander aufgeführt werden. Ohne Angabe werden Artikel aller Kategorien dargestellt.

rss.php?viewAuthor=1 wobei die Zahl der jeweiligen Nummer eines Autors des Blogs entspricht. Um einen RSS-Feed für Einträge mehrerer Autoren zu bündeln, können die Autor-Nummern mittels Semikolon (;) hintereinander aufgeführt werden. Ohne Angabe werden Artikel aller Autoren dargestellt.

rss.php?type=typ Anstelle von typ kann comments (Kommentare), content (Beiträge), trackbacks (Trackbacks) und comments_and_trackbacks (Kommentare und Trackbacks) eingetragen werden, was dafür sorgt, dass nur Artikel des gewünschten Typs im RSS-Feed eingebunden werden. Ohne Angabe werden nur Artikel angezeigt.

rss.php?nocache=true Diese Variable sorgt dafür, dass Conditional GET für RSS-Feeds deaktiviert wird (siehe Caching von RSS-Feeds auf Seite Caching von RSS-Feeds).

rss.php?cid=Artikel-ID Falls als Inhaltstyp eines RSS-Feeds ein anderer als content gewählt wurde, kann man die Anzeige der Kommentare und Trackbacks auf einen bestimmten Artikel einschränken. Die Nummer (ID) dieses Artikels wird als Wert des Parameters angegeben. Solche RSS-Feeds werden oft verwendet, damit Besucher die Kommentare zu einem Artikel verfolgen können, an dessen Diskussion sie teilgenommen haben.

rss.php?all=true Falls dieser Parameter gesetzt wird, enthält der RSS-Feed nicht nur die letzten 15 aktuellen Artikel, sondern alle verfügbaren. Der RSS-Feed kann dadurch sehr groß werden, daher ist die Verwendung dieses Parameters nur für den Export der Artikeldatenbank gedacht.

rss.php?fullFeed=true Falls dieser Parameter gesetzt ist, enthält der RSS-Feed den vollständigen Artikel (anstelle nur des Teasers). Diese Option muss vom Betreiber des Blogs jedoch gezielt aktiviert werden, da durch die Aktivierung der "Diebstahl" von Artikeln stark vereinfacht wird (siehe Seite syndication-fullfeed).

rss.php?forceLocal=true Das Plugin "Blog abonnieren" unterstützt die Möglichkeit, dass RSS-Feeds zu einem Dienstleister namens Feedburner weitergeleitet werden. In so einem Fall würde der Aufruf der eigenen RSS-URLs immer direkt zu der Seite des Dienstleisters führen und man hätte keine Möglichkeit mehr, den echten RSS-Feed aufzurufen. Sollte diese Umleitungsoption also gesetzt sein, können Sie mittels des Parameters forceLocal dafür sorgen, dass Sie nicht umgeleitet werden. Der Parameter zeigt jedoch nur Wirkung, wenn Sie als Redakteur am Blog angemeldet sind.

 

3.6.1 - Caching von RSS-Feeds

Caching von RSS-Feeds

Da RSS-Feeds von den RSS-Readern Ihrer Besucher relativ häufig aufgerufen werden (meist halbstündlich), ist es wichtig, dort so wenig wie möglich Redundanz für die Datenübertragung zu verursachen.

Bei 200 Abonnenten Ihres RSS-Feeds und einem größeren Artikelbestand kommt es durchaus vor, dass die XML-Datei des Feeds 100kb und größer ist. Bei dieser Benutzerzahl würden Sie pro Stunde 4MB (das sind im Monat gut 3GB!) an Daten übertragen. Wenn Sie durchschnittlich nur alle drei Tage einen neuen Artikel schreiben, wäre ein Großteil dieser Datenmenge unnötig übertragen worden.

Um dieses Problem zu lösen, wurde im HTTP-Standard ein Caching [*] Ein Cache ist ein Zwischenspeicher oder Puffer, der einmal erstellte Daten erneut ausgeben kann, anstatt sie neu zusammenzustellen. -Mechanismus vorgesehen. Dabei überträgt der RSS-Reader (und auch jeder Webbrowser) den Zeitpunkt des letzten Abrufs an den Server. Der Server vergleicht, ob sich seit diesem Zeitpunkt etwas am RSS-Feed geändert hat. Falls das nicht der Fall ist, wird eine leere Antwort an die Software zurückgeschickt, und es werden keine Daten übertragen.

Wenn sich etwas verändert hat, kann der Server lediglich die seit dem letzten Aufruf erneuerten Daten übermitteln und spart so nochmals an Übertragungszeit (und damit auch Server-Performance).

Dieser Vorgang wird als Conditional GET bezeichnet und ist in Form einer verbindlichen RFC 2616 (Richtlinie des HTT-Protokolls) festgehalten. Dennoch gibt es leider einige Clients, die das Caching nicht vollständig implementieren und mit derartig ausgelieferten RSS-Feeds Probleme haben. Solche Probleme können sich darin äußern, dass ein RSS-Reader ständig bereits bekannte Einträge des RSS-Feeds als neu ansieht oder womöglich gar keine neuen Artikel empfangen kann.

Um bei solchen kaputten Clients dennoch einen Serendipity-Feed korrekt abrufen zu können, ist der eingangs erwähnte Parameter nocache=true an den Aufruf der rss.php-URL anzuhängen.

Im Zusammenhang mit dem globalen Caching unterstützt Serendipity die Auslieferung von Artikeln ab einem bestimmten Datum. Da üblicherweise RSS-Feeds nur die letzten 15 Artikel [*] Siehe: Konfiguration: Design und Optionen: Anzahl der Artikel auf der Startseite, enthalten und man möglicherweise einmal für eine Weile den RSS-Feed nicht empfangen kann [*] Vielleicht hat man ja einmal sein Notebook oder die UMTS-Karte im Urlaub vergessen ... ;-), könnte es also passieren, dass man Artikel schlichtweg verpasst. Bei der Übermittlung einer Angabe des zuletzt gesehenen Artikels wird dies vermieden, und Serendipity würde in so einem Fall auch alle weiteren Artikel über dem 15. ausliefern.

Diese Auslegung des RFC-Standards verursacht in manchen RSS-Readern und vor allem Aggregatoren wie der Software Planet jedoch Probleme. In der Konfiguration des Blogs wird daher die Option angeboten, das strikte RFC2616 zu veranlassen (siehe Seite rfc2616). Zwei weitere Variablen (siehe Seite Caching-Variablen) dienen darüber hinaus der Feineinstellung von Caching-Inhalten.

Sobald diese Option aktiviert ist, wird Serendipity, wie andere Software auch, stur nur die letzten 15 Artikel ausliefern und somit das Feature der Urlaubsschaltung deaktivieren.

3.7 - Suche

Suche

Der Permalink für die Suche folgt dem Schema http://www.example.com/serendipity/search/Suchbegriff1/Suchbegriff2. Mehrere Begriffe werden dabei durch den Pfadtrenner / getrennt. Die Pfadkomponente P für die gewünschte Seite der Übersicht kann angehängt werden.

Volltextsuche wird bei Einsatz der MySQL-Datenbank mit dem "Fulltext"-Suchmechanismus ausgeführt. Dieser Mechanismus funktioniert nur bei MySQL-Versionen ab 4.0, und es ist erforderlich, dass ein FULLTEXT INDEX auf die Spalten title,body,extended der Tabelle serendipity_entries erstellt wurde. Dies erledigt die Serendipity-Installationsroutine üblicherweise. Bei manchen Providern (besonders beim Einsatz von Confixx) kann es jedoch passieren, dass Ihr Datenbankbenutzer keine INDEX-Rechte hat. In einem solchen Fall würden Sie bei der Suche nach Artikeln eine Fehlermeldung erhalten, die Sie dazu anleitet, den Index korrekt zu erstellen. Notfalls müssen Sie Ihren Provider bitten, Ihnen die notwendigen Rechte dafür einzuräumen.

MySQL unterstützt die Suche mittels BOOLEAN-Operatoren. Hier können Sie Wörter mit einem Anführungszeichen einschließen und ein + oder - vorstellen, um Teilwörter ein- oder auszuschließen. Auch kann das Zeichen * als Platzhalter für beliebige Zeichen verwendet werden. Details zu der MySQL-Volltextsuche schlagen Sie bitte in der MySQL-Dokumentation nach.

Zwei wichtige Besonderheiten beim Einsatz von MySQL gibt es noch zu beachten: Die Suche funktioniert nur, wenn die Suchergebnisse nicht einen Großteil aller vorhandenen Einträge ausgeben. Damit verhindert MySQL, dass eine nutzlose Suche alle Einträge zurückliefern würde. Gerade wenn Sie also erst zwei Artikel geschrieben haben und nach einem Begriff suchen, wundern Sie sich nicht, wenn Sie keine Ergebnisse erhalten. Sobald die Datenbank eine vernünftige Datenbasis enthält, wird die Suche wie gewünscht funktionieren.

Die zweite Besonderheit ist, dass MySQL nur Wörter mit standardmäßig mindestens drei Buchstaben findet und dass ein Wort kein Stoppwort wie und enthält. Eine Suche nach DB würde also nicht funktionieren. Dies wird durch die MySQL-Option ft_max_word_len (siehe MySQL-Dokumentation) definiert.

Beim Einsatz von SQLite oder PostgreSQL wird die Suche mittels einer Zeichenteilkette durchgeführt. Eine Suche nach risch würde also sowohl Artikel mit dem Wort Frischfleisch als auch betrügerisch finden. Diese ist zwar langsamer als die erwähnten MySQL-Möglichkeiten, benötigt dafür aber weniger Rahmenbedingungen, um zu funktionieren.

Kapitel 4: Backend / Administrationsoberfläche /

Nachdem Sie nun über die möglichen Ansichten von Serendipity im Besucherbereich Bescheid wissen, ist es an der Zeit, das Backend zu erkunden.

 

4.1 - Login

Login

Das Backend ist geschützt durch einen Login. Sie erreichen die Administrationsoberfläche unter


    http://www.example.com/serendipity/serendipity_admin.php

Auf dieser Seite müssen Sie Ihren Benutzernamen und das Passwort eintragen, das Sie bei der Installation angegeben haben. Standardmäßig ist der Benutzername John Doe und das Passwort john.

Unterhalb der beiden Eingabefelder befindet sich die Auswahlbox Daten speichern. Wenn Sie diese Option aktivieren, wird auf Ihrem Computer ein Cookie gespeichert, der Sie eindeutig im System identifiziert, und Sie können sich in Zukunft ohne Passwort einloggen.

Dieser Cookie enthält eine eindeutige Kennzeichnung sowie ein Ablaufdatum, Ihr Benutzername oder Passwort wird nicht gespeichert. Wenn das Ablaufdatum überschritten ist, wird der alte Cookie automatisch als ungültig markiert und ein neuer Cookie ausgestellt. Diese Funktionsweise stellt sicher, dass ein Angreifer aus einem gestohlenen Cookie keine Nutzerinformationen extrahieren und mit einem veralteten Cookie keinen Login ausführen kann.

login_dm_de.png
Abbildung 4.1: Login-Bildschirm im Backend Dark Mode

Trotz dieser Sicherungsmethoden sollten Sie die Option Daten speichern niemals auf einem Computer aktivieren, zu dem auch weniger vertrauenswürdige Benutzer Zugriff haben. Trotz aller Bequemlichkeit ist diese Option vor allem in Internetcafes tabu.

Sofern Ihr Server die HTTPS-Verschlüsselung unterstützt, sollten Sie die Administrationsoberfläche immer über https://... aufrufen. Erst diese Verschlüsselung schützt sie vor dem Ablauschen Ihrer Logindaten während der Übermittlung.

4.1.1 - Mögliche Fehler beim Login

Mögliche Fehler beim Login

Das häufigste Problem beim Login ist ein PHP-Server, bei dem die Sessions nicht, wie im Kapitel Voraussetzungen auf Seite Voraussetzungen beschrieben, korrekt eingerichtet sind. Dies kann sich darin äußern, dass Sie sich nach jedem Klick neu einloggen müssen.

Ältere Serendipity-Versionen verursachten zudem ähnliche Probleme, wenn die URL http://localhost/... lautete. Viele Browser akzeptieren keine Login-Cookies, wenn der Servername nicht mindestens zwei Punkte enthält. Auch sollten Sie generell prüfen, ob Ihr Browser möglicherweise Cookies ablehnt oder eine Antiviren-Software auf Ihrem Rechner Session-Cookies blockiert.

Auch Umlaute im Passwort oder Benutzernamen können dazu führen, dass Ihr Passwort nicht korrekt abgeglichen werden kann. In manchen Fällen kann es helfen, wenn Sie in Ihrem Browser alle Cookies löschen, die in Verbindung mit Ihrer Blog-URL gespeichert sind, dann den Browser neu starten und sich so neu einloggen können.

4.1.2 - Passwort vergessen

Passwort vergessen

Serendipity speichert Ihr Passwort aus Sicherheitsgründen nicht im Klartext in der Datenbank ab. Sollte man daher sein Passwort vergessen haben, kann man dieses nicht einfach irgendwo nachschlagen, sondern muss das Passwort neu setzen.

Bis Serendipity 1.5 verwendete Serendipity MD5-Hashes um Ihre Passwörter für Logins in der Datenbanktabelle serendipity_authors zu sichern.

Da aber die Mechanismen MD5-Hashes mit Rainbow-Tabellen zu knacken, oder sogar "Wörterbuch Hash" -lookups immer mehr zunahmen und immer populärer wurden, vollzog Serendipity schon im Jahre 2009 den Schritt, den Serendipity-Hashing-Mechanismus auf einen gesalzenen und sicheren SHA1-Hash zu erhöhen. Damit wurde es aber unmöglich per phpMyAdmin mal eben so ein Passwort in der Datenbanktabelle zu ersetzen.

Später, in 2018/Q1, wurde der Hashing-Mechanismus noch einmal erhöht und benutzt jetzt BCRYPT.

Serendipity, mit seinem Anspruch höchster Rückwärts-Kompatibilität, nutzte für diese Modernisierung einen "weichen" Upgrade Ansatz. Neue Serendipity Versionen akzeptierten die alten MD5 Logins einmalig, um dann das vom Benutzer angegebene Passwort zu verwenden, die sicheren neuen Hashes zu erstellen und in der Datenbank speichern.

Ein Beispiel wie man seit den 2009er Versionen von Serendipity ein Passwort neu setzen kann, liefert folgendes kleines Script, mit dem sich problemlos arbeiten lässt, wenn man seinen Usernamen noch weiß, oder durch einen Blick in die serendipity_authors-Tabelle herausgefunden hat. Speichern Sie es im Serendipity root Verzeichnis als fixpass.php ab und rufen Sie es in ihrem Browser auf. Nach erfolgreichem Update löschen Sie es anschließend wieder von dort.


    <?php
$username = "YOURusername";
$password = "YOURpassword";
include 'serendipity_config.inc.php';
echo serendipity_db_query("UPDATE {$serendipity['dbPrefix']}authors SET password = '" . serendipity_hash($password) . "', hashtype=2 WHERE username = '" . serendipity_db_escape_string($username) . "'");
echo "Password changed.";

Das Script enthält zwei Variablen: $username und $password. Diese Variablen müssen Sie auf Ihre Gegebenheiten anpassen. Tragen Sie in die Variable $password das neue Passwort (in Anführungszeichen gesetzt) ein. In die Variable $username müssen Sie logischerweise den Usernamen des Autors setzen.

Versionen vor Serendipity Styx 2.5-beta1 müssen hashtype=1 verwenden!

4.1.3 - XSRF/CSRF-Schutz

XSRF/CSRF-Schutz

Bei allen Zugriffen auf das Backend führt Serendipity eine Prüfung durch, ob Sie berechtigt sind, die gewünschte Aktion (das Löschen von Beiträgen etc.) durchzuführen.

Eine im Internet derzeit verbreitete Angriffsart ist die sogenannte Cross-Site Request Forgery (XSRF, CSRF). Dabei enthält eine fremde Seite ein verstecktes JavaScript. Wenn der Angreifer die Adresse Ihres Blogs kennt und Sie die fremde Webseite besuchen, könnte diese über das versteckte JavaScript administrative Aktionen in Ihrem Blog in Ihrem Namen ausführen. Sozusagen eine bösartige, von Ihnen ungewollte Fernsteuerung Ihres Blogs. Denn für Ihr Blog erscheint es so, als würden Sie selbst die Aktion bewusst ausführen.

Um derartigem Missbrauch vorzubeugen, setzt Serendipity zweierlei Methoden ein.

Die wirkungsvollste ist, dass jede Aktion im Backend durch einen sogenannten Token geschützt wird. Dieser Token wird anhand Ihrer Logindaten automatisch und zufallsgeneriert erstellt, daher kann er von böswilligen Angreifern nicht ohne Eindringen in Ihren eigenen Rechner (oder die Netzwerkverbindung) ausgelesen werden. Wenn eine fremde Webseite also Ihren Browser fernsteuern möchte, scheitert die Aktion daran, dass der gültige Token fehlt.

Eine derartige Aktion quittiert Serendipity dann mit der Meldung:


    Ihr Browser hat keinen gültigen HTTP-Referrer übermittelt. Dies kann
    entweder daher kommen, dass Ihr Browser/Proxy nicht korrekt konfiguriert
    ist, oder dass Sie Opfer einer Cross Site Request Forgery (XSRF)
    waren, mit der man Sie zu ungewollten Änderungen zwingen wollte. Die
    angeforderte Aktion konnte daher nicht durchgeführt werden.

Wenn Sie diese Meldung erhalten, obwohl Sie eine Aktion veranlasst haben, kann dies darauf hinweisen, dass Ihr Browser den Token nicht korrekt übermittelt hat. Ein Token wird in einem Browser-Cookie gespeichert, daher muss Ihr Browser Cookies zwingend akzeptieren. Weiterhin kann die Fehlermeldung erscheinen, wenn Sie Ihr Backend nicht unter der URL aufrufen, unter der Sie sich eingeloggt haben [*] Beispielsweise auch, wenn Sie sich über https://www.example.com/serendipity/ eingeloggt haben, aber über http://example.com/serendipity/ eine Aktion aufrufen.. Im Zweifelsfall kann es helfen, wenn Sie sich komplett aus dem Backend ausloggen, im Browser sämtliche Cookies des Blogs löschen und sich neu einloggen.

Die zweite Sicherheitsmethode besteht darin, dass Serendipity den HTTP-Referrer prüft. Bei jedem Aufruf, den Ihr Browser tätigt, wird an den Server die URL der vorausgehenden Webseite übermittelt und in einer sogenannten HTTP-Kopfzeile namens Referrer (Verweis) gespeichert. Anhand dieses Wertes kann Serendipity erkennen, ob Sie vor dem Aufruf Ihres Serendipity-Backends möglicherweise eine fremde Webseite besucht haben. Im regulären Betrieb von Serendipity kann es niemals vorkommen, dass Sie eine administrative Aktion ausführen, ohne dass der HTTP-Referrer Ihrer Blog-URL entspricht.

Wenn dieser Fall eintritt, gibt Serendipity ebenfalls die oben genannte Fehlermeldung aus. Da die HTTP-Referrer-Kopfzeile jedoch laut Spezifikation kein Pflichtfeld ist und auch gewisse private Informationen über Sie ausliefert, können Sie in vielen Browsern die Übermittlung dieser Variable unterdrücken. Dann kann keine Webseite herausfinden, welche Seite Sie vorher besucht haben - und auch Serendipity kann dies nicht mehr erkennen.

Am einfachsten ist es, dass Sie in Ihrem Browser die Übermittlung des HTTP-Referrers für Ihr Serendipity-Blog aktivieren. Wenn dies nicht möglich ist, können Sie Serendipity nach wie vor betreiben, werden jedoch die oben genannte Warnmeldung sehen.

Im Gegensatz zur Sicherheitsprüfung durch den Token wird die Prüfung des HTTP-Referrers jedoch standardmäßig die auszuführende Aktion nicht abbrechen, damit der Betrieb von Serendipity auch mit derartig konfigurierten Browsern funktionieren kann. Wenn Sie in Ihrem Browser die Übermittlung des HTTP-Referrers zulassen, können Sie als weitere Sicherheitsoption die globale Variable $serendipity['referrerXSRF'] aktivieren - in so einem Fall wird eine Aktion im Backend abgebrochen, wenn der HTTP-Referrer fehlt (siehe Seite referrerXSRF).

4.2 - Übersicht

Übersicht

Nach dem Login befinden Sie sich auf der Übersichtsseite bzw Startseite des Backends.

backend_startpage_dm_de.png
Abbildung 4.2: Verwaltungsoberfläche

Die Top-Leiste dient als Navigationsleiste für die Backend Startseite, die Eigenen Einstellungen, den Weg zum Frontend und für das Logout.

Im Menü der linken Seite sehen Sie als Administrator alle Untermenüpunkte, mit denen sich Serendipity bedienen lässt.

Der eigentliche Inhaltsbereich gab früher nur einen kleinen Begrüßungstext aus, und der Fußbereich der Seite stellt im Fußbereich die aktuelle Versionsnummer von Serendipity und PHP dar. Mit Serendipity 2.0+ wurde in diesen inhaltslosen Raum das "Dashboard" mit zwei fest- und vorkonfigurierten Dashboard-Containern, welche da sind: letzte Artikel-Kommentare und letzte Artikel-Entwürfe, im Serendipity Kern eingebaut.

Serendipity Styx sieht vor, diesen oft unnützen Balast auf ein reduziertes und vernüftiges Maß an Information über die User-Einstellungen der "Eigenen Einstellungen" wieder zu reduzieren. Die eigentliche Administration von Kommentaren bzw. Entwurfs-Einträgen erfolgt sowieso immer besser über deren vorgesehene Hauptseiten!

Das Seitenleisten-Menü selbst ist in mehrere Hauptblöcke unterteilt und hat sich in den verschiedenen Versionen der Serendipity Historie immer wieder auch leicht verändert (¹):

  • Inhalt bietet Möglichkeiten zum Bearbeiten von Artikeln und aller Arten von inhaltsbezogenen Funktionen/Plugins.
  • Mediathek gibt Zugriff auf die hochgeladenen Dateien und überhaupt auf die Administration der Mediathek.
  • Aktivität verwaltet alle Arten von Backend Aktivitäten, Kommentare und eingesetzte Plugins des Blogs, soweit sie nicht streng artikelbezogen, eine solche Aktivität oder sonstiges sind.
  • Einstellungen umfasst alle Funktionen, die den Zugriff auf das Blog und dessen Daten regulieren. Darunter fallen auch das Template/Theme und die Plugin Administration.
  • Benutzerverwaltung umfasst alle Funktionen, die den Zugriff auf Benutzer und das Gruppenmanagement beinhalten. Darunter fallen auch zusätzliche Benutzerprofile durch erweiternde Plugins. (¹)

¹) Dies ist ein Beispiel einer Veränderung über die Zeit, da die Benutzerverwaltung als eigenständiger Block aus der Einstellungen Block ab Styx 3.6 aus Gründen der Übersichtlichkeit wieder ausgeliedert wurde.

Einige Plugins geben an einigen Stellen des Seitenleisten-Menüs ihre eigenen Menüpunkte aus. Diese zusätzlichen Menüpunkte führen dann zur jeweiligen Funktionalität eines Plugins.

 

4.3 - Eigene Einstellungen

Eigene Einstellungen

Die Eigenen Einstellungen ermöglichen den Zugriff auf alle Einstellungen, die lediglich für den aktuellen Redakteur von Belang sind. Jeder Benutzer kann somit seine eigenen, individuellen Einstellungen in diesem Bereich vornehmen.

Der Bereich ist zweigeteilt in Persönliche Einstellungen und Voreinstellungen für neue Einträge. Im ersten Abschnitt legen Sie, wie bei der Installation bereits geschehen, den Benutzernamen, das Passwort und den Loginnamen fest.

Damit später Ihr Passwort nur von autorisierten Personen geändert werden kann, muss für dessen Änderung auch stets das alte Passwort angegeben werden. Wenn Sie das Passwort nicht ändern wollen, tragen Sie daher in dem Eingabefeld Passwort nichts ein. Beachten Sie bitte, dass einige Browser (zB. Firefox und besonders gerne Chrome) die sogenannte "Automatische Vervollständigung für Passwort-Felder" unterstützen und möglicherweise daher automatisch das zuletzt verwendete Passwort im dafür vorgesehenen Feld eintragen. Sollten Sie also bereits vorausgefüllte Sternchen in dem Eingabefeld vorfinden, hat diese Ihr Browser eingefügt und nicht Serendipity. Würden Sie nun direkt auf den Button Speichern am Ende der Seite klicken, bekämen Sie eine Fehlermeldung von Serendipity, da Ihr Browser das Feld Altes Passwort nicht eingetragen hat.

Nach diesen Login-relevanten Feldern folgen weitere Einstellungen:

E-Mail Hier tragen Sie Ihre E-Mail-Adresse ein. Diese wird von Serendipity an mehreren Stellen verwendet, um Sie über neu eingegangene Kommentare zu benachrichtigen oder auch Administratoren des Blogs über den Zugang neuer Benutzer zu informieren. Geben Sie die Adresse hier im Format name@example.com an, also ohne zusätzliche Formatierungen wie "Ihr Name" <name@example.com>.

Sprache Die Übersetzung der Systemtexte des Backends und des Frontends richtet sich nach der Auswahl in diesem Feld. Beachten Sie dabei, dass die Sprache erst nach dem nächsten Klick innerhalb des Backends gewechselt wird und nur für Sie gilt. Die globale Sprache stellen Sie in der Konfiguration ein (siehe Abschnitt Konfiguration, Seite Konfiguration). Die hier eingestellte Sprache gibt lediglich an, welche Übersetzung von Serendipity aktiviert wird. Sie sind durch die Festlegung dieser Option nicht daran gebunden, Ihre Artikel auch in der gesetzten Sprache zu verfassen.

personal_preferences_dm_de.png
Abbildung 4.3: Eigene Einstellungen

Graphischen WYSIWYG-Editor verwenden Serendipity liefert einen WYSIWYG-Editor (siehe Abschnitt WYSIWYG auf Seite WYSIWYG). Dieser Editor stellt beim Erstellen eines Artikels für Ihr Blog erweiterte, einfache Textformatierungen zur Verfügung. So können Sie einen Blog-Artikel wie in einem Office-Programm erstellen und formatieren. Wenn Sie dies wünschen, aktivieren Sie Graphischen WYSIWYG-Editor verwenden. Mit Serendipity Styx 3.0 wird im Kern nur noch die sparsame basic Variante ausgeliefert. Sollten Sie mehr Komfort benötigen (zB. Einrückungen im der Quelltextansicht und vieles Weitere) sollten sie zusätzlich das empfehlenswerte CKEditor Plus event Plugin installieren. Damit werden auch Updates des Rich-Text-Editors zeitnah zur Verfügung gestellt. Gut gepflegte WYSIWYG-Editoren funktionieren heutzutage so gut, dass sie uneingeschränkt zu empfehlen sind. Frühere Editoren fügten gerade bei intensiven Kopier-/Einfüge-Operationen häufig problematische HTML-Konstrukte ein, die die Formatierung in Ihrem Blog durcheinanderbringen könnten. Beispielsweise sind dies falsche Zeilenabstände, überflüssige Absätze bis hin zur falschen Platzierung von eingebundenen Bildern. Dies Verhalten hat sich über die Jahre aber extrem verbessert. Trotzdem bergen Kopieraktionen, wie zB. aus MS Word in den WYSIWYG-Editor, ein gewisses Risiko, da damit auch HTML Auszeichnungen völlig verschiedener Art eingeschleppt werden. Dies gilt aber für alle Editoren die nicht nur reinen Text bearbeiten. Leider wird Sie nur die Erfahrung lehren, wie ein WYSIWYG-Editor einzusetzen ist, ohne Fehler zu produzieren. Generell gilt die Empfehlung, Textformatierungen nur mit Bedacht einzusetzen und ab und an den WYSIWYG-Editor in den Quelltext-Modus zu versetzen, um zu prüfen, ob sich dort überflüssige, leere HTML-Konstrukte befinden. Einige Plugins für Serendipity bieten zudem externe WYSIWYG-Editoren wie TinyMCE [*] https://www.tiny.cloud/, CKEditor Plus[*] https://ckeditor.com/, zur Einbindung an, die in ihrem Funktionsumfang durchaus variieren. Auch diese externen Editoren werden nur dann verwendet, wenn die Option Graphischen WYSIWYG-Editor verwenden aktiviert ist. Aufgrund der weiteren Entwicklung von graphischen Editoren in den folgenden Jahren bis Heute, kann aber nur das CKEditor Plus-Plugin und vielleicht noch das TinyMCE-Plugin empfohlen werden. Grundsätzlich gilt, das CKEditor Plus-Plugin arbeitet sofort, da es alle Komponenten mitbringt und automatisch installiert. TinyMCE dagegen ist nur eine Hülle zu Selbstinstallation.

WYSIWYG-Buttonleiste [ Deprecated ] Mit Serendipity 2.0+ können Sie hier die vorkonfigurierten Toolbar-Buttonleisten auswählen. Es sind die sogenannten Basic- (Reduziert-), Standard- und Full- (Vollständige-)Toolbars und auch noch die Standard-Alternative mit unterschiedlicher Menge und Anordnungen der Buttons erhältlich. Wählen Sie einfach diejenige aus, die am besten zu Ihnen und ihren Einträgen passt. Desweiteren kann man dieselben auch noch erzwingen, wenn man sich einmal eine eigene Toolbar im eigenen Theme erstellt hatte und nun wieder zu den Originalen Einstellungen zurück will. Lesen Sie dazu über die individuelle Konfiguration (mittels einer individuellen JavaScript-Konfigurationsdatei in templates/XXX/admin/ckeditor_custom_config.js) in CKEditor (siehe Seite WYSIWYG ). Serendipity Styx 3.0 wird sich von diesem Konzept aus den verschiedensten Gründen komplett verabschieden. Es wird nur noch ein vorkompiliertes und auf dem Basic Editor basierendes Binary für einen Rich Text (WYSIWYG) Editor geben, der im templates Ordner für alle Zugriffe angesiedelt ist. Es ist nicht vorgesehen, und auch nicht ratsam, dieses einfachen Editor mit eigenen Uservarianten zu überschreiben und, sollte dies doch geschehen, muss im Falle von Core Updates selber Sorge dafür getragen werden. Dafür ist es jetzt auch möglich HTML Kommentare mit einem Editor im Kommentarfenster zu erlauben. Im Ganzen stellte sich aber das Vorgehen des 2.x Zweiges als zu kompliziert und an- und schwerfällig heraus, da für das Serendipity System wesentliche Änderungen, Vorhaltungen und Vorkehrungen getroffen werden mussten, zB. Gegenmaßnahmen von Skript-Injektions, die kein normaler User jemals durchblicken konnte.
Der neue Rich Text Editor wird also nur ein einfaches Paket notwendiger Möglichkeiten mitbringen. Sollten Sie im Alltag oder durch besondere Plugin-Kombinationen mehr benötigen, müssen Sie auf die empfohlene Event Plugin Variante CKEditor Plus ausweichen.

Bei Kommentaren benachrichtigen? Sobald ein Benutzer zu einem Ihrer Blog-Artikel einen neuen Kommentar verfasst, können Sie per E-Mail benachrichtigt werden.

Bei Trackbacks benachrichtigen? Sobald ein Benutzer zu einem Ihrer Blog-Artikel ein neues Trackback geschickt hat, können Sie per E-Mail benachrichtigt werden.

Standard Dashboard widgets anzeigen? Diese Option wurde mit Serendipity Styx notwendig, da diese mit Serendipity 2.0 eingeführten Schnellwerkzeugblöcke für Kommentar und Entwurfs-Einträge nicht Jedermanns Sache sind, oft unnötig viel Platz und Ressourcen verschwenden und die eigentlichen Arbeiten viel effektiver auf ihren eigentlich vorgesehenen Seiten erledigt werden können. Ein "Nein" reduziert das Ganze auf eine Zeile und die reine Information, so dass Platz für weitere nützliche Dashboard Blöcke zB. über Plugins bleibt. Diese Option und auch die Standard Dashboard widgets wurden mit Serendipity Styx 3.3.0 entfernt.

Vereinfachte Filter Vielen Benutzer benötigen die erweiterten Funktionen die Serendipity bereitstellt nicht und sind sogar eventuell überfordert, wenn zu viele Möglichkeiten ihren Schreibfluss behindern. Wenn aktiviert, werden Suchformulare und Filteroptionen auf die notwendigen Optionen reduziert. Ist diese Option deaktiviert, werden alle erweiterten Filteroptionen, z.b. beim Eintrags-Editor oder der Mediathek, angezeigt.

Popups für das Backend verwenden? Sollen im Backend Popup-Fenster eingesetzt werden? Wenn deaktiviert (Standard), werden eingebettete modale Dialoge, z.b. für die Mediathek und die Kategorieauswahl verwendet.

Popups in speziellen Bereichen erzwingen Wenn Popups generell deaktiviert wurden, kann an speziellen Stellen der Einsatz von Popups überschrieben werden. Dies gilt für echte Fenster-Popups (für "images" über das Eintragsformular und "comments" in der Kommentarliste über Antwort), bzw. genau umgekehrt im Verhalten, für modale "Popups" (categories, tags, links) als (Standard) Einstellung im Eintragsformular (bzw Administrations Startseite), indem sie hier für die beiden Ersteren geschrieben und für die drei Letzteren eben genau nicht aufgeführt werden. Die vollständige (kommaseparierte) Liste lautet: images, comments, categories, tags, links. Ebenso vice versa: Wenn Popups generell erlaubt sind, kann ein Eintrag diesen hier speziell zurücksetzen, zb. für "tags". Für Serendipity Styx lautet die Standard Empfehlung: categories, tags, links.

Symbolleiste für das Mediathek-Popup anzeigen? Vielen Benutzer benötigen die erweiterten Funktionen der "Bildbearbeitung" die Serendipity bereitstellt nicht, wenn sie aus einem Artikel das Mediathek-Popup öffnen um ein Bild eizufügen, und sind sogar eventuell überfordert, wenn zu viele Möglichkeiten ihre Konzentration und ihren Schreibfluss behindern. Sollten Sie jedoch diese Funktionen jedoch auch gerne innerhalb des Popup-Fensters ausführen wollen, müssen Sie diese Option: Symbolleiste für das Mediathek-Popup anzeigen aktivieren.

Der zweite Abschnitt der Eigenen Einstellungen stellt Voreinstellungen für neue Einträge ein:

Kommentare und Trackbacks benötigen Moderation Diese Option stellt ein, ob bei einem neu erstellten Artikel standardmäßig Kommentare und Trackbacks moderiert werden sollen. Im Falle einer Moderation muss ein neuer Kommentar oder ein Trackback erst freigeschaltet werden, bevor er für Besucher angezeigt wird.

Kommentare für diesen Eintrag zulassen. Mittels dieser Option wird festgelegt, ob Kommentare zu einem Artikel erlaubt sind.

Neuer Eintrag Wenn Sie einen neuen Artikel erstellen, kann dieser entweder als Veröffentlichung oder Entwurf gespeichert werden. Nur veröffentlichte Artikel werden den Besuchern angezeigt, ein Entwurf ist nur für Redakteure sichtbar.

Kategorie Um einen Artikel auf eine bestimmte Kategorie vorselektiert einzustellen, nutzen Sie diese Auswahloption.

Automatische Speicherung aktivieren Wenn aktiviert, wird der Text von Blog-Einträgen regelmäßig automatisch im Session-Speicher des Browsers gesichert. Falls der Browser während des Schreibens abstürzt wird beim nächsten Erzeugen eines Eintrags der verlorene Text wiederhergestellt. Per default steht diese Option sicherheitshalber auf "Nein", da es mitunter zu unverhofften Wiederbegegnungen mit Texten kommen kann, die man, wenn man dieses Verhalten nicht explizit ausgewählt hat und somit erinnert, für einen Systemfehler oder bereits gesicherten Eintrag halten kann.

Um die vorgenommenen Änderungen an den Einstellungen zu speichern, müssen Sie auf den Button Speichern am Ende der Seite klicken.

 

4.4 - Inhalt

Inhalt

Der Bereich Inhalt enthält sämtliche Menüpunkte, die der Erstellung und dem Bearbeiten von Blog-Artikeln dienen.

4.4.1 - Neuer Eintrag

Neuer Eintrag

Der Menüpunkt Neuer Eintrag stellt nach der Einrichtung des Blogs üblicherweise die meistgenutzte Funktionalität zur Verfügung: die einfache Erstellung eines Artikels. Dahinter verbirgt sich die Eintrags-Maske, die in einem übersichtlich strukturierten Bereich alle Optionen für einen Artikel darstellt.

new_entry_dm_de.png
Abbildung 4.4: Inhalt: Neuer Eintrag

Die jeweiligen Eingabefelder sind:

Titel In diesem Feld wird der Titel des Artikels eingetragen, so wie er auch im Frontend dargestellt werden soll. Im Titel können Sonderzeichen und Umlaute enthalten sein, jedoch können keine HTML-Tags dort eingetragen werden.

Artikelmodus Im Auswahlfeld rechts neben dem Titel kann bestimmt werden, ob der Artikel beim Speichern veröffentlicht werden soll oder nur als Entwurf abgelegt wird. Die Standardeinstellung richtet sich nach der Festlegung in den Eigenen Einstellungen. Je nach den Rechten Ihres Redakteurs kann es sein, dass dieses Auswahlfeld nur die Option Entwurf zulässt. In diesem Fall muss ein Chefredakteur Ihre Artikel veröffentlichen.

Datum Das Datum wird in dem Feld unterhalb des Artikeltitels festgelegt. Es muss dabei in einem maschinenlesbaren Format gespeichert werden: Jahr-Monat-Tag Stunde:Minute. Um die aktuelle Uhrzeit Ihres Rechners dort einzufügen, konnten Sie früher auf ein Uhr-Symbol rechts neben dem Eingabefeld klicken. Diese Uhr ist mit derselben Funktion in die erste Zeile fes Formulares gerückt. Heutzutage mit HTML5 gibt es im Datumfeld das date-local Attribut, das einen kleinen Kalender aufklappt und das ebensolche Funktion und mehr bietet. Leider handhaben die Browser das selbst heute noch unterschiedlich. Zur Not müssen Sie halt selber Hand anlegen. Dies ist in solchen Fällen hilfreich, wenn Sie einen Artikel überarbeiten (oder einen Artikel im Entwurfsmodus veröffentlichen wollen) und dabei die Uhrzeit aktualisieren möchten. datetime_local_chrome.png   Abbildung 4.4-ts: Einträge: Datumfeld (Beispiel für Chrome Browser) Mozilla Firefox und andere zeigen hier - je nach Version - etwas Ähnliches, oder einen String wie 2018-01-10T16:18. Lassen Sie sich durch das T (für time) nicht verunsichern. Sie müssen sich nicht darum kümmern, auch wenn sie den Timestamp selbst ändern. Wenn Sie hier einen zukünftigen Zeitpunkt eintragen, wird Serendipity einen derart veröffentlichten Eintrag in der Übersicht nicht anzeigen. Sobald jedoch der eingetragene Zeitpunkt erreicht wurde, wird der Artikel ohne Ihr eigenes Zutun automatisch dargestellt. Somit können Sie dieses Eingabefeld auch für eine zeitgesteuerte Veröffentlichung nutzen.

Kategorie Während eine einzelne, bereits gesetzte Kategorie durch einen Klick auf ihren angezeigten Namen für den Artikel festgelegt wird, können Sie einem Artikel zusätzlich mittels Klick auf den Kategorien-Titel oder das Hamburger-Symbol in der ersten Zeile auch mehrere Kategorien zuweisen. Nach einem Klick auf das Symbol werden Sie - je nach persönlicher Einstellung in den Eigenen Einstellungen - auf ein Popup oder den Kategorienblock des Eintragsformulares weitergeleitet. Dort sehen Sie eine Liste aller erstellten Kategorien in hierarchischer Gliederung. Mit gedrückter (Strg/Apfel)-Taste und einem linken Mausklick können Sie dabei mehrere Kategorien markieren und mit einem zweiten Klick eine Markierung auch wieder aufheben. Alle ausgewählten Kategorien werden dabei vom Browser markiert dargestellt.

Eintrag Den größten Platz dieser Seite nimmt das Feld für den eigentlichen Artikeltext ein. Je nachdem, ob Sie den WYSIWYG-Editor in den Eigenen Einstellungen aktiviert haben, sieht dies etwas unterschiedlich aus. Eintrag mit deaktiviertem WYSIWYG-Editor Bei deaktiviertem WYSIWYG-Editor (siehe obige Abbildung 4.4) sehen Sie ein Feld, in das direkt HTML-Code eingetragen wird. Wenn Sie einfachen, unformatierten Text schreiben wollen, können Sie diesen hier einfach einfügen. In HTML werden Umbrüche nicht durch einen üblichen Zeilenumbruch mittels Eingabe-Taste angegeben, sondern mittels des HTML-Tags <br />. Damit Sie aber Artikel trotz HTML-Tags bequem verfassen können, ist standardmäßig bei der Serendipity-Installation ein Plugin namens Textformatierung: NL2BR aktiviert worden. Dieses kümmert sich beim Speichern Ihrer Artikel darum, automatisch den gewohnten Zeilenumbruch in einen HTML-Zeilenumbruch umzuwandeln. Rechts oberhalb des Eingabebereichs für den Eintrag befindet sich eine kleine Symbolleiste, auf der mehrere Buttons verteilt sind. Damit können Sie einige Formatierungsoptionen auf Ihren Artikeltext anwenden. Geben Sie dazu einen kleinen Text in Eintrag ein und markieren Sie ein Wort daraus per Maus. noBR Aktiviert einen Block indem das nl2br Plugin nicht aktiv sein darf. Dies ist ratsam, wenn einzelne Textpassagen im Textfeld bereits HTML-formatiert sind. I, B, U I formatiert ein Wort kursiv, ein Klick auf B formatiert es fett, und ein Klick auf U unterstreicht das gewählte Wort. Zitat markiert einen größeren gewählten Textbereich als Zitat markieren. Gerade bei Blog-Einträgen ist die Form des Zitierens sehr gebräuchlich. [group: external files] Die letzten vier Buttons dienen der Einbindung von externen Dateien und benötigen daher keine vorherige Textauswahl. Ein Klick auf einen der Buttons img, Mediathek oder URL wird an der Stelle, wo sich der Cursor im Text befindet, das gewünschte Objekt einbinden. img bindet ein externes Bild ein. Bei einem Klick auf den Button werden Sie über ein Popup-Fenster aufgefordert, die URL des Bildes einzugeben. Tragen sie die URL vollständig mit http://-Präfix ein. Nach dem Klick auf OK wird automatisch der benötigte HTML-Code in Ihren Eintrag eingefügt - so können Sie sich auch direkt merken, wie ein Bild bei Gelegenheit auch manuell eingefügt werden kann. [Gallery] öffnet beim Anklicken ein neues Popup-Fenster, in dem eine Vorschau-Bilderserie als einfache Bildergalerie aus der eigenen Mediathek eingefügt werden kann. Eine detaillierte Beschreibung dieses Popups folgt auf Seite Mediathek-Popup. [Media] öffnet beim Anklicken ein neues Popup-Fenster, in dem ein Bild aus der eigenen Mediathek eingefügt werden kann. Eine detaillierte Beschreibung dieses Popups folgt auf Seite Mediathek-Popup. URL öffnet ein Eingabefenster, um einen Hyperlink zu einer Webseite einzutragen. Geben Sie dort die URL wieder vollständig mit http://-Präfix ein. Nach dem Klick auf OK können Sie zusätzlich die Beschreibung des Hyperlinks eingeben, wie er später dem Benutzer dargestellt wird. Sie können hierbei auch vor dem Klick auf den Button URL einen Text in Ihrem Artikel mit der Maus markieren, dieser wird dann beim Einfügen eines Hyperlinks automatisch als Beschreibungstext eingesetzt. Zuletzt fordert Sie der Einfügedialog noch auf, einen title/tooltip zu vergeben. Der Text, den Sie dort eintragen, wird später beim Darüberfahren mit der Maus für den Besucher in einem Info-Popup angezeigt. Eintrag mit aktiviertem WYSIWYG-Editor toolbar_standard_ckecore_dm_de.png Abbildung 4.4a: Inhalt: Neuer Eintrag (aktivierter Kern WYSIWYG-Editor - Basic Toolbar im Dark Mode, Spracheinstellung: EN) Alternativ hier noch einmal die Standard Toolbar des CKEditor Plus Plugins in der CKEditor Version 4.8 aus dem Dezember 2017. Das CKEditor Plus Plugin bietet 3 Auswahlmöglichkeiten für die Toolbar: Standard, Full oder Basic. toolbar_basic_ckeplus.png Abbildung 4.4d: Inhalt: Neuer Eintrag (aktivierter CKEditor Plus WYSIWYG-Editor - Basic Toolbar). Letztere ist auf einen Einzeiler reduziert und bietet nur die nötigsten Formatierungen. Als Beispiel sind hier aber der optionale Codesnippet-Button, der stets aktive Mediaembed-Button, das optionale Embed-Snippet-Button und 3 Serendipity Plugins (Linktrimmer, Amazonchooser, Emoticonchooser) aktiv gesetzt. Wie man sieht, sind solche gehookten Serendipity Plugin Buttons, wie auch die beiden für die Bedienung der Mediathek, in Farbe, im Gegensatz zum sonst üblich gehaltenen Schwarz. Auf die Abbildung der vollständigen Toolbar wurde hier verzichtet, da solche Vollversionen in der Praxis wohl kaum genutzt werden. Sie beanspruchen einfach zuviel Platz und man wird diese zusätzlichen Funktionen auf einem Blogsystem auch nicht wirklich gebrauchen können. toolbar_standard_ckeplus.png Abbildung 4.4e: Inhalt: Neuer Eintrag (aktivierter CKEditor Plus WYSIWYG-Editor - Standard Toolbar) Ist in Ihren Eigenen Einstellungen der WYSIWYG-Editor aktiviert, sehen Sie einen Eingabebereich, der aus Microsoft Word oder OpenOffice bekannte Bedienelemente abbildet. Die meisten der Symbole werden auf einen markierten Text im Artikel angewendet. Wenn Sie mit der Maus darüberfahren und etwas warten, wird ein Info-Popup die jeweilige Beschreibung des Icons anzeigen. Dabei wird ab Serendipity 2.0+ der im Kern bereits implementierte CKEditor verwendet. Die Default Buttons des Editors sind in in schwarzer Schrift/Icon auf grauem Grund gehalten, die per Serendipity Plugin dazu installierten Plugins haben ein farbiges Icon. Dazu gehört per Default auch das Mediathek- und das Galerie-Icon. Weitere Hinweise zur individuellen Anpassung befinden sich in den Dateien templates/_assets/ckebasic/config.js und templates/_assets/ckebasic_plugin.js. Im Einzelnen bedeuten die Buttons und Gruppen Folgendes (Auswahl): font formatiert einen ausgewählten Textbereich mit der im Auswahlfeld gewählten Schriftart. size formatiert einen ausgewählten Textbereich mit der im Auswahlfeld gewählten Schriftgröße. format stellt ein, welchem Texttyp ein ausgewählter Textbereich entspricht. Überschriften werden später auch als HTML-Überschriften gesetzt. B formatiert einen ausgewählten Textbereich fett. I formatiert einen ausgewählten Textbereich kursiv. U formatiert einen ausgewählten Textbereich unterstrichen. S formatiert einen ausgewählten Textbereich durchgestrichen. Die beiden x-Zeichen mit hoch- und tiefgestellter 2 können einen ausgewählten Textbereich entsprechend positionieren group: clipboard Im letzten Bereich der oberen Symbolleiste befinden sich die Funktionen für die Zwischenablage. Ein markierter Text kann hiermit in die Zwischenablage kopiert oder ausgeschnitten und von dort in den Text eingefügt werden. Die beiden Pfeile zurück und vor können eine vorherige Aktion rückgängig machen oder wiederherstellen. group: textflow Der erste Bereich der unteren Symbolzeile ermöglicht es, den Textfluss eines gewählten Absatzes zu verändern: linksbündig, zentriert, rechtsbündig und Blocksatz. Beachten Sie beim Blocksatz, dass dies aufgrund fehlender Browser-Unterstützung für Wortumbrüche selten empfehlenswert ist. group: textdirection Die beiden Symbole mit dem Paragraphen-Symbol können einen markierten Textbereich in eine bestimmte Textrichtung (links nach rechts oder rechts nach links) fließen lassen. Dies ist hauptsächlich für arabische Sprachen interessant. group: lists Im nächsten Bereich befinden sich Icons, die den jeweiligen markierten Text in eine nummerierte oder geordnete Listenaufzählung formatieren können. Die Buttons rechts daneben dienen zur Einrückung eines Textes. group: colors Die Textfarbe und Hintergrundfarbe eines markierten Textbereichs stellen Sie über die beiden Icons mit dem T-Symbol bzw. dem Farbeimer ein. Bei einem Klick darauf öffnet sich ein Farbauswahlfenster. - Der Button mit dem horizontalen Strich fügt ein Trennzeichen in den Text an der aktuellen Cursorposition ein. chain Der Button mit dem Kettensymbol fügt an der aktuellen Cursorposition im Text einen Hyperlink ein. Bei einem Klick auf den Button werden Sie in einem Popup-Fenster aufgefordert, das Linkziel und die Linkbeschreibung einzutragen. Etwaiger vormarkierter Text wird hierbei als Beschreibung vorausgewählt. picture frame [Intern] Das Symbol mit dem Bilderrahmen ermöglicht das Einfügen eines externen Bildes. Bei einem Klick hierauf öffnet sich ein Dialog, in dem Sie die URL eines Bildes sowie weitere Optionen eintragen können. Diese sind Alternate text (für eine manuell vergebene Bildbeschreibung), Alignment (für die Ausrichtung des Bildes), Border thickness (für die Randstärke eines Bildes), Horizontal spacing (für den horizontalen Abstand in Pixel des Bildes zum Text), Vertical spacing (für den vertikalen Abstand in Pixel des Bildes zum Text). Bei einem Klick auf OK wird das gewählte Bild in den Text eingefügt. Achtung: Aus Gründen der Einbindung und der Besonderheiten der Serendipity Medien Datenbank und der HTML-CSS-Auszeichnung ihrer Inhalte, wurde dieser CKEditor eigene Button per CSS deaktiviert, so dass er zwar für den Editor weiterhin wirksam, aber weder anklickbar noch sichtbar ist. [Media] Die komfortablere Art, ein Bild einzufügen, führt über die integrierte Mediathek von Serendipity. Das Symbol hierfür befindet sich rechts neben dem Bilderrahmen und soll eine stilisierte Bilderübersicht in einer Liste darstellen. Ein Klick hierauf öffnet das Mediathek-Popup, das auf Seite Mediathek-Popup eingehender erklärt wird. [Gallery] Mit Styx haben Sie die Möglichkeit an dieser Stelle eine einfache Bildergalerie einzufügen. Dieser Button öffnet beim Anklicken ein neues Popup-Fenster, in dem eine Vorschau-Bilderserie als einfache Bildergalerie aus der eigenen Mediathek eingefügt werden kann. Eine detaillierte Beschreibung dieses Popups folgt auf Seite Mediathek-Popup. table Über den Button Tabelle lässt sich eine HTML-Tabelle einbinden. Dies ist leider relativ komplex gelöst und erfordert viel Fingerspitzengefühl bei der Einrichtung einer Tabelle, da Spalten- und Zeilenanzahl vorher festgelegt werden müssen. Eine Tabelle kann nach ihrem Einfügen im Eingabetext selber gefüllt werden. <> Der letzte Button <> hat eine ganz besondere Bedeutung: Er schaltet vom normalen WYSIWYG-Modus in den HTML-Modus um. Sobald der HTML-Modus aktiviert ist, kann man sozusagen einen Blick hinter die Kulissen werfen und prüfen, wie der Editor die eigenen Eingaben in HTML umsetzt. Wenn man sich mit HTML etwas auskennt, kann man hier möglicherweise manuell einige Fehler beheben, die der WYSIWYG-Editor bei einigen Operationen einfügen könnte. Während der HTML-Modus aktiv ist, sind alle weiteren Optionen des WYSIWYG-Editors so lange ausgeblendet, bis der HTML-Modus durch erneuten Klick wieder deaktiviert wird. min/max Der Button rechts neben dem HTML-Modus ermöglicht das Öffnen eines Popup-Fensters, in dem man den Text des Artikels in einem größeren Bereich bearbeiten kann. Diese Ansicht muss man mit erneutem Klick auf den Button wieder schließen, um die Änderungen in das Serendipity-Fenster zu übernehmen. ? öffnet eine kleine Informationsseite von CKEditor. Im Textbereich können Sie wie gewohnt Text eintippen. Wenn Sie die (Enter)-Taste drücken, wird ein neuer Absatz begonnen, wenn Sie (Shift)+(Enter) drücken, wird ein einfacher Zeilenumbruch eingefügt. Eintrags Markup Fehler Beachten Sie, dass Sie bei aktiviertem WYSIWYG-Editor das Textformatierungs-Plugin Textformatierung: NL2BR (siehe Seite nl2br) besser deinstallieren sollten. Andernfalls könnte es zu doppelten Zeilenumbrüchen kommen oder bei Tabellen zu überflüssigen Zeilenumbrüchen vor/nach der Tabelle. Alternativ können Sie das NL2BR-Plugin auch gezielt nur für einzelne Artikel deaktivieren, indem Sie es mithilfe des Plugins Erweiterte Eigenschaften von Artikeln (siehe Seite entryproperties) in den Erweiterten Optionen des jeweiligen Artikels aus der Liste auswählen. Ab Serendipity 2.0 sorgt das mitgelieferte entryproperties-Plugin aber automatisch dafür, dass die Nutzung des WYSIYWG Editors selbstständig erkannt und die Nutzung von NL2BR per Eintrag ausgeschaltet wird.

Kommentar-Optionen Unterhalb des Eingabebereichs für den Text, im Klappmenu: Eintrags Metadaten, gibt es ein Kommentar Optionsfeld mit zwei Optionen, mit denen man steuern kann, ob Kommentare zu diesem Artikel zugelassen sind, und wenn ja, ob diese Kommentare nach dem Abschicken durch den Besucher erst von einem Redakteur freigeschaltet werden müssen. Die Voreinstellung dieser beiden Optionen wird in den Eigenen Einstellungen vorgenommen.

Aktionen Rechts oben in der ersten Zeile des Eintragsformulares befinden sich außerdem zwei Aktions-Buttons. Der Button Vorschau lädt die Seite neu und zeigt oberhalb der Erfassungsmaske eine Voransicht des gerade erstellten Artikels an. Die Voransicht ist nur eine vage Annäherung, wie der Artikel später im Blog aussehen wird, kann aber dennoch als grobe Richtlinie dienen, um dessen Formatierung zu prüfen. Mittels des Buttons Speichern wird ein Artikel im System gespeichert. Sollte vor einem Klick auf diesen Button der Computer abstürzen, sind die Einträge unwiderruflich verloren. Daher empfiehlt es sich sehr, einen längeren Artikel erst in den Entwurfs-Modus zu setzen und zwischendurch häufiger zu speichern, oder alternativ den Text in einem normalen Schreibprogramm vorzutippen. Was beim Speichern eines Artikels geschieht, erfahren Sie auf Seite Eintrag-speichern.

Erweiterter Eintrag Der Artikeltext, den Sie im Bereich Eintrag verfasst haben, wird später im Frontend vollständig auf den Übersichtsseiten angezeigt. Dieser Text stellt somit einen Teaser [*] Ein Teaser ist ein Kurztext, der dem Leser einen Vorgeschmack auf die ausführliche Fassung geben soll. dar. Der vollständige Text eines Artikels kann im Bereich Erweiterter Eintrag verfasst werden. Der hier eingegebene Text wird später im Frontend erst auf der Detailseite eines Artikels angezeigt und ist auch standardmäßig nicht im RSS-Feed enthalten. Bei der Ansicht der Detailseite eines Artikels wird der normale Artikeltext zusätzlich angezeigt. Verfassen Sie daher Ihre Beiträge so, dass die beiden Textbereiche ineinander übergehen. Der Bereich Erweiterter Eintrag ist identisch formatiert wie der normale Eintrag. Sie können diesen erweiterten Bereich mittels des Ausklappmenus ein- und ausklappen.

Erweiterte Optionen Unterhalb des erweiterten Eintrags und des Ausklappmenus Eintrags Metadaten, befindet sich ein Block mit dem Titel Erweiterte Optionen. Hier werden diverse Optionen von eingebundenen Plugins angezeigt, und auch eigene Plugins können an dieser Stelle eingebunden werden. Die angebotenen Optionen an dieser Stelle können Sie der jeweiligen Erklärung der Plugins in den folgenden Kapiteln entnehmen.

Mediathek-Popup Das Mediathek-Popup ist ein Fenster, das sich an mehreren Stellen von Serendipity öffnen lässt, vor allem beim Einfügen von Bildern bei der Artikel-Erstellung. ml_popup_dm_de.png Abbildung 4.5a: Mediathek-Popup zum Einfügen einer Datei im Dark Mode Das Popup-Fenster enthält eine vereinfachte Ansicht der Mediathek Serendipitys. Abhängig von der Option Symbolleiste für das Mediathek-Popup anzeigen in den Eigenen Einstellungen wird Ihnen jedoch zusätzliche Funktionalität angeboten, die im Kapitel Mediathek auf Seite Mediathek detailliert beschrieben wird. Solange das Popup-Fenster geöffnet ist, sollten Sie im Ursprungsfenster von Serendipity keine Änderungen vornehmen. Sollten Sie dies tun, kann das Popup-Fenster ein ausgewähltes Bild nicht mehr an den ursprünglich vorgesehenen Platz stellen. Standardmäßig sehen Sie die Bilder aller Verzeichnisse in chronologischer Reihenfolge, also unabhängig von einem gewählten Verzeichnis. In dieser Dateiübersicht sehen Sie jeweils Vorschaubilder für alle hochgeladenen Dateien. Auch können dort Nicht-Bilddateien (Word-Dokumente, PDF-Dateien, ZIP-Archive ...) angezeigt werden. Wenn Sie eine bestimmte Datei suchen, werden Ihnen die Filteroptionen der Mediathek sehr hilfreich sein. Diese sind ebenfalls detailliert im Kapitel Mediathek ab Seite Mediathek Filter beschrieben. Da wir das Popup-Fenster nur aufgerufen haben, um ein Bild auszuwählen, dient die Dateiübersicht der einfachen Auswahl jenes Bildes. Ein Klick auf eines der Vorschaubilder führt zu einer Folgeseite, in der Sie bestimmen können, wie das Bild eingefügt werden soll. Abhängig vom Kontext, in dem Sie das Popup-Fenster aufgerufen haben, kann es sein, dass die Folgeseite nicht erscheint, sondern das Objekt direkt in die aufrufende Seite eingetragen wird. Auch wenn Sie eine einfache Datei anstelle eines Bildes einfügen wollen, wird die Folgeseite nicht erscheinen, sondern die Datei wird direkt in den Artikel eingebunden. ml_popup2_dm_de.png Abbildung 4.5b: Mediathek-Popup zur Formatierung einer eingefügten Datei im Dark Mode Auf dieser Folgeseite sehen Sie im oberen Bereich, für welche Datei Sie sich entschieden haben. Die kleine Vorschaugrafik wird ebenfalls dargestellt. Es folgen nun einige Bereiche, in denen Sie das Layout des eingefügten Bildes bestimmen: Bei dem Bereich der Bildgröße legen Sie fest, ob nur das kleine Vorschaubild eingefügt werden soll oder das Bild in seiner Originalgröße. Über die Bildausrichtung bestimmen Sie, wie das Bild im Text des Artikels arrangiert wird. Dabei wird das Layout durch eine kleine Grafik visuell dargestellt. Die erste Option richtet ein Bild oberhalb eines Absatzes, also für sich allein stehend aus. Die zweite Möglichkeit bettet ein Bild so ein, dass es vom folgenden Text linksbündig umflossen wird. Die letzte Möglichkeit bindet ein Bild so ein, dass es innerhalb des Textes rechtsbündig dargestellt wird. Im Abschnitt Bild als Link können Sie zusätzlich einen Link auf ein Bild legen. Bei einem Klick auf ein Bild wird dann die eingetragene URL aufgerufen. Standardmäßig wird der Dateipfad zu der großen Version eines Bildes in dem Eingabefeld Das Bild soll hierhin linken: eingefügt. Über die Option Ziel dieses Links kann man einstellen, wie dieser Link im Browser geöffnet wird. Popup-Fenster (JavaScript) wird das Bild in einem Fenster öffnen, das sich der Bildgröße genau anpasst. Eigenständige Seite wird eine spezielle Frontend-Seite öffnen, die ausschließlich Ihr Bild im umgebenden Layout und mögliche Meta-Daten eines Bildes anzeigt. Die Option Popup-Fenster (target=_blank) nutzt eine einfachere Version eines Popup-Fensters, die auch ohne aktiviertes JavaScript des Besuchers ein neues Fenster öffnen kann. Zuletzt haben Sie noch die Möglichkeit, zu einem Bild eine Bildunterschrift in das Feld Kommentar hinzuzufügen. Dieses wird dann im Artikel später dem Bild zugehörig angezeigt. ml_galpopup_dm_de.png Abbildung 4.6: Mediathek-Popup zum Einfügen einer Galerie im Dark Mode Die hier gezeigte Abbildung 4.6 zeigt das Popup-Fenster das mit dem Styx Galerie Button geöffnet wird. Wie Sie sehen, sieht das ähnlich zum normalen Fenster aus, mit dem Unterschied, dass sie verkleinerte Bild-Vorschauen eines Ordners, je nach Einstellung und Auswahl der Anzeige von Dateien aus Unterverzeichnissen in der Sortierung, angezeigt bekommen. Die strikte Sortierung auf eine Ordnerebene ist hier anzuraten (und ist deshalb im Galeriefall strikte und gesetzte Voraussetzung), da aus Performancegründen nur eine bestimmte Anzahl von 48 Elementen angezeigt werden. Die Auszeichnung der Seite und Markup Elemente für Bildkommentare etc. bleibt wie gehabt. Sie können allerdings keine bestehenden Galerie-Selektierungen erweitern, so dass Sie im Falle des Falles im Quellcode die alte Selektierung löschen müssen, um dann eine neue mit der gewünschten Vervollständigung vornehmen zu können. Wie Sie sich vorstellen können, ist es also ratsam eine saubere Ordner- und Dateistruktur in der Mediathek angelegt zu haben. Serendipity Styx hat besonderen Wert darauf gelegt, die Möglichkeiten einen tiefen Dateistruktur und ihrer Medien-Administrations-Aufgaben, wie Verschieben, Umbenennen, Ändern in Einträgen, etc zu verbessern, auszuarbeiten und vorhandene Bugs auszumerzen. Wenn Sie abschließend auf Fertig klicken, wird das Bild, bzw. die Galerie an die aufrufende Stelle (textarea) von Serendipity zurückgeliefert und mittels HTML-Code eingebunden. Dort können Sie es gegebenenfalls auch noch innerhalb des Eintrages verschieben und anpassen. Sämtliche Einfügeoperationen des Mediathek-Popups benötigen JavaScript. Sollte das Einfügen bei Ihnen also fehlschlagen, prüfen Sie, ob Sie JavaScript im Browser korrekt aktiviert haben. Auch mögliche Popup-Blocker oder die Firefox-Erweiterung NoScript könnten den erfolgreichen Aufruf der Mediathek verhindern. Wenn Sie gerne ein Bild einfügen möchten, das Sie noch nicht in die Mediathek hochgeladen haben, dann müssen Sie dafür nicht extra auf den Menüpunkt Medien hinzufügen im Hauptmenü klicken. Stattdessen ermöglicht es das Mediathek-Popup in der Bildübersicht, direkt, mittels Klick auf den Button Medien hinzufügen eine neue Datei von Ihrem Computer hochzuladen. Diese Datei wird dann direkt für die Folgeseite zur Bestimmung der Einfügungsoptionen übernommen, was Ihnen einiges an Klickarbeit abnimmt. Details zum Hochladen von Dateien finden Sie im Kapitel Medien hinzufuegen auf Seite Medien hinzufügen, die auch für das Mediathek-Popup gelten.

Speichern eines Eintrags Je nachdem, ob Sie nun ein einzelnes Bild mit fest definiertem Format als einfaches <img...> in ihren Blogeintrag einfügen wollen, oder ob dies über das fortschrittlichere <picture...> container HTML Format erfolgen soll, müssen Sie nun selbst im Speichern Dialog entscheiden. Im Kapitel Mediathek auf Seite 4.5 - Mediathek, lernen Sie was Letzteres vom Ersten unterscheidet. Um es kurz zu machen, schicken Sie mit dem container Format mehrere Bilder zur Auswahl an denjenigen Browser, der es später auf Besucherseite laden und darstellen soll. Dieser wird immer das kleinste Format wählen, das die <source... srcset...> Zeilen bereitstellen und damit die Ladezeit ihres Blogs erheblich beschleunigen. Je weniger groß (MB / KB) eine zu ladende Datei ist, desto schneller wird sie natürlich auch übertragen. Ihre Besucher (ebenso wie Suchmaschinen) werden es Ihnen danken! ml_popup2_end.png Abbildung 4.5c: Mediathek-Popup zum Einfügen von Bildern als <img...> oder über <picture...> container HTML tags Woher kommen aber nun diese unterschiedlichen Größen und Formate? Sie werden beim upload der Bilder automatisch vom System erzeugt und in relativen Unterverzeichnissen ".v/" des aktuellen Bildes in der Mediathek "versteckt" gespeichert. Dies sind WebP (webp) Format Dateien und die brandneuen AV Image File (avif) Dateien, wenn Sie Letztere über die Image Konfiguration selbst zur Nutzung erlaubt haben. Solche Dateien sind also nur als "interne Erweiterung" der Mediathek zu verstehen. Sie selbst, als Backenduser, greifen nur indirekt auf diese zu, obwohl sie, soweit vorhanden, überall wo ein Bild der Mediathek [*] Auch die Template(s) Vorschau Bilder gehorchen bereits diesem neuen Prinzip. im Backend angezeigt wird, wie auch der Mediathek selbst, auch schon eifrig benutzt werden. Dies geschieht über die genannten <picture...> container, so dass auch das Backend schon sehr eindeutig vom schnelleren Ladeverhalten durch dieses HTML Container Format profitiert. Das Kapitel Mediathek auf Seite 4.5 - Mediathek und folgend, bringt Sie diesbezüglich auf den letzten Stand. Wenn Sie einen Beitrag speichern, wird Serendipity in einem eigenen Bereich einige Aktionen durchführen. Zuerst wird der Artikel vollständig in der Datenbank gespeichert. Danach können etwaige Plugins ausgeführt werden, die individuelle Funktionen auf den Artikel anwenden und ihn umwandeln. So könnte ein Plugin zB. den neuen Artikel an Google und andere Suchmaschinen wie Technorati übermitteln, oder der Text könnte auf korrekte Syntax geprüft werden. Sollte der Artikel als Veröffentlichung gespeichert sein, wird in einem weiteren Schritt der Artikeltext automatisch nach allen enthaltenen Hyperlinks durchsucht. Jeder gefundene Hyperlink wird daraufhin von Serendipity aufgerufen und geprüft, ob ein Trackback (siehe Seite trackback) an diese Adresse gesendet werden soll. Für jede gefundene URL wird auf dem Bildschirm eine Nachricht ausgegeben, ob ein Trackback an diese URL geschickt werden konnte. Auch etwaige Fehlermeldungen werden Ihnen beim Speichern an dieser Stelle angezeigt. Der Prozess endet mit einer Meldung Serendipitys, dass der Eintrag gespeichert wurde. Falls der Artikel direkt veröffentlicht wurde, können Sie die URL mit diesem Artikel direkt anklicken. Wenn Serendipity lediglich den Entwurf eines Beitrags gespeichert hat, wird keine Trackback-Analyse durchgeführt, und Serendipity meldet nach dem Speichern, dass der Entwurf eines Artikels gespeichert wurde. Sollten Sie nach dem Speichern eines Artikels keine solche Meldung erhalten, bedeutet dies möglicherweise, dass der Webserver Fehler verursacht hat. In diesem Fall sollten Sie die Fehler-Logfiles des Servers prüfen, da hierfür meist Netzwerk-Verbindungsprobleme oder Firewalls zuständig sind. In so einem Fall müssten Sie möglicherweise die Trackback-Funktionalität deaktivieren (siehe Seite commentphp). Um vorab Probleme mit verlorenen Artikeltexten zu vermeiden, können Sie die auf Seite automatic-backup beschriebenen Maßnahmen einsetzen. Nach dem Speichern landen Sie erneut auf der Seite zur Bearbeitung des Artikels, um gegebenenfalls Änderungen vorzunehmen und den Artikel erneut zu speichern.

4.4.2 - Einträge bearbeiten

Einträge bearbeiten

Um einen geschriebenen Beitrag später zu bearbeiten, benutzen Sie den Hauptmenüpunkt Einträge bearbeiten. Bei einem Klick auf diesen Menüpunkt wird eine blätterbare Liste aller geschriebenen Einträge dargestellt.

Bei einem Klick auf den jeweiligen Eintrag gelangt man auf die Seite, in der man einen Neuen Eintrag erstellen kann. Die Felder sind dabei vorausgefüllt mit den jeweiligen Daten des gewählten Eintrags, und ein Speichern erstellt keinen neuen Eintrag, sondern überarbeitet den bestehenden.

Die Liste der Einträge stellt in der ersten Zeile den Titel des Artikels dar. Sollte der Artikel noch nicht veröffentlicht worden sein, wird das Wort Entwurf im Listeneintrag grau hinterlegt auf der rechten Seite eingeblendet. Wenn Sie mit der Maus über einen Beitragstitel fahren, wird ein Info-Popup angezeigt, in dem die Artikel-ID angezeigt wird. Diese ID kann an einigen Stellen des Serendipity-Backends eingetragen werden, unter anderem über den Stift-Button unter dem Titel dieser Seitenliste zum schnellen Bearbeiten einer bekannten Artikelnummer oder zur Erstellung eines neuen Artikels.

Unterhalb des Titels wird die Erstellungszeit des Artikels angezeigt. Wenn rechts daneben das Uhrsymbol steht, heißt dies, dass der Artikel seit seiner Erstellung mindestens einmal überarbeitet wurde. Wenn Sie mit der Maus über dieses Icon fahren (oder klicken), zeigt ein Info-Popup den Zeitpunkt der letzten Aktualisierung an.

entries_dm_de.png
Abbildung 4.7: Inhalt: Einträge bearbeiten im Dark Mode

In dieser Zeile unterhalb des Titels wird auch angegeben, wer der Eigentümer eines Artikels ist. Bei Bearbeitung eines Artikels durch andere Redakteure ändert sich der Eigentümer nicht. Sollte ein Artikel in einer oder mehreren Kategorien zugeordnet sein, werden alle Kategorienamen nach dem Autornamen aufgelistet. Ein Klick auf den Kategorienamen ruft die Frontend-Ansicht der jeweiligen Kategorie auf.

Innerhalb der Box, die den Artikel anzeigt, werden auf der rechten Seite drei Buttons dargestellt. Der erste Button mit einer Lupe-Symbol zeigt bei einem Klick abhängig vom Veröffentlichungsstatus entweder die Ansicht oder Vorschau des Artikels im Frontend in einem neuen Fenster an. Der zweite Button stellt mit dem Stift-Symbol die Möglichkeit bereit, einen Artikel zu bearbeiten (wie bei einem Klick auf den Artikeltitel). Der Button mit Mülleimer-Symbol löscht einen Artikel unwiderruflich. Zur Sicherheit werden Sie beim Löschen gefragt, ob Sie die Aktion wirklich ausführen wollen.

Als Letztes wird eine Auswahlbox neben dem Löschen-Button angezeigt. Hier können Sie mehrere Artikel auswählen, um anschließend am Seitenende durch den Klick auf Markierte Einträge löschen diese Artikel gesammelt zu löschen.

Der Button Auswahl umkehren wird jeden gewählten Artikel deselektieren und jeden deselektierten Artikel wieder auswählen. Wenn Sie also einmal alle Artikel bis auf einen löschen wollen, markieren Sie nur diesen einen Artikel, klicken auf Auswahl umkehren, wodurch automatisch die anderen Artikel ausgewählt werden, und können danach löschen.

Über den Knopf mit dem Stift-Symbol am Anfang der Seite finden Sie, wie schon erwähnt, eine Eingabebox, in der Sie die Artikel-ID eingeben können, um einen Eintrag direkt zu bearbeiten. Alle Artikel in Serendipity werden bei 1 beginnend automatisch durchnummeriert. Wenn ein Artikel einmal gelöscht werden sollte, verändert sich die ID aller anderen Artikel nicht, daher können ggf. Lücken entstehen. Sie sollten mit dem Löschen eines Artikels dennoch mit Bedacht vorgehen, denn der Sinn eines Blogsystems besteht ja darin, aktuelle Artikel zu erstellen, die mit der Zeit verdrängt und durch das Weiterrücken sozusagen archiviert werden. Es ist nicht dazu gedacht, beliebig erstellt und gelöscht zu werden, wie in einem CMS-System

Am Anfang der Seite neben dem gerade beschriebenen Button-Knopf, sehen Sie mehrere Filtermöglichkeiten, die die Anzeige der Artikel beinflussen. Standardmäßig werden Ihnen die chronologisch aktuellsten Artikel angezeigt. Die Liste ist über die Buttons Weiter und Zurück und Anfang und Ende ober- und unterhalb der Artikel blätterbar, sobald genügend Artikel vorhanden sind.

Folgende Filteroptionen sind verfügbar:

Autor Das Auswahlfeld neben der Option Autor schränkt die Darstellung der Artikel auf den ausgewählten Autor ein.

Artikelmodus Unterhalb des Autors gibt es ein weiteres Auswahlfeld, mit dem Sie auswählen können, ob nur Entwürfe, Veröffentlichungen oder beide Artikelarten angezeigt werden sollen.

Kategorie Um nur Artikel einer gewissen Kategorie anzuzeigen, können Sie im Auswahlfeld Kategorie die gewünschte Auswahl treffen.

Inhalt In das Feld Inhalt können Sie ein beliebiges Suchwort eingeben, das in einem Artikeltext (oder dem erweiterten Artikeltext) vorhanden sein muss. Die Suche berücksichtigt dabei auch Teilworte und ignoriert die Klein- und Großschreibung, wenn Sie also miet eingeben, werden auch Artikel angezeigt, die vermieten oder Mietbüro enthalten.

Sortieren nach Die Sortierung der gefilterten Artikel bestimmen Sie durch das Auswahlfeld Sortieren nach. Folgende Sortierungsmöglichkeiten stehen zur Verfügung: Datum, Veröffentlichung/Entwurf, Autor (Autorname, alphabetisch), Kategorie (Kategoriename, alphabetisch), Zuletzt aktualisiert, Titel (Artikeltitel, alphabetisch) und die ID eines Artikels.

Sortierung Die Rangfolge der Sortierung (Absteigend oder Aufsteigend) können Sie durch das Auswahlfeld Sortierung einstellen. Dadurch bestimmen Sie, ob die Liste vom aktuellsten/ersten Eintrag bis zum ältesten/letzten Eintrag sortiert wird oder umgekehrt.

Artikel pro Seite Standardmäßig enthält die Übersicht die letzten 12 Artikel. Um eine größere Übersicht zu ermöglichen, können Sie die Artikel pro Seite auf die Werte 12, 16, 15, 50 oder 100 stellen. Beim Blättern wird die jeweilige Folgeseite ebenso viele Artikel darstellen.

Ein Klick auf Los! führt die gewünschte Filterung aus und zeigt die daraus resultierende Artikelauswahl in der eingetragenen Sortierung. Bei Angabe mehrerer Filterkriterien werden diese alle miteinander UND-verkettet, d.h. es müssen alle Filterbedingungen zutreffen, damit ein Artikel in der folgenden Liste aufgeführt wird.

Die zuletzt eingestellten Filter- und Sortierungsoptionen werden in einem Cookie gespeichert und beim nächsten Aufruf des Menüs erneut angewendet. Wenn Sie also einmal eine chronologische Auswahl erwarten würden, prüfen Sie zuerst, ob die Filtereinstellungen dies verhindern.

Der Filter-Reset-Button setzt getroffene Filter auf die Default-Einstellung zurück.

4.4.3 - Kategorien

Kategorien

Im Bereich Kategorien können die für Artikel gültigen Kategorien erstellt und verändert werden.

Auf der Übersichtsseite sieht man die Auflistung aller verfügbaren Kategorien in ihrer hierarchischen Ordnung. Für jede Kategorie gibt es eine einzelne Zeile, und Kategorien können unendlich tief ineinander verschachtelt werden, um Unterkategorien zu ermöglichen.

Pro Zeile gibt es die bekannten zwei Buttons zum Bearbeiten und Löschen einer Kategorie. In ihrer Mitte befindet sich ein Plus-Symbol für die Erstellung einer Unterkategorie der jeweiligen Kategorie. Unter dem Namen einer Kategorie liegen, versteckt in einer Klappbox, die über das kleine rechtsweisende Dreiecks-Symbol aktiviert wird, weitere Angaben zur Beschreibung einer Kategorie, und abschließend den Namen des Eigentümers einer Kategorie.

categories_dm_de.png
Abbildung 4.10: Inhalt: Kategorien

Der Eigentümer einer Kategorie bestimmt im späteren Verlauf, welche Redakteure Artikel für diese Kategorie erstellen dürfen. Gewähren gewisse Rechtekonstellationen (siehe Kapitel Gruppenverwaltung auf Seite Gruppenverwaltung) keinen Zugriff, wird die Kategorie auf dieser Übersichtsseite für unbefugte Redakteure nicht angezeigt und ist auch beim Erstellen eines Beitrags nicht auswählbar. Wenn an der Stelle des Eigentümers Alle Autoren steht, bedeutet dies, dass die Kategorie keinen speziellen Eigentümer besitzt, sondern für alle Redakteure zur Verfügung steht.

Am Ende der Seite führt der Button Neue Kategorie zu der Erstellungsmaske für eine neue Kategorie.

new_category_dm_de.png
Abbildung 4.11: Inhalt: Kategorien: Neue Kategorie

Sowohl der Klick auf Neue Kategorie als auch das Bearbeiten einer Kategorie führen zu derselben Maske. Dort können folgende Daten erfasst werden:

Name Der Name einer Kategorie wird in das Feld Name eingetragen; sie wird später im Frontend jeweils mit diesem Namen dargestellt. Sonderzeichen und Leerzeichen sind erlaubt. Die Zeichenlänge ist grundsätzlich unbeschränkt, aber sehr lange Kategorienamen könnten zu problematischen Zeilenumbrüchen in Auswahlboxen führen.

Beschreibung Die Beschreibung einer Kategorie wird an einigen Stellen im Backend und als Meta-Beschreibung zur Kategorie im Frontend angezeigt. Hier können Sie auch längere Beschreibungen eintragen.

Bild Wenn Sie einen Artikel in einer Kategorie veröffentlichen, können Sie ein Bild mit dieser Kategorie verbinden. Dieses Bild wird dann bei der Darstellung eines Artikels im Frontend im Inhaltsbereich ausgegeben und ermöglicht den Besuchern eine einfache Assoziation des Textes mit einem Thema. Über den Button Bild können Sie das Mediathek-Popup (siehe Seite Mediathek-Popup) aufrufen und die gewünschte Bilddatei einfügen. Alternativ tragen Sie in das Eingabefeld Bild eine vollständige URL mit dem Bildziel ein.

Leserechte Wenn Sie einen Artikel in einer Kategorie verfassen, kann es sein, dass nicht jeder Besucher der Webseite Einträge aus dieser Kategorie lesen soll. Über das Auswahlfeld Leserechte können Sie diejenigen Benutzergruppen wählen, die später im Frontend die Befugnis haben, einen Artikel zu lesen. Mehrere Gruppen können mit gedrückter (Strg/Apfel)-Taste und einem Mausklick gewählt werden. Die Sondergruppe Alle Autoren wird benutzt, wenn eine Kategorie von jedem Besucher (also nicht eingetragenen Redakteuren) aufgesucht werden darf. Sobald eine Einschränkung auf eine Benutzergruppe eingerichtet wurde, muss ein Redakteur dieser Gruppe(n) sich erst ins Backend eingeloggt haben, bevor er im Frontend die Artikel lesen kann. Alle derart geschützten Artikel sind auch im normalen RSS-Feed nicht mehr vorhanden. Die Option der Einschränkung von Leserechten kann durch die globale Serendipity-Konfigurationsoption Leserechte auf Kategorien anwenden (siehe Kapitel Konfiguration, Seite Konfiguration) ausgehebelt werden. Um im Seitenleisten-Plugin Kategorien (Seite categoriesplugin) ebenfalls nur die Kategorien anzuzeigen, für die man Leserechte besitzt, muss in der Konfiguration dieses Plugins die Option Quelle der Kategorien auf Derzeitiger Autor eingestellt werden.

Schreibrechte Analog zu den Leserechten können bei Serendipity die Schreibrechte einer Kategorie vergeben werden. Nur die ausgewählten Benutzergruppen werden später die Möglichkeit haben, einen Artikel für diese Kategorie zu schreiben. Sobald eine Einschränkung des Schreibrechts auf mindestens eine Benutzergruppe vorgenommen wird, wird für die Kategorie der aktuelle Redakteur als Eigentümer der Kategorie vermerkt und in der Kategorieübersicht dargestellt. Die spezielle Option Alle Autoren bedeutet, dass der Schreibzugriff auf die Kategorie nicht eingeschränkt ist.

Übergeordnete Kategorie Kategorien können beliebig verschachtelt werden. Um eine Kategorie einer Oberkategorie zuzuordnen, muss diese Kategorie im Auswahlfeld Übergeordnete Kategorie ausgewählt werden. In diesem Auswahlfeld sind alle bisher angelegten Kategorien hierarchisch (durch Leerzeichen eingerückt) dargestellt. Beim Bearbeiten einer Kategorie kann diese somit leicht (mitsamt allen untergeordneten Kategorien) an einen anderen Punkt des Kategoriebaums eingehängt werden.

Artikel von Unterkategorien verstecken? Wenn Sie im Frontend eine Kategorie zur Ansicht ausgewählt haben, werden standardmäßig alle Einträge dieser Kategorie und auch alle Einträge in den zugehörigen Unterkategorien dargestellt. Dies ermöglicht dem Besucher, dass er bei der Auswahl von Oberkategorien nicht jede Unterkategorie einzeln anklicken muss. Wenn Serendipity jedoch eher als Content-Management-System eingesetzt wird, ist dieses Verhalten recht untypisch und häufig nicht gewünscht. Daher können Sie für jede Oberkategorie die Option Artikel von Unterkategorien verstecken aktivieren. Daraufhin werden bei Auswahl einer derart konfigurierten Kategorie im Frontend ausschließlich die Artikel angezeigt, die auch in exakt dieser Kategorie eingetragen wurden.

Weitere Kategorie Felder Plugins, wie zB. das Statische Seiten-Plugin, können über einen Hook ("eine Art Sprungmarker", siehe Ereignis-Hooks) hier weitere Felder, wie eine "Zugeordnete statische Seite", einfügen.

 

Ein Klick auf Erstellen (für neue Kategorien) bzw. Speichern schließt die Erstellungs-/Bearbeitungsmaske und speichert die Änderungen.

Wenn Sie eine Kategorie löschen möchten, wird Serendipity Sie fragen, was mit Einträgen geschehen soll, die dieser Kategorie bisher zugeordnet waren. Mittels eines Auswahlfeldes können Sie festlegen, ob diese Einträge stattdessen einer anderen bestehenden Kategorie zugeordnet werden sollen. Ohne eine Neuzuordnung werden Artikel nicht gelöscht, sondern sind dann einfach keiner Kategorie mehr zugeordnet.

Einige Plugins benötigen zur Konfiguration die Kategorie-ID. Eine ID identifiziert eine Kategorie eindeutig und bleibt auch gleich, wenn Sie eine Kategorie einmal umbenennen. Diese ID wird üblicherweise weder im Frontend noch im Backend wirklich deutlich angezeigt; sie ist jedoch meist Bestandteil der URL (zB. /categories/17-Generelles).

Um die ID ohne Nachschlagen in der Datenbank oder Durchsuchen des HTML-Quellcodes zu ermitteln, können Sie in der Kategorie-Übersicht im Backend-Bereich Kategorien mit der Maus über das Stift-Symbol fahren. Wenn Sie dann kurz warten, wird Ihr Browser unterhalb der Mausposition ein kleines Fenster anzeigen, in dem die ID der Kategorie steht.

4.5 - Mediathek

Mediathek

Serendipity kann von Ihnen hochgeladene Bilder und Dateien in einer eigenständigen Datenbank, der Mediathek, verwalten.

Die Mediathek/Mediendatenbank besteht aus zwei Komponenten. Zum einen ist das ein Unterverzeichnis namens uploads im Serendipity-Stammverzeichnis. Dort werden die Dateien, die Sie von Ihrer eigenen Festplatte aus hochladen, abgespeichert. Zum anderen ist das eine Tabelle in Ihrer serverseitigen Datenbank, die sogenannte Meta-Informationen über die hochgeladenen Dateien speichert.

Diese Meta-Informationen enthalten Angaben über den Typ einer Datei, wann und von wem die Datei hochgeladen wurde sowie etwaige Beschreibungen der Datei.

Serendipity stellt nur die Dateien der Mediathek dar, die auch in dieser Datenbanktabelle verzeichnet sind. Dateien, die lediglich manuell mittels FTP-Programm in das Verzeichnis uploads auf den Server geladen werden, sind dort vorerst nicht enthalten.

Aufgrund dieser zwei unterschiedlichen Komponenten ist es wichtig, dass Serendipity diese ständig miteinander synchronisiert, denn sonst könnte es passieren, dass Ihnen Dateien angezeigt werden, die gar nicht existieren - oder Ihnen könnten bereits hochgeladene Dateien fehlen.

Im Dateisystem der Mediathek können sowohl Bilder (JPEG, GIF, PNG und weitere) verwaltet werden als auch beliebige andere Dokumente (MP3, AVI, ZIP, DOC, PDF, etc.). Diese Dateien können zur besseren Strukturierung auch in beliebig verschachtelten Unterverzeichnissen abgelegt werden.

Unterschiedliche Schreib- und Leserechte auf Bildordner können über die Meta-Informationen der Mediathek verwaltet werden.

Bilder können in der Mediathek speziell bearbeitet werden. So kann man die Bilder auf dem Server vergrößern/verkleinern, und Serendipity kann kleine Vorschaubilder (Thumbnails) einer Grafik erstellen. Für diesen Automatismus muss Ihr Webserver entweder gdlib oder ImageMagick unterstützen (siehe Kapitel Voraussetzungen auf Seite Voraussetzungen). Trotz dieser rudimentären Grafikbearbeitungsmöglichkeiten ersetzt Serendipity nicht die Nachbearbeitung eines Bildes mit Programmen wie GIMP oder Adobe Photoshop. Ein Bild, das direkt von einer Digitalkamera kommt, ist üblicherweise viel zu groß für die Darstellung im Internet. Daher sollten Sie Bilder von vornherein auf eine angemessene Größe bringen. Statistisch liegen die verbreitetsten Auflösungen im Internet unter 1280 x 1024 Pixel, daher macht eine Datei mit einer höheren Auflösung als dieser nur in besonderen Fällen Sinn und würde nur zu viel Speicherplatz benötigen.

Dem trägt eine Einstellung in der Konfiguration Bildkonvertierung Maximale (Breite/Höhe) eines hochgeladenen Bildes bereits Rechnung, mittels derer man ein festes Maß als Maximalmaß für den Upload festsetzen kann und das intern beim Upload größere Bilder bereits herunterrechnet. Hier ist ImageMagick als Toolkit für die graphische Voraussetzung sehr zu empfehlen.

Mit Serendipity Styx 3.0 begann eine neue Ära für die Mediathek, die um sogenannte Variationen erweitert wurde. Dabei handelt es sich um neue Dateiformate, die wesentliche Verbesserungen für die Kompressionsgrößen eines Bildes erzeugen, ohne dabei wesentlich an Bildqualität zu verlieren. Solche Formate sind natürlich jeweils neu und werden nur langsam im Web und den heimatlichen Computern bzw dessen Programmen und Möglichkeiten adaptiert. Serendipity Styx hat sich daher entschieden vorerst weiterhin auf die bekannten Image Formate wie jpg oder png als image Upload Formate zu setzen, sie aber direkt beim Upload und soweit möglich in versteckte Variationen zu duplizieren, die die weitere Nutzung drastisch erweitern.

Solch ein Format ist webp; WebP aus dem Hause Google, das nach etwa neunjähriger Entwicklungszeit Anfang 2020 das Licht der Welt erblickte. Die verbesserten Komprimierungsraten gegenüber den bekannten Formaten belaufen sich im Mittel auf etwa 30%, können aber auch wesentlich größer ausfallen, je nach Ausgangsqualität und Ausgangsmaterial des Original Bildes. Mit Styx 3.6/3.7 kam im Herbst bzw Ende 2021 ein weiteres vielversprechendes Format hinzu, das AVIF (AV Image Format) genannt wird und von einem Konsortium vieler großer Firmen als DIE neue und freie Videokompressionsoftware AV1 entwickelt wurde. AVIF ist also ein Ableger derselben. Dieses kann erst mit PHP 8.1 eingesetzt werden.

Noch einmal konnte die Kompression damit um weitere 30% ( wiederum im Mittel) gesteigert werden, so dass heute Bilder (Variationen) nur noch etwa 10 bis 30 Prozent der Originalgröße beanspruchen und Sie es an der Qualität nicht bemerken werden. Alle großen Browser sind heutzutage in der Lage mit ihnen umzugehen und durch die Möglichkeit eines wunderbaren neuen Ausgabeformates (siehe Picture Container auf Seite Eintrag-speichern als Picture Element Container) ist HTML und damit auch Styx in der Lage diese so auszuliefern, dass auch weniger ausgefeilte Browser damit umgehen können.

Das WebP Format ist also schon gut abgehangen und es sind keine größeren Probleme in der Herstellung, also Konvertierung über die GDlib bzw ImageMagick zu erwarten und die WebP Nutzung als Variation hat sich in den letzten zwei Jahren schon als sehr stabil erwiesen. Mit AVIF ist dies etwas anders. Obwohl annonciert mit Erscheinen von PHP 8.1 [*] Dies bezieht sich auf die darin enthaltene GDlib Bibliothek. Mit ImageMagick benötigen Sie mindestens die Version 7.0.25 um überhaupt mit AVIF arbeiten zu können. im Herbst 2021 voll kompatibel zu sein, fehlt dennoch ein wichtiges Puzzlestück um praktisch damit arbeiten zu können, so wie es für WebP möglich ist. Dies betrifft die Auslesung von Metadaten, inbesondere von Größenangaben im Meta Bereich von AVIF Dateien, das normalerweise über die PHP Funktion getimagesize() geschieht, und immer dann genutzt wird, wenn Formatwechsel oder Dateigrößenwechsel der Ausmaße anstehen, also für Serendipity gesprochen ein sehr häufig benutztes Kernstück.

Dieses Kernstück wird für AVIF erst ab PHP 8.2 Ende des Jahres 2022 zur Verfügung stehen. Bis dahin kann AVIF nur etwas eingeschränkt benutzt werden. Diese Einschränkung beinhaltet alles, was über die Konvertierung eines hochgeladenen Bildes (in das Serendipity Thumbnails Vorschaubild) hinausgeht, also zB. spätere Skaldierungen des vorliegenden Bildformates "Dateiausmaße ändern", sowie Änderungen des Bildformates selber und ebenso Rotationen des Bildes "(Bild um 90 Grad gegen den/im Uhrzeigersinn drehen)". Da es unter der Prämisse der genutzten AVIF Option dann immer alle Dateiformate beträfe, denn für eine Rotation beispielsweise muss das Orginalbild, sein Thumbnail, ebenso wie diese, die WebP Variationen, dann eben auch die AVIF Variationen gedreht werden, wurden zum Teil bereits Vorkehrungen getroffen, solcherlei Änderungen vorerst zu unterbinden.

Aus diesem Grunde steht AVIF bislang nur als Option in Konfiguration Bildkonvertierung Nutzung von AVIF Variationen aktivieren? zuschaltbar zur Verfügung.

Eine weitere zu beachtende Einschränkung besteht darin, dass die unglaublich gute AV1 Kompression ein schweres Stück Arbeit ist und deshalb viel ZEIT entsprechend der zur Verfügung stehenden GPU/CPU Kerne und mindestens ebenso anspruchsvoll viel RAM bis in den GBit Bereich beansprucht [*] Dies bezieht sich insbesondere auf größere Bilder, also zB. mit 13 MB im Ausgangsformat. Mit kleineren Bildern bis 2, höchstens 3 MB, ist AVIF durchaus nutzbar und verursacht nicht allzugroße Schmerzen beim Upload.. Aus diesem Grunde ist bis dato davon abzuraten, mehr als ein Bild zur Zeit hochzuladen und konvertieren zu lassen. So wie WebP mit seiner langen Entwicklungszeit viel Raum hatte diesem Anpruch mit schnelleren Algorithmen und verbesserter Hardware auf Anwenderseite zu begegnen, wird es sicherlich auch AVIF ergehen. Die Leistungsfähigkeit und Schnelligkeit wird mit der Zeit also bestimmt besser werden, ist aber zur Zeit hardwareseitig noch gewissen Einschränkungen unterworfen.

Um es kurz zu sagen, natürlich können Sie auch gleich WebP oder AVIF Format Dateien auf Ihr Blog hochladen. Dies ist ohne weiteres möglich. Allein die Möglichkeiten Ihres Browser bestimmen, ob Sie diese als Bilder auch tatsächlich angezeigt bekommen, was ja die großen, wie Mozilla Firefox oder Chrome mit all seinen Chromium Variationen, wie bereits gesagt, seit Sommer 2021 gut beherrschen.

Allein die Ausgabe im Frontend, zB. in einem Eintrag als normales image Format, wird eventuell schwierig, denn Sie können ja nicht wissen, welche Voraussetzungen die Besucher Ihres Blogs diesbezüglich mitbringen. Aus diesem Grunde ist es vorerst durchaus ratsam in der überwiegenden Masse [*] Für einzelne Bild-Solitäre ist die Nutzung aber bereits durchaus ein willkommenes Feature. Hervorragend gut gemachte Seiten wie https://avif.io/ machen es Ihnen einfach, lokal vorhandene Bilder nach AVIF zu konvertieren ("Convert to AVIF") damit Sie diese dann in Serendipity hochladen oder etwa auch zB in ihrem Theme als solitäre Header Image Datei nutzen können. auf diese Möglichkeit zu verzichten, und lieber die geschilderten Variations Formate für ihr Ausgabeformat zu benutzen (siehe Picture Container auf Seite Eintrag-speichern als Picture Element Container).

AVIF wurde also entwickelt, um PNG, JPEG und WebP bei allen Bildern, Fotos und Grafiken zu ersetzen, das heißt, um lizenzfreie Bilder mit einer besseren Komprimierungseffizienz bereitzustellen. [*] Für PNG muß gesagt werden, dass AVIF bei der Komprimierungseffizienz, der Dateigröße und der Kodierungs-/Dekodierungszeit nicht ganz so effizient ist. Dies liegt daran, dass AVIF sich darauf konzentriert, als verlustbehaftetes Komprimierungsformat überlegen zu sein. PNG hat (noch) eine bessere Unterstützung in allen Browsern und eine schnellere Kodierungs-/Dekodierungsleistung (insbesondere bei der Dekodierung). Aus diesem Grunde werden sie bei PNG Dateien auch relativ häufiger eine bessere Komprimierung erleben. Es basiert auf vier verschiedenen Technologien. AVIF verwendet Basiselemente des ISO BMFF Byte Stream Formats, kombiniert es mit IFF/HEIF für bildspezifische und codec-agnostische Funktionen, verwendet MIAF für zusätzliche strukturelle Einschränkungen von ISOBMFF und benutzt die Abbildung des AV1 KeyFrame. Als Ergebnis der Bemühungen des Konsortiums wurden lizenzfreie, offene Videocodecs für bewegte Bilder und das AV1 Image File Format (AVIF) für Bilder entwickelt. Es kombiniert AV1-Kompressionsalgorithmen mit der HEIF-Containertechnologie, die Apple seit vielen Jahren verwendet. HEIF bietet eine einheitliche und standardisierte Methode für den Austausch, die Speicherung (zB. von Metadaten) und die Übertragung von mit AV1 kodierten Bildinhalten. In diesem Sinne überschneiden sich AVIF und HEIF. AVIF und HEIF kodieren Bilddaten mit unterschiedlichen Kompressionsmethoden. Anstelle der AV1-Kompression verwendet das HEIF-Format das HEVC-Videoformat.

Die PHP GD- und ImageMagick-Kodierungskomprimierung sind leicht unterschiedlich und ihre Ergebnisse oft überraschend, wenn man die Dateigrößen aller Formate miteinander vergleicht. Sehen Sie hier ein Beispielergebnis:

lib_variation_comparison.png
Abbildung 4.x: Eine Serie von 4 Bildern, die vergleichend mit ImageMagick (IM) und PHP GD kodiert wurden. Im Allgemeinen können Dauer und Resultat der Bildkodierung - abgesehen von der Größe - von der Verwendung von hohen Dynamikbereichen (HDR), verlustfreier oder verlustbehafteter Kompression, Farbebenen, Profilen, großem Farbumfang, Chroma-Sub-Sampling und Bittiefen von 8, 10 oder 12 abhängen. Hier liegen die wesentlichen Unterschiede und natürlich in der Art, der Ruhe oder Unruhe des Bildmotives selbst.
Alles, was wir also wissen müssen, ist: Das neue AVIF ist meist das bessere Format und wird sich sicherlich in Zukunft durchsetzen.

 

Was beim WebP - AVIF Vergleich auffällt, ist, dass es aber durchaus vorkommen kann, dass das umgewandelte AVIF Format (Datei) größentechnisch nicht per se immer besser - sprich kleiner - als das WebP Format ist. Serendipity Styx sorgt aber bereits im Vorfeld dafür, dass durch das neue < picture > container Ausgabeformat, welches ansonsten streng nach dem fallback-Prinzip von oben nach unten arbeitet, die Reihenfolge der Ausgabe an der Dateigröße gemessen wird und somit immer das Kleinste der vorhandenen Bild Variationen geliefert wird. Das heißt, im Falle einer kleineren WebP Variation bleibt das AVIF <source> srcset leer. Am Browser des Clients, also des Besuchers, liegt es dann zu entscheiden, welches von den angebotenen Bildern/Variationen er wirklich laden und darstellen kann. Eine Win-win Situation, die dazu führt ihren Webauftritt erheblich zu beschleunigen!

In Ausgabecode gegossen und als Link zum großen Bild sähe das dann in etwa so aus:


<a href="img/.v/pippi-longstocking.avif" data-fallback="img/.v/pippi-longstocking.webp">
  <picture>
    <source srcset="img/.v/pippi-longstocking.styxThumb.avif" type="image/avif">
    <source srcset="img/.v/pippi-longstocking.styxThumb.webp" type="image/webp">
    <img src="img/pippi-longstocking.styxThumb.png" alt="pippi-longstocking.styxThumb.png" loading="lazy" width="1120" height="760">
  </picture>
</a>

Wie Sie sehen, beinhaltet das Beispiel bereits die versteckenden Mediatheks ".v/" Ordner, relativ zum Bildverzeichnis, in denen die Bildvariationen (webp/avif) als interne Erweiterung der Mediathek gespeichert sind. (Siehe medien-speichern auf Seite Eintrag-speichern als Picture Element Container)

4.5.1 - Medien hinzufügen

Medien hinzufügen

Um Ihre Mediathek mit Daten zu füllen, müssen Sie die Dateien in dieser Datenbank anmelden. Um eine Datei komfortabel über die Oberfläche hochladen zu können, gibt es den Menüpunkt Medien hinzufügen.

Auf dieser Seite können Sie zwischen zwei Varianten wählen, von welcher Quelle eine Datei eingestellt werden soll.

ml_imageupload_dm_de.png
Abbildung 4.12: Mediathek: Medien hinzufügen

Die erste Variante ist der Download einer Datei, die bereits im Internet unter einer URL verfügbar ist. Wenn Sie also auf einer Webseite eine Bilddatei sehen, können Sie über Ihren Browser (meist mittels eines Rechtsklicks auf die Grafik) die URL dieses Bildes heraussuchen und in das Feld URL zum Download angeben eintragen.

Achten Sie bitte beim Download einer Grafikdatei aus dem Internet immer darauf, dass die Bilder/Dateien urheberrechtlich geschützt sein könnten und die Einbindung einer solchen Datei in Ihrem Blog rechtlich nicht erlaubt ist. Stellen Sie daher immer sicher, dass Sie das Recht haben, eine Datei zu vervielfältigen.

Unterhalb der Eingabebox zum Download einer Datei aus dem Internet befindet sich das Auswahlfeld Download-Methode. Wenn Sie hier Bild auf diesem Server speichern auswählen, bedeutet das, dass die Daten der eingetragenen URL heruntergeladen und auf dem eigenen Webserver gespeichert werden. Wenn Sie ein solches Bild später einbinden, wird es von den Besuchern von Ihrem eigenen Webserver heruntergeladen und verursacht auf Ihrem Webserver Kosten für den aufgekommenen Traffic (Datenverkehr). Die zweite Möglichkeit stellt die Option Nur zum Quellserver linken dar. Ist diese Option gewählt, wird die von Ihnen eingetragene Datei nicht wirklich heruntergeladen, sondern nur ein Verweis auf den Zielserver gespeichert. Wenn Sie eine derartige Datei später einbinden, werden die Daten dann vom fremden Webserver geladen -- dies nennt man hotlinking. Dies hat den Vorteil, dass auf Ihrer eigenen Seite kein erhöhter Datenverkehr entsteht und dass, formaljuristisch gesehen, die Einbindung solcher Bilder urheberrechtlich unterschiedlich gehandhabt wird, da Sie das Bild nicht eigenständig anbieten.[*] Diesen Hinweis genießen Sie bitte mit Vorsicht. Im Zweifelsfall sollten Sie den Eigentümer einer Datei immer um Erlaubnis bitten oder mit der Hilfe eines Fachanwalts den Sachverhalt klären. Der Nachteil einer solchen Einbindung ist jedoch, dass, wenn einmal der verwiesene Server nicht mehr betrieben oder die Datei entfernt wird, ein solches Bild natürlich auch in Ihrem Artikel nicht mehr angezeigt werden kann.

Als zweite Variante zum Hinzufügen einer Datei können Sie diese von Ihrer eigenen Festplatte auswählen. Wenn Sie auf den Button Durchsuchen neben der Eingabebox Datei zum Hochladen angeben klicken, öffnet sich ein Dateiauswahldialog Ihres Betriebssystems, und Sie können eine Datei aus Ihrer Verzeichnisstruktur auswählen.

Sie können immer nur eine dieser beiden Varianten des Hinzufügens wählen. Entweder Sie laden eine Datei aus dem Internet, oder Sie laden sie vom eigenen Computer. Wenn Sie beide Eingabefelder ausfüllen, wird nur die Datei aus dem Internet geladen und die selbst hochgeladene Datei ignoriert. Wenn Sie also sowohl eine Datei aus dem Internet als auch eine vom eigenen Computer hochladen wollen, müssen Sie dies nacheinander tun.

Wenn Sie eine Datei von der eigenen Festplatte hochladen, können Sie noch weitere Details bestimmen. Im Eingabefeld Datei speichern mit dem Namen können Sie einen Dateinamen für die hochgeladene Datei vergeben. Standardmäßig wird hier der Originalname der Datei von Ihrer Festplatte eingetragen. Im Feld In diesem Verzeichnis ablegen können Sie das Unterverzeichnis auswählen, in dem die Datei später gespeichert wird. Unterverzeichnisse werden über den Mediathek-Menüpunkt Verzeichnisse verwalten (siehe Kapitel Verzeichnisse verwalten auf Seite Verzeichnisse verwalten) erstellt.

Wenn Sie mehr als eine Datei hochladen möchten, können Sie auf den Button Mehr Bilder hinzufügen klicken. Jeder Klick auf diesen Button stellt ein zusätzliches Eingabefeld für eine auszuwählende Datei zur Verfügung, und in jedem dieser Blöcke können Sie danach auch den Dateinamen und das Zielverzeichnis bestimmen.[*] Diese Funktion benötigt aktiviertes JavaScript und wird von allen gängigen Browsern unterstützt. Beachten Sie bitte, dass Sie nicht zu viele Dateien in einem Schritt hochladen sollten. Je nach Einstellung des Webservers (siehe Kapitel file-uploads auf Seite file-uploads) dürfen Sie ein gewisses Limit (meist 4MB) nicht überschreiten.

Inzwischen gibt es aber die Möglichkeit beim Durchsuchen gleich mehrere Bilder “In-Once” zugleich emporzuladen, die, durch ein kleines Javascript Programm gesteuert, automatisch abgearbeitet werden. Im Zuge der in Kapitel 5.0 erklärten Veränderungen (siehe oben) mit den AVIF Variation Dateien und der mitunter erheblich Kodierungszeit, sollten sie von mehrfachen Uploads vorerst absehen, wenn Sie dies Feature nutzen, auch wenn das hier genannte Javascript nur eines zur Zeit bearbeitet.

Nachdem Sie also die Dateien ausgewählt haben, haben Sie zwei Möglichkeiten der Speicherung. Ein Klick auf Los! speichert die Datei und erstellt ggf. automatisch kleine Voransichten. Wenn Sie jedoch auf Los und Eigenschaften angeben klicken, werden Sie auf einer Folgeseite gebeten, zu einer Datei optionale Meta-Informationen anzugeben. Diese Meta-Informationen können Sie auch später noch nachtragen oder überarbeiten, wenn sie in der Mediathek bereits gespeichert sind.

4.5.2 - Medien: Probleme beim Upload

Medien: Probleme beim Upload

Scheitert das Speichern einer neuen Datei, liegt dies meist an falschen Zugriffsrechten (Kapitel Zugriffsrechte auf Seite Zugriffsrechte). Stellen Sie sicher, dass Ihr Webserver Schreibzugriff auf den Ordner uploads besitzt. Auch eine falsche Einstellung durch den PHP SafeMode kann Schreibprobleme verursachen.

Wenn eine Datei aufgrund der Größenbeschränkung des Webservers nicht hochgeladen werden kann, wird Serendipity darüber einen Hinweis geben.

Einige Webserver filtern zudem spezielle Dateien, um Sicherheitsprobleme zu verhindern. Wenn Sie also merkwürdige Fehlermeldungen erhalten, sollten Sie Webserver-Module wie mod_security oder suhosin in Betracht ziehen und gemeinsam mit dem Serverprovider anpassen.

Beim Upload großer Dateien kann es zudem auch passieren, dass Ihre Verbindung aufgrund der großen Transferdauer entweder sehr lange dauert oder sogar abbricht. In so einem Fall sollten Sie besonders große Dateien lieber mittels FTP-Programm auf den Server laden.

4.5.3 - Medien: Eigenschaften angeben

Medien: Eigenschaften

Wenn Sie beim Hochladen einer Datei auf den Button Los und Eigenschaften angeben geklickt oder innerhalb der Mediathek-Übersicht auf das Blacklist-Symbol einer Datei geklickt haben, landen Sie auf einer Seite, in der Sie die Eigenschaften einer Datei überarbeiten können.

ml_upload2_dm_de.png
Abbildung 4.13: Mediathek: Eigenschaften angeben

Diese Seite stellt die betreffenden Meta-Informationen einer Datei dar. Als Erstes wird dabei entweder das Vorschaubild einer Grafikdatei oder ein Dateityp-Icon von Nicht-Grafikdateien angezeigt.

Unterhalb dieses Icons bzw Vorschaubildes sehen Sie den Namen und den Typ der gewählten Datei. Direkt darunter wird aufgeführt, wer die Datei zu welchem Datum hochgeladen hat und wie groß die Datei ist. Im Falle einer Grafikdatei wird hier zudem die Auflösung der Grafik und die Auflösung des kleineren Vorschaubildes angezeigt.

Es folgt der Block mit den Medien-Eigenschaften. Auch hier werden abhängig vom Dateityp gewisse Zusatzinformationen angezeigt. Bei Bildern wird die DPI-Zahl [*] Die DPI-Zahl (Dots Per Inch) eines Bildes bestimmt, wie fein die Datei beim Ausdruck gerastert wird. Je höher die Zahl ist, desto mehr Pixel passen auf ein Inch und desto feiner wird eine Grafik dargestellt. Druckgrafiken haben meist 300 DPI und Dateien, die nicht für den Druck vorgesehen sind, 72 DPI. angegeben. Bei Video- und Audiodateien wird die Länge der Datei dargestellt. Serendipity versucht die DPI-Zahl und die Spieldauer einer Datei automatisch auszulesen, jedoch kann dies bei den vielen unterschiedlichen Dateiformaten manchmal misslingen. Daher können Sie diese Angaben auch manuell korrigieren und in die Eingabefelder eintragen.

Für alle Dateitypen werden die folgenden Felder angezeigt:

Verknüpftes Datum Jede Datei kann einen Zeitstempel enthalten, wann sie erstmals gespeichert wurde. Bei Bildern, Videos oder Musikstücken entspricht dies oft dem Aufnahmedatum. Diese Information versucht Serendipity anhand der Datei automatisch zu erkennen. Sollten Sie das Datum ändern wollen, können Sie es (beliebig formatiert) hier eintragen.

Copyright Das Feld Copyright kann Urheberrechtsinformationen für die jeweilige Datei enthalten.

Titel Der Titel einer Datei wird vom Redakteur manuell festgelegt.

Kurzer Kommentar Langer Kommentar Eine kurze sowie eine ausführliche Beschreibung einer Datei können Sie in diesen beiden Eingabefeldern eintragen.

Bildinhalt (im ALT-Attribut) Der HTML Markup Ersetzungstext der angezeigt wird, falls das Bild aus irgendwelchen Gründen nicht im Frontend angezeigt werden kann.

Verzeichnis oder Bildformat Wenn eine Dateiveränderung erforderlich ist, verwenden Sie entweder die Änderung des Verzeichnisses oder die Änderung der Bildformatauswahl per Übertragung. Sie können beide nicht gleichzeitig verändern! Dies funktioniert ebenfalls nicht, wenn bereits ein Dateiname mit diesem neuen Format existiert und sollte deshalb vorher überprüft werden! Das Auswahlfeld Verzeichnis bestimmt, in welchem Verzeichnis eine Datei gespeichert wird. Wenn Sie später eine Datei verschieben wollen, können Sie das zugeordnete Verzeichnis an dieser Stelle ändern. Das Auswahlfeld Bildformat bestimmt, in welches andere Bildformat das Bild konvertiert werden soll. Bei beiden Veränderung werden die Original Datei, sowie das Vorschaubild in das gewünschte Verzeichnis auf dem Server physikalisch verschoben, oder eben konvertiert und der alte Speicherort bzw. der komplette Name existiert dann also nicht mehr. Serendipity versucht nun automatisch alle Ihre Artikel anzupassen, die das verschobene oder veränderte Bild referenziert haben. Prüfen Sie also bitte sicherheitshalber, ob alle Ihnen bekannten Verweise auf die Datei nach dem Verschieben bzw der Konvertierung noch stimmen. Generell empfiehlt es sich, nachdem Sie eine Datei bereits eingebunden haben, den Speicherort der Datei als auch ihre Extension, alöso das Bildformat nicht mehr zu verändern. Folgerichtig ist eine gut durchdachte Planung ihrer Mediathek, des Dateiverzeichnisses und des Bilduploads durchaus etwas Wert! Bei dieser Konvertierung wird die Datei mit all ihren Formaten und Variationen physikalisch, als auch in der Mediendatenbank verändert. Natürlich werden entsprechende Blogeinträge auf nötige Veränderunegn untersucht. WEBP / AVIF Formatvariationen von Originaldateien existieren wahrscheinlich bereits und sind von dieser Änderung nicht betroffen.

Diese Felder können später von Redakteuren in der Mediathek eingesehen und durchsucht werden und stehen auch in speziellen Galerie-Ansichten (siehe Seite mdb-profi) für normale Besucher zur Verfügung. Sie können auch individuell weitere Meta-Informationsfelder für Dateien erfassen. Dies wird über die Option Medien-Eigenschaften in der Serendipity-Konfiguration (siehe Kapitel Konfiguration ab Seite Konfiguration) eingestellt.

Der Abschnitt Medien-Schlüsselwörter kann für eine Datei vorher festgelegte Schlüsselwörter angeben. Die verfügbaren Schlüsselwörter werden dabei ebenfalls an zentraler Stelle der Serendipity-Konfiguration (so.) über die Option Medien-Schlüsselwörter festgelegt.

Jedes Schlüsselwort kann über die Aktivierung der links daneben stehenden Auswahlbox aktiviert werden. Schlüsselwörter machen es später leichter, eine Datei mit bestimmten Kriterien über eine Suche in der Mediathek wieder aufzufinden.

Am Ende der Seite befindet sich im Abschnitt EXIF/IPTC/XMP eine von der Datei abhängige Liste an Datei-Angaben. Das EXIF-Format stellt spezielle Angaben wie das Erstellungsdatum, Angaben über die verwendete Digitalkamera, Blendenwerte, involvierte Software und Weiteres innerhalb einer Datei zur Verfügung und kann von Serendipity daher ausgelesen werden. Da diese Angaben fest in der Datei gespeichert sind, können sie von Ihnen nicht bearbeitet werden, sondern dienen nur der Information. Moderne Digitalkameras speichern diese Informationen in den erstellten Bilddateien automatisch ab.

Sollte eine Datei über die Mediathek im Frontend speziell eingebunden werden (siehe Seite mdb-by-id), können Sie in einem weiteren Abschnitt alle Verweisquellen aufgelistet sehen. Die dort aufgeführten Webseiten stellen also Internet-Seiten dar, auf denen das aktuelle Bild dargestellt wird. So können Sie leicht herausfinden, ob ein Bild überhaupt eingesetzt wird oder ob Sie es problemlos löschen/verändern können.

4.5.4 - Mediathek: Übersicht

Mediathek: Übersicht

Über den Menüpunkt Mediathek wird die zentrale Übersicht aller in der Mediathek eingetragenen Dateien aufgerufen.

Diese Seite haben Sie möglicherweise auch schon im Kapitel Mediathek-Popup auf Seite Mediathek-Popup gesehen, dort jedoch noch ohne Bearbeitungsoptionen für jede Datei.

Die Übersicht besteht aus einem Kopfbereich verschiedenster Einstellungen für die Mediathek und darunter einer mehrspaltigen Ansicht aller von Ihnen hochgeladenen Dateien, oder eines einzelnen Ordners.

ml_directory_dm_de.png
Abbildung 4.14: Mediathek: Übersicht

Die Seite stellt standardmäßig jeweils acht Dateien pro Seite dar und kann über die Buttons Weiter und Zurück (in einem Bereich vor und nach der Dateiübersicht) geblättert werden. Mit Serendipity 2.1 kamen noch Seitenanfang und Seitenende Buttons, wie auch für die Blog Eintrags Liste hinzu. Ebenfalls neu ist die Möglichkeit, analog zur bisherigen Sammel-Löschung mittels checkbox Auswahl, einer Sammel-Verschiebung von Dateien innerhalb der Mediathek über den "Bewegen" Knopf und das Verzeichnis Auswahl Feld am unteren Ende. Damit können etwas ausgeuferte Mediendatei-Sammlungen effizient in Form gebracht werden.

Ebenfalls interessant ist die buttonartige schmale Gitter Funktionsleiste in der rechten oberen Ecke (siehe Abbildung 4.x), die die Ansicht der Mediatheksdaten in ein 2-Spalten, 3-Spalten oder 4-Spalten-Layout wechselt. Durch die Ladeverhalten-Verbesserungen die mit den neuen Bildvariationen erreicht wurden, können Sie diese Spalten natürlich auch mit mehr als den standardmäßigen 8 Dateien pro Seite betreiben. Dazu wurde die Auswahl an zugleich gezeigten Dateien im Sortierungsfilter erheblich erweitert, so dass Sie immer eine passende Ansicht und Zahl zu der von Ihnen gewählten Spaltenansicht erhalten können, ohne Löcher in der Dateienansicht zu erzeugen. Ein sehr praktisches Tool, um damit schnell einen Überblick zu gewinnen, oder ein gesuchtes Bild zu finden.

ml_imageinfo_dm_de.png
Abbildung 4.14a: Mediathek: Symbolleiste

In dem mehrpaltigen Bereich wird pro Box ein Objekt aus der Mediathek dargestellt, mit den jeweiligen Informationen und Optionen dieses Objekts:

Symbolleiste Die Symbolleiste unterhalb jeder Infobox stellt die möglichen Funktionen für eine Datei dar. Abhängig davon, ob eine Datei ein Bild oder etwas anderes darstellt, bietet die Symbolleiste unterschiedliche Optionen an. Die Lupe öffnet eine Ansicht der Originaldatei in einem separaten Popup-Fenster. Bei Bildern wird hierin passgenau das Originalbild angezeigt, bei anderen Dateitypen wie PDF-Dokumenten wird das damit assoziierte Programm auf Ihrem Computer gestartet. Das Stift-Icon ermöglicht Ihnen, eine Datei umzubenennen. Ein Popup-Fenster wird Sie nach dem neuen Dateinamen fragen. Beim Umbenennen der Datei müssen Sie darauf achten, dass, sofern die Datei bereits in Blog-Artikeln referenziert wird, Sie den Namen der Datei dort ebenfalls anpassen müssen, damit er dem neuen entspricht. Beim Umbenennen einer Datei kann nur der Stammname verändert werden und nicht die Dateiendung. Bei Bilddateien sehen Sie nun drei weitere Buttons: Das Diagonale Pfeile Symbol ermöglicht es, ein Bild zu vergrößern oder zu verkleinern. Bei einem Klick darauf öffnet sich eine Seite, die das Originalbild und dessen Originalauflösung darstellt, sie aber skaldiert (d.h. Seitengerecht verkleinert) anzeigt, und Sie können in einer Texteingabebox die neue Auflösung eintragen. Die Auswahlbox Proportionen beibehalten sollte hier aktiviert sein und bewirkt, dass das Seitenverhältnis einer Datei bei der Verkleinerung beibehalten wird. Die Auswahlbox Variationsformat ändern, sollte nur aktiviert sein, wenn Sie das eigentliche Proportionsverhältnis des Bildes verändern. Näheres wird in den Info Boxen der Seite selbst erläutert. Siehe nachfolgend: Abbildung 4.14b. Die beiden weiteren Buttons in der Symbolleiste (Rotation nach links, Rotation nach rechts) drehen ein Bild im oder gegen den Uhrzeigersinn jeweils um 90 Grad. Sie können daher ein im Querformat hochgeladenes Bild ins Hochformat umwandeln und umgekehrt. Achten Sie auf die gemachten Einschränkungen bezüglich der Nutzung von AVIF Variations Dateien. Der nächste Button ist nun wieder für jeden Dateityp identisch. Das Picture-Symbol öffnet die Medien-Eigenschaften einer Datei (siehe Seite Medien-Eigenschaften hinzufügen und übernächste Abbildung 4.14c). Das Löschen eines einzelnen Bildes kann mit dem (vor-)letzten Button dieser Reihe, über das allseits verwendete Mülleimer-Symbol, oder global für mehrere Bilder über die Löschung mittels Checkbox und des Button Auswahl umkehren und Löschen am Seitenende geschehen. Siehe vorhergehende Abbildung 4.14a. Bilddateien mit einer Bild-Variation (WebP/AVIF) zeigen einen weiteren Button, der auf Klick das größere Bild in der Variation anzeigt. Das macht zwar auch der Klick auf das gezeigte Vorschau Bild selbst auch, doch ist es dort mit seinem Originalnamen ausgezeichnet. Da aber, wie bereits erwähnt, das Styx Backend vollends auf die Ansichts Möglichkeiten von <picture> Containern setzt, wird auch hier schon das kleinstmögliche der möglichen Variationen geladen und angezeigt. Der Name allerdings orientert sich am Originalbild, so dass Sie in etwa das sehen: "Vollbild: Blumenkohl.jpeg (AVIF)". Nur die Auszeichnung in der Klammer deutet auf die Variation hin. Drücken Sie aber den Variations Button, so sehen Sie: "Bild Variation: Blumenkohl.avif, 2500x1666px".

ml_imagesize_dm_de.png
Abbildung 4.14b: Mediathek: Symbolleiste: Proportionen ändern
ml_imageproperties_dm_de.png
Abbildung 4.14c: Mediathek: Symbolleiste: Medien Eigenschaften

Vorschaubild/Icon Bei Bildern sehen Sie oben das Vorschaubild. Bei anderen Dateien kann hier ein Symbol für das jeweilige Dateiformat stehen.

Datei-Informationen Relevante und vorhandene Dateinformationen, werden direkt darunter angezeigt. Auf einen Eigentümer Informationsausgabe wurde verzichtet, da seit vielen Serendipity Versionen keine Eigentümer Struktur für Medieninhalte mehr vergeben wird.

 

ml_filter_sort_dm_de.png
Abbildung 4.15: Mediathek: Filtern und Sortieren

Üblicherweise richten sich die dargestellten Dateien nach deren chronologischem Hochlade-Zeitpunkt. Das erste dargestellte Bild ist also das, was zuletzt hochgeladen wurde - ganz gleich, in welchem Verzeichnis die Datei abgelegt wurde. Diese Reihenfolge und die Kriterien, nach denen Dateien angezeigt werden, können Sie im Kopfbereich anpassen:

Filter: Verzeichnis Im Auswahlfeld Verzeichnis können Sie wählen, aus welchem Unterverzeichnis Dateien dargestellt werden sollen.

Filter: Dateiname Wenn Sie die Mediathek nach einem ganz speziellen Dateinamen durchsuchen wollen, können Sie diesen in dem Eingabefeld Dateiname eintragen. Dabei wird die Suche später auch nach Teilwörtern und ohne Berücksichtigung der Groß- und Kleinschreibung ausgeführt. So könnten Sie beispielsweise nach allen PDF-Dateien suchen, indem Sie dort .pdf eintragen. Über die Vereinfachte Filter-Einstellung in den Eigenen Einstellungen können Sie bestimmen, wieviel an Filteroptionen hier angezeigt und erlaubt werden.

Filter Die beiden vorangestellten Pfeile vor dem Button Filter deuten darauf hin, dass ein Klick einen Unterbereich im Filtermenü ausklappt. Dieser belegt recht viel Bildschirmplatz und wird standardmäßig ausgeblendet. Sie finden innerhalb dieses eingeblendeten Bereichs zahlreiche Filtermethoden, die Sie ausfüllen können, um Dateien nach bestimmten Kriterien zu suchen. Alle ausgefüllten Filterkriterien werden dabei miteinander so verkettet (UND-Verkettung), dass nur Dateien angezeigt werden, auf die jedes Kriterium zutrifft. Wenn Sie daher nach Dateien suchen wollen, die mehreren unterschiedlichen Kriterien entsprechen könnten, müssen Sie dafür jeweils erneut eine Suche ausführen. Filter: Medien-Schlüsselwörter In das Eingabefeld Medien-Schlüsselwörter können Sie, mit Semikolon getrennt, mehrere Schlüsselwörter eingeben, die auf ein Bild zutreffen müssen. Rechts neben dem Eingabefeld sehen Sie die Liste aller verfügbaren Schlüsselwörter, die Sie auch direkt durch Anklicken in das Eingabefeld übernehmen können. Filter: Upload-Datum Um nur Dateien anzuzeigen, die in einem gewissen Zeitraum eingestellt worden sind, können Sie das Start- und Enddatum in das Feld Upload-Datum eintragen. Das Dateiformat kann dabei der Syntax Tag.Monat.Jahr oder Jahr-Monat-Tag oder Monat/Tag/Jahr entsprechen - die Angabe einer Uhrzeit ist nicht möglich. Wenn Sie nur das Startdatum eintragen, werden alle Dateien seit diesem Zeitpunkt bis heute angezeigt. Ist nur das Enddatum ausgefüllt, werden alle Dateien bis zu diesem Zeitpunkt angezeigt. Filter: Dateiname Die Filterung nach einem Dateinamen konnten Sie bereits oberhalb des Filter-Bereichs einstellen, aber er wird hier der Vollständigkeit halber nochmals aufgeführt. Filter: Autor Wenn Sie nach Dateien suchen, die ein bestimmter Autor hochgeladen hat, können Sie diesen aus dem Auswahlfeld Autor aussuchen. Filter: Dateiendung Wollen Sie nach einem Dateinamen und einer Dateiendung suchen, reicht es nicht aus, nur das Feld Dateiname auszufüllen, da Sie dort ja nur nach einer einzigen Teilzeichenkette suchen. Daher können Sie zusätzlich im Feld Dateiendung nach einer Endung suchen und Dateiname für den eigentlichen Dateityp verwenden. Um zB. nach allen PDF-Dateien mit der Zeichenkette hund im Dateinamen zu suchen, tragen Sie pdf in Dateiendung ein und hund in Dateinamen. So werden Schäferhund.pdf wie auch Hundekuchen.pdf gefunden. Hätten Sie für den Dateinamen nur hund.pdf eingetragen, wäre nur Schäferhund.pdf gefunden worden! Filter: Dateigröße Die Dateigröße kann ähnlich wie das Upload-Datum in einem von-bis-Bereich angegeben werden. So können Sie alle Dateien zwischen X und Ykb Größe anzeigen. Filter: Bildbreite Filter: Bildhöhe Auch die Bildbreite und Bildhöhe lassen sich hier in Pixeln in einem minimalen und maximalen Bereich angeben. Wenn Sie also nach besonders kleinen oder großen Bildern suchen wollen, können Sie diese Einschränkung hier vornehmen. Filter: DPI Die DPI-Angaben einer Bilddatei lassen sich im Eingabefeld DPI filtern. Sollte man also nach einer druckfähigen Bilddatei suchen, könnte man hier 300 angeben. Filter: Laufzeit Bei einer Video- oder Audio-Datei könnte man im Eingabefeld Laufzeit den Bereich der Spieldauer eintragen. Die Angabe erfolgt dabei in Sekunden. Filter: Verknüpftes Datum Wenn Sie nach einer Datei suchen, die zu einem speziellen Zeitpunkt erstellt wurde und in den Meta-Daten einer Datei festgehalten wurde, können Sie im Eingabefeld Verknüpftes Datum danach suchen. Die zeitliche Einschränkung wird im selben Format vorgenommen wie bei der Filterung nach Upload-Datum. Filter: Copyright Suchen Sie Dateien mit einem speziell hinterlegten Urheber, können Sie im Eingabefeld Copyright danach suchen. Teilwörter werden dabei auch akzeptiert. Achten Sie darauf, dass das Copyright ein vom Redakteur optional ausgefülltes Informationsfeld ist und daher nicht zwingend bei jeder Datei verfügbar ist. Filter: Titel, Kurzer Kommentar, Langer Kommentar Die letzten drei Filterfelder Titel, Kurzer Kommentar und Langer Kommentar können ebenfalls Teilwörter enthalten, nach denen Sie in den entsprechend vom Redakteur ausgefüllten Meta-Feldern suchen können.

 

Die verfügbaren Filter-Felder der Meta-Informationen lassen sich mittels der Option Medien-Eigenschaften in der Serendipity-Konfiguration (siehe Kapitel Konfiguration ab Seite Konfiguration) einstellen. Alle dort festgelegten Felder können als Filterkriterium dienen.

Unterhalb des Filter-Bereichs können Sie die Sortierung der Anzeige beeinflussen:

Sortieren nach Über das Auswahlfeld Sortieren nach stellen Sie ein, wie die Bilder innerhalb der Übersicht sortiert werden. Zur Auswahl steht das Upload-Datum, der Dateiname (alphabetisch), der Autorname (alphabetisch), die Dateiendung (alphabetisch), die Bildbreite oder Bildhöhe und zuletzt die Sortierung nach allen konfigurierten Meta-Feldern.

Sortierung Die Sortierungsreihenfolge (absteigend oder aufsteigend) wird über das Auswahlfeld Sortierung festgelegt.

Dateien pro Seite Die letzte Option der Suche gibt an, wie viele Dateien pro Seite in der Übersicht angezeigt werden sollen. Die Auswahl ist auf 8, 16, 50 oder 100 Dateien begrenzt.

Per Verzeichnis Die Option der nächsten Zeile gibt an, ob nur Dateien des ausgewählten Verzeichnissebene, oder alle Mediendateien inklusive der Unterverzeichnisse dargestellt werden sollen. Diese Option ist ungemein hilfreich, wenn Sie über eine gut und verschachtelt sortierte Mediathek verfügen.

 

Ein Klick auf den Button Los! wird die gewünschten Filterkriterien auswerten und danach alle Suchergebnisse in der gewohnten blätterbaren Übersicht darstellen.

4.5.5 - Verzeichnisse verwalten

Verzeichnisse verwalten

Ähnlich wie die Verwaltung der Kategorien (siehe Kapitel Kategorien auf Seite Kategorien) können Schreib- und Leserechte von Mediathek-Dateien verwaltet werden.

Hinter dem Menüpunkt Verzeichnisse verwalten sehen Sie eine Übersicht aller Unterverzeichnisse der Mediathek (uploads-Verzeichnis im Serendipity-Stammverzeichnis).

ml_directories_dm_de.png
Abbildung 4.16: Mediathek: Verzeichnisse verwalten: Neues Verzeichnis anlegen

Neben allen Verzeichnissen, die jeweils wie im Dateisystem verschachtelt untereinander angezeigt sind, sehen Sie drei Buttons zum Bearbeiten, Duplizieren und zum Löschen eines Verzeichnisses.

Ein Klick auf den Button Neues Verzeichnis anlegen öffnet eine Seite, in der Sie den Namen eines neuen Verzeichnisses sowie dessen übergeordnetes Stammverzeichnis aus einem Auswahlfeld wählen können. Wenn Sie danach auf Verzeichnis anlegen klicken, wird Serendipity versuchen, das neue Verzeichnis zu erstellen. Damit dies erfolgreich durchgeführt werden kann, müssen die Zugriffsrechte (siehe Seite Zugriffsrechte) korrekt eingerichtet sein.

ml_directories_new_dm_de.png
Abbildung 4.16a: Mediathek: Verzeichnisse verwalten: Neues Verzeichnis anlegen

Ein erstelltes Verzeichnis kann bearbeitet werden, indem Sie auf das Stift-Icon klicken. In dieser Maske sehen Sie zum einen den Namen des Verzeichnisses und zum anderen zwei größere Auswahlfelder für die Leserechte und die Schreibrechte.

ml_directories_edit_dm_de.png
Abbildung 4.17: Mediathek: Verzeichnisse verwalten: Verzeichnis bearbeiten

Diese Zugriffsrechte bestimmen ausschließlich die Zugriffsmöglichkeiten innerhalb Serendipitys. Wenn Ihre Redakteure allerdings auch per FTP Zugriff auf die Dateien der Mediathek haben, entzieht sich dies Serendipitys Zugriffsmöglichkeiten.

Die Zugriffsrechte in der Mediathek werden auch nicht herangezogen, wenn eine in einem Artikel eingebundene Datei im Frontend angezeigt wird. Der Link für eine eingebundene Datei zeigt direkt auf den Dateinamen und kann außerhalb von Serendipity über den normalen Webserver heruntergeladen werden. Serendipity selbst ist also beim Download der Datei nicht involviert und kann daher auch keine Zugriffsrechte auswerten.[*] Um Bilder nicht über den vollständigen URL-Pfad auszugeben und so Zugriffsrechte abzufragen, gibt es jedoch einen Trick, der auf Seite mdb-by-id erklärt wird. Einzig das Mediathek-Popup und weitere Funktionalitäten für Redakteure werten später die Zugriffsrechte aus und zeigen entsprechend der Rechte eines Redakteurs die ihm verfügbaren Optionen an.

Hat ein Redakteur kein Schreibrecht auf ein Verzeichnis, gilt dies auch für alle darin enthaltenen Dateien. Solche Dateien könnte ein Redakteur daher später nicht löschen. Wenn ein Redakteur auch keine Leserechte in einem Verzeichnis besitzt, wird er derartige Bilder in der Mediathek-Ansicht erst gar nicht angezeigt bekommen.

Die Lese- und Schreibrechte können jeweils für mehrere Benutzergruppen definiert werden, indem Sie die (Strg/Apfel)-Taste gedrückt halten und anklicken. Die Option Alle Autoren gibt ein Verzeichnis für alle Redakteure frei.

Alle Lese- und Schreibrechte gelten ausschließlich für das aktuell bearbeitete Verzeichnis. Etwaige Unterverzeichnisse müssen alle separat konfiguriert werden. Dadurch ist es später möglich, zwar ein Stammverzeichnis für Redakteure zu sperren, aber Unterverzeichnisse gezielt wieder zugänglich zu machen. Wenn Sie im Nachhinein bei einer bestehenden Verzeichnisstruktur Rechte vergeben, möchten Sie vielleicht gerne diese Rechte auch für alle Unterverzeichnisse identisch vergeben. Dafür müssen Sie das Ankreuzfeld Identische Rechte auch auf alle Unterverzeichnisse anwenden aktivieren.

Standardmäßig stehen die Lese- / Schreibrechte auf "0", das heißt "Alle Autoren". Setzen Sie sie aber als Administrator beispielsweise auf Redakteur, gleich "1", können Sie anschließend nicht mehr zurück wechseln, da Sie sich selbst das Recht entzogen haben. Achten Sie also darauf, höherrangige Usergruppen immer mit zu inkludieren, wenn Sie selbst weiterhin darauf Zugriff haben sollen. Und das wollen Sie!

Um ein Verzeichnis zu löschen, klicken Sie auf das Mülleimer Symbol. Sie gelangen danach auf eine Unterseite, die Sie nochmals fragt, ob Sie das Verzeichnis inklusive aller Dateien löschen (sowohl in der Mediathek als auch im Dateisystem) wollen. Wenn Sie einmal Dateien mittels FTP in das zu löschende Verzeichnis (oder eines seiner Unterverzeichnisse) hochgeladen haben, kann es sein, dass sich darin Dateien befinden, die die Mediathek noch nicht synchronisiert/importiert hat. Standardmäßig löscht Serendipity jedoch nur alle Dateien, die in der Mediathek auch verzeichnet sind. Wenn Sie die Option Alle Dateien dieses Verzeichnisses löschen aktivieren, wird Serendipity auch alle dem System unbekannten Dateien zu löschen versuchen. Auch hier gilt wieder, dass Serendipity nur Dateien löschen kann, auf die es auch Schreibzugriff hat.

ml_directories_del_dm_de.png
Abbildung 4.18: Mediathek: Verzeichnisse verwalten: Verzeichnis löschen
4.5.6 - Vorschauen erneuern

Vorschauen erneuern

Mit Serendipity 2.0 rückte dieser administrative Teil der Mediathek an sich, in die Wartungs Sektion der Backend: Einstellungen, genauer Wartung: Vorschauen erneuern.

Wie am Anfang des Kapitels Mediathek auf Seite Mediathek erklärt, muss Serendipity zwischen den Dateien innerhalb der Verzeichnisstruktur auf dem Server und einer Datenbanktabelle mit Meta-Informationen synchronisieren.

Wenn Sie also Dateien mittels FTP in das Mediathek-Verzeichnis uploads hineinkopieren, wird Serendipity davon erst einmal nichts mitbekommen. Damit Serendipity einen Abgleich zwischen Dateien auf dem Server und der Mediendatenbank durchführen kann, nutzen Sie den Menüpunkt Vorschauen erneuern.

Wenn Sie auf diesen Menüpunkt klicken, wird Serendipity alle Dateien und Unterverzeichnisse des uploads-Verzeichnisses durchgehen und prüfen, ob die Datei bereits (oder noch) in der Mediendatenbank vorhanden ist. Etwaige gelöschte Dateien auf dem Server werden daraufhin aus der Mediathek entfernt und neue Dateien importiert.

Auch schon der normale Aufruf der Mediathek selbst kann ihre Daten automatisch synchronisieren (siehe Seite MDB-Synchronisation), ist aber mit der genannten Option nicht zu hundert Prozent identisch. Es kann daher ratsam sein, dann und wann die erste Option der Mediathek Wartungsaufgaben ("Behalte alle vorhandenen Vorschaubilder") laufen zu lassen, damit auch kleinste Unebenheiten bereinigt werden und Sie über diese auch informiert werden.

Für jede gelöschte oder neu hinzugefügte Datei wird daraufhin ein Hinweis auf die durchgeführte Aktion ausgegeben. Die Meldung Fertig (xx Bilder synchronisiert) am Ende des Vorgangs gibt genaue Information darüber, wie viele Dateien bearbeitet wurden.

Fehlerhafte und nicht lesbare Dateien werden ebenfalls in dieser Ausgabe angezeigt, so dass Sie diese Dateien möglicherweise manuell via FTP löschen oder verändern müssen.

Wenn Sie besonders viele Dateien und Verzeichnisse in der Mediathek gespeichert haben, kann die Ausführung dieser Funktion möglicherweise sehr lange dauern oder gar zu Server/PHP-Timeouts führen. Wenn dies passiert, sollten Sie entweder überlegen, alte Dateien in der Mediathek zu löschen, oder Sie können alternativ in der Serendipity-Konfiguration die automatische Synchronisierung der Mediathek aktivieren (siehe Seite MDB-Synchronisation). Sobald die automatische Synchronisierung aktiviert ist, werden extern hochgeladene Dateien beim Betrachten der Mediathek automatisch importiert. Dies beansprucht weniger Zeit, da bei einem etwaigen Verbindungsabbruch an der Stelle fortgefahren werden kann, bei der zuletzt abgebrochen wurde. Ein Löschen von bereits in Artikeln benutzten Mediendateien ist nur bedingt anzuraten, denn diese bedingt ein sauberes System. Die Fehlerquellen - gerade in alten Blogs - mit alten Fehlern und weiteren Ungereimtheiten machen dies zu einem gewagten Spiel.

Ein weiteres Feature der Funktion Vorschauen erneuern ist, dass alle Vorschaugrafiken von Bildern überprüft und ggf. neu erstellt werden. Falls Sie also versehentlich eine Vorschaugrafik namens .serendipityThumb auf dem Server gelöscht haben, kann diese Datei immer neu erstellt werden. Wenn Sie in der Serendipity-Konfiguration (siehe Seite Vorschaubildgröße) die Auflösung der Vorschaugrafiken einmal verändert haben (standardmäßig 400 Pixel), könnten sämtliche Vorschaubilder mit der neuen Auflösung neu berechnet werden.

Die automatische Synchronisierung kann Änderungen in der Vorschaubild-Auflösung nicht automatisch durchführen. Wenn also Ihre Mediathek zu groß geworden ist, um die Ausführung der Funktion Vorschauen erneuern erfolgreich zu beenden, müssen Sie die Vorschaubilder leider manuell mittels anderer Bildverwaltungsprogramme verkleinern. Allerdings kann die genannte Funktion durchaus mehrfach aktualisiert werden wenn eventuelle Fehler auftreten oder es gar einen Abruch aus Zeitüberschreitung gab, denn es werden ja jeweils nur die neueren oder fehlenden Bilder synchronisiert.

Mit Serendipity Styx wurden schon allerlei Bugs und Ungereimtheiten gefixt, die die fehlerfreie Funktion der Mediendaten-Synchronisation, und/oder die korrekte Konvertierung der Einträge die bereits Mediendaten enthielten, behinderten. Es ist einfach ein komplizierter Prozess und jede weitere Neuerung macht es noch komplizierter. Und so finden sich in den Randbereichen bis heute Prozesse, die weiter und immer weiter optimiert werden müssen.

Auch wurde ein neuer Menüpunkt Konvertiere alte Vorschaubild-Namen hinzugefügt, der es ermöglicht, einen Abgleich und Umschrieb der Mediendaten auf eine veränderte Vorschaubild-Endung durchzuführen, falls Sie sich mittendrin entscheiden sollten, die Serendipity .serendipityThumb oder Styx .styxThumb Standardeinstellung des Vorschaubild-"Präfixes" zu verändern. Diese Option ist solange nicht zu sehen, wie das bisherige thumbSuffix nicht geändert wurde. Wenn es geändert wurde, muss schon mindestens eine neue Mediatheksdatei neu damit erstellt worden sein damit sie in der Wartung und den Optionen der Bildersynchronisation auftaucht. Sie konvertiert bestehende Thumbnails, die nicht nach dem aktuellen thumbSuffix-Schema benannt sind: fooThumb (als Beispiel), in der Datenbank, im Dateisystem und bereits in Einträgen verwendet, in das gleiche Suffix-Benennungsschema.

Das sollten Sie aber nicht unbedarft tun, denn die Möglichkeiten eines riesigen Kuddelmuddels sind groß. Ein wenig Erfahrung und vielleicht das eine oder andere Backup der Mediathek, sowohl real im Filesystem als auch der Datenbank, können nicht schaden, um eventuelle Schäden zu verhindern. Sie können ohne weiteres mit zwei verschiedenen Thumbnail Auszeichnungen leben, wenn es sich durch ein Update eines alten Blogs so ergeben hat. Nur in einem Fall ist die Synchronizität im Vorwege wirklich erforderlich, wenn Sie die "Erneuere alle [...]" Option laufen lassen wollen. Dann müssen Sie die Thumbname Präfix Auszeichnung überall gleich haben! Ansonsten laufen die Find und Replace Anweisungen in ihren Blogeinträgen möglicherweise Amok.

Der Punkt "Erstelle/Lösche alle zusätzlichen Picture-Format Variationen" ist die Aufgabe gedacht, wenn Sie alle Bild Variationen auf einmal löschen und danach neu erstellen lassen wollen. Je nach Zustand (haben oder nicht haben) wird aus diesem Punkt ein "Löschen" oder "Erstellen". Für das Erstellen gelten natürlich alle bisher gemachten Einschränkungen und Bedachtsamkeitem bezüglich Auslastung und Fehlerquellen, insbesondere wenn Sie die AVIF Option aktiv gesetzt haben. Löschen Sie ein Bild mit den üblichen dafür vorgesehenen Werkzeugen, werden natürlich auch dessen Variationen gelöscht. Das ist also hier nicht gemeint!

4.6 - Aktivität

Aktivität

Der Menübereich Aktivität umfasst alle Möglichkeiten verschiedenster Aktivitäten für die Backend Administration, welche nicht eindeutig nur aus dem Backend erstellte Formate für Texte bzw, Medien beinhalten. Viele Plugins können ihre Backendaufgaben daher hier einfügen. Die Kommentare wurden ehedem im Eintracks/Inhaltsbereich eingeordnet, doch sind sie eine Art Zwitterwesen, da sie zwar relativ eindeutig zu den Eintragsinhalten gehören, doch andererseits von Außen erstellt werden und hier nur die Aufgabe vorliegt sie effektiv zu administrieren. Außerdem wäre dieser Bereich sonst recht leer, wenn sich noch keine zusätzlichen Pluginaufgaben hier eingelinkt hätten. Auch passen sie inhaltlich verzahnt eben besonders zum Spamblock Plugin, das hier ebenso administriert wird.

4.6.1 - Kommentare

Kommentare

Ähnlich wie die Übersichtsseite Einträge bearbeiten enthält die Seite Kommentare eine Übersicht aller übermittelten Kommentare und Trackbacks Ihrer Besucher.

Von dieser Oberfläche aus können Sie Kommentare löschen, freischalten, überarbeiten oder auch nach speziellen Kommentaren suchen.

Systemmeldungen, wie erfolgreiches Moderieren, Löschen, oder Fehlermeldungen, werden in den Systemfarben für diese Ereignisse am Anfang der Seitenliste oberhalb des Kommentare-Titels ausgegeben.

Die Kommentar Liste:

Der Inhaltsbereich zeigt die Kommentare in einzelnen Boxen untereinander an. Direkt oberhalb dieser Boxen befindet sich ein Informationstext, der die Anzahl der dargestellten Kommentare und die Nummer der aktuellen Seite angibt. Die Möglichkeit zum Blättern mittels Weiter und Zurück, Anfang und Ende befindet sich, wie bei solchen Listendarstellungen üblich, sowohl oberhalb als auch unterhalb der Kommentarauflistung, wenn genügend Listeneinträge vorhanden sind.

comments_fill_dm_de.png
Abbildung 4.8: Aktivität: Kommentare (siehe auch übernächste Abbildung 4.9-sx für Serendipity Styx)

Die erste Zeile jeder Box zeigt Informationen über den Autor, zu welchem Artikel der Kommentar gehört und wann er erstellt wurde. Die Detailangaben zum Autor und seiner Verbindung zum Artikel werden über eine ausklappbare Box über den Informations-Button am Ende dieser Informationszeile realisiert und klappen unterhalb dieser auf. Jede Kommentarbox enthält folgende Angaben:

Überschrift Der Bezug zu einem Artikel ist klickbar und führt ins Frontend Ihres Blogs. Nicht freigeschaltete Kommentare und Trackbacks werden durch eine graunterlegte Markierung im rechten oberen Teil der Kommentarbox vom Rest abgehoben.

Autor Der Name des Verfassers eines Kommentars wird gleich am Anfang dargestellt.

Detailbox Autor: Wenn das Spamblock-Plugin (siehe Seite spamblock) installiert ist, wird in der Detailbox neben dem Namen des Autors ein Symbol mit durchstrichenem Kreis, im folgenden Blacklist-Symbol genannt, angezeigt. Ein Klick auf dieses Symbol wird in Zukunft Kommentare des gleichnamigen Autors in eine Blacklist einfügen und abweisen. Erscheint ein Erfolgs-Symbol an dessen Stelle, wird der Name bereits gefiltert, und ein erneuter Klick hebt diesen Filter wieder auf. E-Mail: Die E-Mail-Adresse eines Kommentators wird neben E-Mail angezeigt. Auch hier kann bei aktiviertem Spamblock-Plugin die E-Mail-Adresse in einen Filter aufgenommen werden. IP: In der zweiten Zeile der Kommentarbox wird die IP-Adresse des Kommentators angezeigt. Eine IP-Adresse identifiziert einen Benutzer im Internet beim Aufruf einer Seite. Sollte Sie einmal rechtswidrige Inhalte in einem Kommentar auffinden, kann eine Strafverfolgungsbehörde mit Hilfe dieser IP möglicherweise den wahren Täter aufspüren. Meist werden für derartige Straftaten aber offene Proxies eingesetzt, die die eigene IP-Adresse des Täters verschleiern, so dass er sozusagen nur über einen Deckmann auf Ihren Server zugreift. URL: Die Homepage eines Kommentators wird unterhalb seiner E-Mail-Adresse angezeigt. Ein Klick hierauf öffnet die Homepage direkt in einem neuen Browserfenster. Auch die URL kann als Filter für das Spamblock-Plugin durch Klick auf das Blacklist-Symbol gesetzt werden. Referrer: Wenn ein Besucher Ihre Webseite aufruft, übermittelt sein Browser üblicherweise die URL der zuletzt aufgerufenen Webseite. Wenn ein Besucher über eine Suchmaschine den Weg zu Ihnen findet, gibt der sogenannte Referrer Auskunft darüber, nach welchen Begriffen er gesucht hat. Möglicherweise ist es also für Sie interessant zu erfahren, von welcher Webseite ein Besucher zu Ihnen kam und dann einen Kommentar hinterlassen hat. Genau diese vorherige Webseite wird in der Kommentarbox beim Punkt Referrer eingebunden, ein Klick darauf öffnet die entsprechende Webseite. Wenn ein Besucher keine vorherige Webseite besucht hat, ist in diesem Feld meistens die URL des kommentierten Artikels enthalten.

Kommentar Der eigentliche Text, den der Besucher als Kommentar (oder Trackback) hinterlassen hat, wird im Hauptteil der Box angegeben. Damit zu lange Texte nicht den Rahmen sprengen, und die Kommentar-Vorschauzeile möglichst eine Kurzzeile bleibt, werden sie nach ~72 Zeichen mit einem ... abgekürzt. Wenn gekürzt wurde, also tatsächlich mehr Text vorhanden ist, wird ein neuer Aufklapp-Button für die vollständige Anzeige ans Ende der Kommentar Symbolleiste am rechten Rand der untersten Zeile hinzugefügt (siehe übernächste Abbildung 4.9-sx für Serendipity Styx). Solche Kürzungen werden für die Einhaltung des Darstellungsdesigns an mehreren Stellen vorgenommen und konnen auch schon nach ~25 Zeichen erfolgen. Da dies unverifizierte Eingaben aus dem Internet sind, werden all diese Angaben zu ihrer eigenen Sicherheit mittels serendipity_specialchars() "unbrauchbar" gemacht, so dass kein ausführbarer Code weitergegeben, dargestellt, oder ausgeführt wird. Solche Einträge werden als reiner Textstring angezeigt. Aktive HTML-Kommentaren werden mittels eines roten …</> Abschlußsymbols kenntlich gemacht.

Symbolleiste Unterhalb jedes Kommentars befindet sich eine Symbolleiste mit Buttons. Die Buttons richten sich dabei danach, ob das Objekt ein Kommentar oder ein Trackback ist, ob es freigeschaltet, versteckt oder moderiert ist und ob der Text länger als ~72 Zeichen ist oder nicht. Bei noch nicht freigeschalteten Beiträgen erscheint der Button als Like-"Bewilligen"-Symbol. Ein Klick darauf wird den gewählten Beitrag freischalten. Ist ein Kommentar bereits freigeschaltet, erscheint der Button als Dis-Like-"Moderieren"-Symbol mit dem abgesenktem Daumen, um den Kommentar erneut zu verstecken. Da es manchmal vorkommen kann, dass man einen Kommentar gerne behalten, aber eben auch nicht anzeigen lassen möchte, und Wert darauf legt, dass ein solcher nicht die Liste der unbewilligten und zu bearbeitenden Kommentare unnötig aufbläht, wurde der "Bewilligen, aber versteckt" Button (siehe Abbildung 4.9-sx) über das Auge-"Inaktiv/Aktiv setzen"-Symbol eingeführt. Bei Beiträgen, die länger als ~72 Zeichen sind, wird der Button ganz anzeigen als nach rechts weisender kleiner Dreieckspfeil eingeblendet. Per Klick wird der vollständige Kommentartext angezeigt, ein erneuter Klick reduziert die Ansicht wieder auf die gekürzte Fassung. Desweiteren gibt es Buttons, die immer verfügbar sind. Die Lupe (Anzeigen) öffnet bei einem Klick ein neues Fenster, in dem der Kommentar im Kontext des Artikels im Frontend dargestellt wird. Das Stift-"Bearbeiten"-Symbol öffnet wie immer eine Oberfläche, in der ein Kommentar von Ihnen bearbeitet und redaktionell verändert werden kann. edit_comment_plain_dm_de.png Abbildung 4.9: Aktivität: Kommentar bearbeiten mit PLAIN TEXT Editor In dieser Oberfläche können Sie wie beim Kommentieren im Frontend die bekannten Felder ändern, die mit den Eingaben des Besuchers vorausgefüllt sind. Ein Klick auf Kommentar abschicken speichert die von Ihnen überarbeitete Fassung des Kommentars. Achten Sie bei der Moderation von Kommentaren darauf, dass dies möglicherweise von Besuchern als Zensur aufgefasst werden könnte. Zensur Überarbeiten Sie also einen Kommentar eines fremden Users wirklich nur dann, wenn Sie entweder darauf hinweisen oder es unabdingbar ist. edit_comment_html_dm_de.png Abbildung 4.9b: Aktivität: Kommentar bearbeiten mit HTML Editor HTML Kommentare - bzw den Rich-Text-Editor - können Sie für das Frontend und das Backend in der Konfiguration - Generelle Einstellungen per Konfigurationsoption erlauben. Die notwendigen Sicherheitsmaßnahmen sind getroffen, um dies als eine wählbare Alternative für größere Nutzerfreundlichkeit zu erlauben. Der Button mit dem Mülleimer-Symbol entfernt einen Kommentar vollständig aus der Datenbank. Wenn sich bereits andere Kommentare auf einen zu löschenden Kommentar beziehen (also im Frontend verschachtelt darunter dargestellt werden), wird ein Kommentar beim Löschen erst nur gekürzt. Der Text wird ausgeschnitten, aber die Grunddaten des Kommentars bleiben intakt, um die Verschachtelung nicht durcheinander geraten zu lassen. Erst wenn ein derartiger Kommentar ein zweites Mal gelöscht wird, werden die Bezüge zerstört und der Kommentar komplett entfernt. Die Symbolleiste stellt auch den Antwort-Button als Chat-Symbol zur Verfügung. Dies ermöglicht Ihnen, direkt zu einem internen Popup-Fenster zu springen, um den betreffenden Text direkt mit einer Antwort kommentieren zu können. Das Eingabefeld Antwort zu ist dabei korrekt mit dem betreffenden Kommentar vorausgefüllt, ebenso Ihr Name und Ihre E-Mail-Adresse.

Innerhalb jeder Kommentarbox befindet sich linksseitig eine HTML Checkbox. Wenn diese ausgewählt wird, kann man die markierten Kommentare über den Button "Markierte Kommentare" Löschen am Ende der Seite entfernen. Der Button Auswahl umkehren dreht die Markierungen um, so dass vorher ausgewählte Kommentare nun nicht mehr gewählt sind und stattdessen alle anderen. So lässt sich besonders leicht Spam herausfiltern, da eine ganze Seite mit dargestellten Kommentaren durch einen Klick auf Auswahl umkehren markiert und gelöscht, oder bewilligt werden kann.

Die Serendipity Styx Kommentarliste:

comments_snip_dm_de.png
Abbildung 4.9-sx: Aktivität: Kommentarliste - Detailansicht

Ob die einzelne Kommentar-Box einen Trackback, einen Pingback oder einen User-Kommentar darstellt, ist in Serendipity Styx über eine verschiedenfarbene Belegung der unteren linken Ecke realisiert und Kommentare werden als C, Trackbacks als T und Pingbacks als P gekennzeichnet. Ob der Kommentar von Ihnen selbst als Blogautor geschrieben wurde, ist mittels eines kräftig blauen diagonalen Dreiecks in der rechten oberen Ecke ausgewiesen. Allgemein wirkt das Design der Serendipity Styx Kommentarliste aufgeräumter und die wesentlichen Komponenten sind schneller erfassbar und strukturierter angeordnet.

Die Kommentar Filterung:

Ebenfalls analog zu der Oberfläche Einträge bearbeiten kann die Darstellung der Kommentarübersicht nach bestimmten Kriterien gefiltert werden:

Autor In das Feld Autor können Sie den Namen eines Kommentators eingeben, nach dessen Kommentaren Sie suchen möchten. Dabei wird ein Autorenname unabhängig von Groß- und Kleinschreibung nach Teilwörtern durchsucht. Eine Suche nach ann wird also sowohl Kommentare von Hanni als auch von Nanni darstellen.

E-Mail Um nur Kommentare von Benutzern mit einer bestimmten E-Mail-Adresse anzuzeigen, können Sie deren Adresse in diesem Eingabefeld eintragen. Hierbei gilt dasselbe Suchmuster wie bei der Suche nach Autor.

URL Um nur Kommentare von Benutzern mit einer speziellen URL-Adresse anzuzeigen, können Sie diese URL eintragen. Hierbei gilt dasselbe Suchmuster wie bei der Suche nach Autor.

IP Um nur Kommentare von Benutzern mit einer speziellen IP-Adresse anzuzeigen, können Sie diese hier eintragen. Hierbei gilt dasselbe Suchmuster wie bei der Suche nach Autor. Bei der Angabe von IPs empfiehlt es sich daher, immer die vollständige Zahlenreihe einzugeben und nicht nur Teile davon.

Inhalt Hier können Sie Kommentare nach dem Auftreten bestimmter Wörter im Inhaltstext des Kommentars durchsuchen. Es gilt dasselbe Suchmuster wie bei der Suche nach Autor.

Referrer Die URL der Webseite, auf der sich ein Kommentator zuletzt befunden hat, kann in dem Eingabefeld Referrer eingetragen werden. Auch hier können Teilwörter wie bei der Suche nach Autor eingetragen werden.

Kommentare Das Auswahlfeld Kommentare ermöglicht es, mehr als nur 10 Kommentare pro Seite anzuzeigen. Die Auswahl reicht hier von 10, 20 und 50 bis hin zu allen Kommentaren. Achten Sie darauf, dass bei der Anzeige aller Kommentare die HTML-Seite sehr groß werden kann und Ihren Browser sehr lange beschäftigen könnte.

Zeige Über dieses Auswahlfeld kann man einstellen, ob man in der Kommentarübersicht noch freizuschaltende Kommentare/Trackbacks sehen möchte, nur freigeschaltete oder Kommentare/Trackbacks beiden Typs.

Typ Das Auswahlfeld schränkt ein, ob man nur Kommentare, nur Trackbacks oder beide Sorten von Kommentaren dargestellt bekommen möchte.

 

Diese Filteroptionen werden durch einen Klick auf Los! gesetzt und beim Blättern der Folgeseiten auch angewendet. Falls Sie das Spamblock-Plugin verwenden, können Sie übrigens durch einen Klick auf Anti-Spam-Maßnahmen konfigurieren direkt zu dessen Konfigurationsoberfläche springen.

Kommentarbenachrichtigungen

Wenn in Ihrem Blog ein Besucher einen neuen Kommentar hinterlässt, wird abhängig von den Einstellungen des Artikels und Ihrer Eigenen Einstellungen eine E-Mail an Sie gesendet, um Sie darüber zu benachrichtigen.

Innerhalb der E-Mail sehen Sie dann eine Übersicht über die Identität des Kommentators, den Kommentartext und einen Link zu dem Artikel in Ihrem Frontend.

Wenn Beiträge moderiert werden, müssen Kommentare von Ihnen erst freigeschaltet werden. Dazu dienen die drei Links am Ende der E-Mail: Ansehen, Löschen und Bewilligen. Diese Links führen direkt ins Frontend zu dem gewünschten Artikel und werden den Kommentar anzeigen, löschen oder freischalten. Dies funktioniert jedoch nur, wenn Sie sich vorher im Backend eingeloggt haben oder noch einen Login-Cookie besitzen. Andernfalls könnte jeder Besucher Ihres Blogs selbständig Kommentare freischalten.

Natürlich können Sie den Kommentar auch von der Kommentar-Verwaltungsoberfläche aus freischalten oder auch löschen.

Sobald ein Kommentar freigeschaltet wird, sucht Serendipity danach, ob sich andere Kommentatoren desselben Beitrags mit der Option Bei Aktualisierung dieser Kommentare benachrichtigen eingetragen haben. An alle diese Personen wird dann eine E-Mail verschickt, die sie über den Eingang eines neuen Kommentars informiert. Innerhalb der E-Mail befindet sich für jeden Empfänger die Möglichkeit, einen derart abonnierten Artikel auch wieder abzubestellen.

4.6.2 - Spamschutz

Spamschutz

Der Menüpunkt Spamschutz verlinkt direkt in die Konfiguration des serendipity_event_spamblock Plugins (Spamschutz). Bitte lesen Sie dort nach, welche vielfältigen Möglichkeiten des Spamabwehr und der Spambehandlung es in Serendipity gibt. Dieses Plugin sollte immer aktiviert sein!

Serendipity Styx hat diesen extra Menüpunkt entfernt, ist er doch als Button unter Kommentare und als Plugin Konfigurationseinstellung weiterhin zugänglich; also an den Orten die nötig sind um konkrete Einstellungen zur Laufzeit oder zur Installation anzupassen.

4.6.3 - Option ein-/ausblenden

Option ein-/ausblenden

Das Symbol vom Menüpunkt Option ein-/ausblenden dient dem schnellen Überblick und klappt alle zur Zeit gezeigten Kommentare der Liste direkt auf oder zu, so wie es der Button mit dem rechts-/himmelweisendem Dreieck es auch für jeden einzelnen Kommentar tun kann.

4.7 - Einstellungen

Einstellungen

Der Menübereich Einstellungen fasst die Möglichkeiten zusammen, um Ihr Blog zu individualisieren. Zum einen können Sie hier das Template Ihres Blogs wählen, zum anderen Ihre eingesetzten Plugins verwalten. Die weiteren wichtigen Unterpunkte unter dem Seitenleisten Hauptmenüpunkt: Einstellungen, sind in diesem Buch unter Einstellungen (Administration) beschrieben.

4.7.1 - Themes verwalten

Themes verwalten

Bei Serendipity sind die Begriffe Style, Theme und Template synonym verwendet. Alle drei Begriffe bezeichnen eine Sammlung von Dateien, die das Layout Ihres Frontends (und auch in begrenztem Maße des Backends) bestimmen.

Alle Templates werden im Verzeichnis templates verwaltet. Dort befindet sich pro Template ein Unterverzeichnis, das eine Sammlung von Dateien enthält (siehe Kapitel templatefiles ab Seite templatefiles).

Um eigene oder fremde Templates in Serendipity einzubinden, müssen sich die Template-Dateien in diesem Unterverzeichnis befinden. Erst dann kann Serendipity über den Menüpunkt Themes auf diese Verzeichnisse zugreifen.

Eine Template-Datei stellt dabei bestimmte Elemente (Einträge, Übersichten, Kommentare ...) in einfachem HTML-Format dar. Innerhalb der Template-Datei (*.tpl) werden Platzhalter verwendet, die bei der Ausführung von Serendipity durch eigentliche Inhalte ersetzt werden. Für diese Platzhalter-Logik verwendet Serendipity eine Software-Bibliothek namens Smarty [*] https://www.smarty.net/. Smartys Aufgabe ist es, die Template-Dateien nach Platzhaltern zu durchsuchen, zu kompilieren (in PHP-Code umwandeln) und danach auszugeben. Dabei kann Smarty weitaus mehr, als nur Variablen zu ersetzen: Smarty bietet Kontrollstrukturen (IF-Abfragen), Schleifen und PHP-Funktionsaufrufe an. Dies alles kann von Template-Entwicklern benutzt werden, um ganz individuelle Darstellungen des Frontends zu erreichen, und wird in Kapitel Smarty-Templates ab Seite Smarty-Templates ausführlich erklärt.

Ein Klick auf den Menüpunkt Themes stellt eine Liste aller verfügbaren Templates dar. Dabei werden auch kleine Vorschaubilder zu den Themes untereinander angezeigt, die einen Eindruck vermitteln, wie Ihr Frontend später aussehen könnte.

themes_core_dm_de.png
Abbildung 4.19: Einstellungen: Themes verwalten

Jede Template-Box enthält dabei als Überschrift den Namen des Templates und Informationen über den Autor, das Erstellungsdatum und ob eine Eigene Admin-Oberfläche vorhanden ist. Zu einigen Templates wird Ihnen auch ein größeres Vorschaubild angeboten, wenn Sie auf das Vorschaubild klicken.

Um ein Template zu aktivieren, klicken Sie einfach auf den Installieren-Button unterhalb der Vorschau. Daraufhin wird das Template aktiviert, und wenn Sie das Frontend nun öffnen (Zurück zum Blog), werden Sie das neue Layout schon betrachten können. Je nach eingesetztem Browser könnte es notwendig sein, dass Sie den Browser neu starten oder den Browsercache leeren müssen, bevor die Änderungen am Layout bei Ihnen sichtbar sind. Dies könnte erforderlich sein, da das Design zum Teil von der geladenen Stylesheet-Datei bestimmt wird, die aus Geschwindigkeitsgründen von vielen Browsern zwischengespeichert wird.

Jede Template-Box enthält einen Informations-Button, mittels dem nützliche Informationen zum Theme, wie Autor, letztes Aktualisierungsdatum, Angaben zu einer eigenen Konfigurationsdatei, oder sogar einer eigenen Admin-Oberfläche ausgegeben werden. Ebenso kann diese Ausgabe eine Zusammenfassung der Möglichkeiten des Themes und/oder sogar zusätzlich eine Beschreibung des eigenen Backends oder überhaupt seiner Eigenschaften enthalten. Dies ist mit Serendipity Styx grundlegend erweitert worden, ebenso wie die Möglichkeit die Informations-Texte nach der eingestellten Sprache auszugeben, soweit diese schon übersetzt wurde. Siehe: lang_info_en.inc.php und analog für Deutsch lang_info_de.inc.php etc. ebenso wie im UTF-8 Verzeichnis des Themes.

Die mitgelieferten Themes sind in drei Kategorien eingeteilt. Die ersten beiden beschreiben die aktuell ausgewählten Themes für das Frontend und das Backend. Darunter befindet sich die Sektion der empfohlenen Themes, die in ihrer Mehrheit heutigen Erfordernissen entsprechen oder sonstwie als herausragend angesehen werden. Darunter sind alle anderen, wie auch einige Besondere, wie ein default-php oder auch default-xml Template, oder Beispiele für Engine Templates.

Die Serendipity Styx 3.x Series hat dieses Konzept der empfohlenen Themes wieder verworfen und vereinfacht. Die mitgelieferten Themes heißen nun einfach "Kern Themes"; die per Spartacus hinzugefügten "Verfügbare Themes".

Diese mitgelieferten Kern Themes bestehen zum Teil aus den Standard Themes der verschiedenen Jahre und Revisionen, wie das "pure" Theme 2020/22, das "2k11" aus 2011/13, usw., bis hin zum originären "default" Theme das für die Zugriffs-Kaskade in der Datei-/Template-Suche einen besonderen Platz als Endpunkt einnimmt. Zum anderen Teil aus möglichen Standard Derivaten (wie "Next"), verschiedenen Framework-Themes ("bootstrap4" oder "skeleton"), Besonderheiten, wie dem PHP-Template Beispiel Theme, und weiteren interessanten Engine Themes, die als Beispiele für eigene Versuche gelten können. Ihnen gemein ist, dass sie mit den Styx Revisionen kontinuierlich gepflegt wurden.

Weitere Themes werden nur geladen und angezeigt, wenn Sie Spartacus dazu verwenden und die erweiterte Theme Option in dessen Konfiguration aktiviert haben. Per default macht das keinen Sinn, da es viele Themes auf Spartacus gibt, die schon sehr lange kein grundlegendes Update mehr erfahren haben. Die Aktivierung dieser Option kann manch schwache Systeme, auf Grund der Menge der zu verarbeitenden Information beim ersten Laden dieser Seite, durchaus kurz außer Gefecht setzen. Die Empfehlung lautet daher, sich erst einmal an die empfohlenen Themes zu halten, bis man genügend Vertrautheit mit den Gegebenheiten erlangt hat.

Durch das Konzept der webP Bild-Variationen mit Styx 3.0 und der zum Teil erheblichen Reduzierung der Datei Größe, gilt obige Warnung heute nur noch bedingt. Ebenso wurden all diese alten Themes auf Funktionalität und Kompatibilität getestet und soweit generalüberholt bzw. ergänzt, dass sie unter neuen Styx Versionen wenigstens funktionieren. Tauglich für heutige Mobilgeräte sind, und/oder über ein vollständiges Responsives Verhalten verfügen, dennoch nur wenige!

4.7.2 - Template-Optionen

Template-Optionen

Seit Serendipity 1.1 besteht für Templates die Möglichkeit, eigene Optionen zu konfigurieren. Das bedeutet, dass ein Template individuell entscheiden kann, was für zusätzliche Möglichkeiten und Darstellungsarten Sie gerne aktivieren möchten.

theme_config_pure_dm_de.png
Abbildung 4.20: Einstellungen: Template-Optionen des Standard Themes pure

Wenn Sie ein Template ausgewählt haben, das diese Optionen bereitstellt, sehen Sie einen zusätzlichen Bereich im ersten Abschnitt des Styles verwalten-Menüpunktes. Nur wenige der von Serendipity mitgelieferten Templates unterstützen diese Optionen. Das Serendipity (pure) Standard-Template bietet z. B. diese Template-Optionen an, um den Inhalt der zusätzlichen Navigations-Links im Frontend einstellen zu können.

Ist dieses Template gewählt, so befinden sich im oberen Bereich jeweils zwei Eingabeboxen pro Menüpunkt. Über diese Eingabeboxen können Sie den jeweiligen Link eines Menüpunkts im Frontend bestimmen und festlegen, wie der Text des Menüpunktes lauten soll.

Andere Templates, die via Spartacus (siehe Seite Spartacus) bezogen werden können, bieten Template-Optionen für weitaus fortgeschrittenere Konfigurationsmöglichkeiten, die Sie z. B. zwischen mehreren Farbvarianten wählen lassen oder auch bestimmen, wie die Inhaltsbreite festgelegt wird.

4.7.3 - Besondere Templates

Besondere Templates

Bei Serendipity gibt es eine kleine Zahl besonderer Templates, die Sie nur in Sonderfällen aktivieren sollten. Dies sind:

PHP Engine (Dev) Das Template PHP Engine (Dev) benutzt eine vom Standard abweichende Template-Engine. Anstelle von Smarty kommt hier PHP-Syntax zum Einsatz. Dieses Template ist nur für Entwickler gedacht und kann ev. zu Fehldarstellungen des Frontends führen, wenn es ohne weitere Modifikationen eingesetzt wird. Serendipity Styx hat dieses besondere Template ausführlicher ausgearbeitet.

XML Engine (Dev) Auch das Template XML Engine (Dev) benutzt eine vom Standard abweichende Template-Engine. Hier kommt XSLT zum Einsatz, und auch dieses Template kann ohne weitere Anpassung die Darstellung des Frontends unbenutzbar machen. Für beide genannten Templates gilt, dass der Namenszusatz Dev für Developer (Entwickler) steht und daher auch nur von dieser Zielgruppe benutzt werden sollte.

Newspaper Blog Dieses Template existiert eher nur noch aus historischen Gründen und stammt aus einer Zeit, in der Serendipity-Templates noch nicht mittels Smarty-Syntax erstellt wurden. Dementsprechend erhalten Sie die Warnung: Hinweis: Das aktuelle Template verwendet eine ältere Methode der HTML-Erzeugung. Falls möglich, bitte das Template auf die Nutzung von Smarty optimieren. wenn das Template aktiviert wurde. Im Grunde genommen soll dieses Template also nur demonstrieren, dass auch ganz alte Templates mit Serendipity noch grundsätzlich funktionstüchtig sind.

4.7.4 - Plugins verwalten

Plugins verwalten

Das Herzstück des Serendipity-Systems zur Erweiterung des Blogs ist der Menüpunkt Plugins.

Als Plugin bezeichnet man eine eigenständige PHP-Datei, die zusätzliche Funktionalität in das System "stöpselt". Das Aktivieren eines Plugins erfolgt komfortabel über eine Verwaltungsoberfläche, Sie müssen also selber keine Dateien bearbeiten oder Kenntnisse des Systems haben.

Ein Plugin hat zudem den Vorteil, dass bestimmte Funktionen so einfach optional nachgerüstet werden können. Für viele Benutzer ist möglicherweise ein Umfrage-Modul interessant, während andere Benutzer damit gar nichts anfangen können. Da liegt es nahe, diese optionale Funktionalität so loszulösen, dass nur diejenigen die Komponente installieren, die sie auch benötigen. Das hält das Grundsystem schlank und macht es einfacher wartbar. Durch die Auslagerung von Code in Plugins können auch kleine Bestandteile des Blogs einzeln aktualisiert werden. Wenn eine neue Version einer Komponente veröffentlicht wird, müssen Sie also nicht direkt das ganze Blogsystem aktualisieren.

plugins_ev_dm_de.png
Abbildung 4.21a: Einstellungen: Plugins verwalten (Ereignis)

Bei Serendipity gibt es zwei verschiedene Arten von Plugins. Seitenleisten-Plugins stellen Inhalte und Funktionen in der Seitenleiste eines Blogs im Frontend dar. Ereignis-Plugins sind interne Funktionen von Serendipity, die Anpassungen des Kernsystems ermöglichen und sich nicht nur im Frontend, sondern auch im Backend auswirken können. Ein Seitenleisten-Plugin sieht man daher immer an einer festgesetzten Stelle im Frontend, während ein Ereignis-Plugin eher im Hintergrund arbeitet, dafür aber umso mächtiger ist und meist wichtige neue Backendaufgaben bereitstellt.

plugins_sb_dm_de.png
Abbildung 4.21b: Einstellungen: Plugins verwalten (Seitenleisten)

Nach einem Klick auf Einstellungen: Plugins in der Backend Seitenleiste, sehen Sie die Liste der Seitenleisten- oder Ereignis-Plugins, je nachdem, welche sie zuletzt genutzt haben. Pro Plugin gibt es eine einzelne "schwebende" Inhaltsbox. Die Seitenleisten-Plugins sind in verschiedene Bereiche unterteilt: links, rechts und versteckt. Diese Bereiche entsprechen also der Positionierung des Seitenleisten-Plugins im Frontend, auf der linken oder rechten Seite. Dabei gilt es zu beachten, dass einige Templates möglicherweise nur eine Seitenleiste anbieten, und manchmal sind beide Seitenleisten auch rechts oder links angegliedert. Abhängig vom Template und seinen konfigurierbaren Eigenschaften kann es auch sein, dass hier noch weitere Plugin-Bereiche dargestellt werden, zB. in Sliver.

Der Bereich versteckt ist dabei ein Sonderbereich. Alle Plugins, die dort aufgeführt sind, sind inaktiv gesetzt und werden später im Frontend nicht dargestellt.

Innerhalb der Pluginbox sind folgende Informationen/Einstellungen enthalten:

Drag and Drop-Rahmen Jede einzelne Pluginbox kann mittels JavaScript Drag'n'Drop in ihrer Position verändert werden. Das heißt, sowohl die Reihenfolge der Plugins untereinander als auch die Wahl der linken oder rechten Seitenleiste kann bestimmt werden. Dazu klicken Sie mit der Maus auf den Anfassbereich in der linken oberen Ecke jeder Pluginbox (der Cursor verwandelt sich dann in einen Positionierungspfeil), halten die Maus gedrückt und verschieben dann die Box an die gewünschte Position. Dabei wird der jeweilige Bereich, über dem Sie sich befinden, mit einem Rahmen hervorgehoben. Sobald Sie die Maustaste loslassen, wird das Plugin in den gerade hervorgehobenen Bereich eingefügt. Diese Funktionalität wird mittels JavaScript eingebunden. Sollte Ihr Browser dies nicht unterstützen, sehen Sie anstelle der Anfasser für jedes Plugin eine Auswahlbox, mit der Sie angeben, ob das Plugins links, rechts oder versteckt platziert wird. Die Reihenfolge kann in diesem Falle dann über zwei eigenständige Pfeil-Buttons verändert werden. Es ist wichtig, dass Sie nach der Änderung der Positionierung auf den Button Speichern klicken. Erst wenn Sie diesen Button auch anklicken, werden die Änderungen tatsächlich gespeichert. Sollten Sie also einmal nach einer längeren Sortierungsaktion unzufrieden mit dem Ergebnis sein, können Sie die Seite einfach neu laden oder verlassen, und die Änderungen werden verworfen.

Markierungsbox Neben jedem Plugin-Titel ist eine Auswahlbox dargestellt, die angekreuzt werden kann. Um ein oder mehrere Plugins zu löschen, müssen Sie die Boxen der jeweiligen Plugins aktivieren und danach auf den Button Löschen (Markierte Plugins entfernen) klicken.

Zahnrad-Symbol Einige Plugins bieten spezielle Konfigurationsoptionen an. Jedes Plugin mit solchen Optionen zeigt ein Zahnrad-Symbol an, auf das Sie klicken können.

Plugin-Titel Der Name eines Plugins wird im Zentrum der Pluginbox angezeigt. Plugins, die eigene Konfigurationseinstellungen anbieten, kann man mit einem Klick auf das Zahnrad-Symbol bearbeiten.

Plugin-Beschreibung In der Plugin-Beschreibung, die sich nach einen Klick auf den angezeigten Pluginnamen als details-HTML Box entfaltet, wird die Funktionalität eines Plugins kurz beschrieben. Dies ist auch diejenige Beschreibung, die auf Spartacus angezeigt wird.

Plugin-Version Da Plugins öfter aktualisiert werden und mit neuen Versionen Fehler behoben oder neue Funktionen angeboten werden, ist es ab und zu interessant zu erfahren, welche Version eines Plugins man gerade wirklich einsetzt. Diese Versionsnummer wird unterhalb der Plugin-Beschreibung angezeigt.

Plugin-Eigentümer Zuletzt gibt ein Auswahlfeld den Eigentümer eines Plugins an. Bei einigen Plugins ist nur der hier festgelegte Eigentümer (oder ein Administrator) autorisiert, Änderungen an der Konfiguration eines Plugins durchzuführen. Ob ein Plugin solche Einschränkungen festlegt, ist dem Plugin selbst überlassen. Das Plugin HTML Klotz ist ein Beispiel hierfür. Diese Einstellung regelt nicht, wer den Inhalt eines Plugins im Frontend sehen darf! Wenn solche Beschränkungen vorgenommen werden sollen, muss das Plugin Seitenleisten ein/ausklappen (siehe Seite sidebarhider) verwendet werden.

 

Um bestimmte Plugins zu entfernen, markieren Sie diese und klicken auf Markierte Plugins entfernen. Um Änderungen an dem Eigentümer eines Plugins zu speichern, müssen Sie das Plugin markieren und danach auf Speichern klicken. Für Änderungen an der Positionierung oder Reihenfolge eines Plugins klicken Sie einfach nur auf Speichern, eine Auswahl der beteiligten Plugins ist in diesem Fall nicht notwendig.

Ein neues Seitenleisten-Plugin können Sie installieren, indem Sie den Link Seitenleisten-Plugin installieren benutzen.

Analog zu der Auflistung der Seitenleisten-Plugins werden die Ereignis-Plugins dargestellt. Da diese im Frontend keinem Bereich entsprechen, sind sie nicht weiter unterteilt und gliedern sich nur in Aktiv und Inaktiv. Ein aktives Ereignis-Plugin wird bei jedem Seitenaufruf von Serendipity in den Speicher geladen und ausgeführt. Wenn Sie ein Plugin vorübergehend deaktivieren wollen, können Sie es einfach in den Bereich Inaktiv verschieben.

Die Reihenfolge von Ereignis-Plugins kann in einigen Situationen wichtig sein. Die Liste dieser Plugins wird vom ersten bis zum letzten in dieser Reihenfolge ausgeführt; dabei kann die Ausgabe des vorigen Plugins miteinbezogen werden. Gerade bei Textformatierungs-Plugins, die gewisse Umformatierungen Ihrer Einträge vornehmen, ist diese Reihenfolge von Interesse. Wenn bspw. ein Textformatierungs-Plugin wie Textformatierung: Smilies ausgeführt wird und danach ein Plugin wie das Textformatierung: Wiki-Markup, dann könnte dies dazu führen, dass die HTML-Formatierung der Smilies durch das Wiki-Markup-Plugin zerstört wird. Richtig wäre es daher, das Wiki-Markup-Plugin als eines der ersten Textformatierungs-Plugins anzuwenden. Bei welchen Fällen Sie auf die Reihenfolge zu achten haben, wird bei der Beschreibung des jeweiligen Plugins in diesem Buch erwähnt.

Ereignis-Plugins können ähnlich wie Seitenleisten-Plugins über Ereignis-Plugin installieren neu hinzugefügt werden.

4.7.5 - Fehler bei Plugins

Fehler bei Plugins

Je länger die Liste der Ereignis-Plugins, desto mehr Arbeitsspeicher benötigt Serendipity auf dem Webserver. So kann es passieren, dass nach der Installation eines neuen Ereignis-Plugins der Arbeitsspeicher ausgereizt ist.

Es kann durchaus passieren, dass zu viele Plugins die fehlerfreie Ausführung des Frontends oder Backends verhindern. In so einem Fall müssen Sie also Ereignis-Plugins löschen oder Ihren Provider bitten, den Arbeitsspeicher (siehe Kapitel memory-limit auf Seite memory-limit) zu vergrößern.

Im Zuge der heutzutage üblichen und flexiblen Kontigent-Containerisierung ist dies dieser Zustand wohl nur noch dann zu erreichen, wenn man es praktisch übertreibt. Deshalb: Nutzen Sie nur so viel Plugins wie unbedingt nötig!

Sollten Sie nicht mehr auf die Plugin-Verwaltungsoberfläche gelangen, können Sie ein Plugin auch entfernen, indem Sie das entsprechende Verzeichnis im plugins-Unterverzeichnis löschen. Sobald Serendipity eine angeforderte Plugin-Datei nicht mehr findet, wird das entsprechende Plugin einfach temporär deaktiviert. Sie werden es dann trotzdem noch in der dann wieder aufrufbaren Plugin-Verwaltung sehen können, dort wird dann jedoch nur eine Meldung wie


    Fehler! serendipity_event_xxx

zu sehen sein. Ein solches Plugin können Sie jedoch wie gewohnt löschen.

Abgesehen von der absichtlichen Löschung eines Plugins kann es auch einmal vorkommen, dass Sie die obige Meldung bei Plugins sehen, die eigentlich fehlerfrei funktionieren sollten. Diese Meldung kann auch angezeigt werden, wenn eine Plugin-Datei für Serendipity nicht lesbar ist oder womöglich fehlerhaft via FTP hochgeladen wurde. Prüfen Sie daher, ob diese Dateien auch dem richtigen Zustand (Dateigröße und Dateirechte) entsprechen.

Auch nach einem Serverumzug kann es vorkommen, dass früher funktionierende Plugins plötzlich nicht mehr aufrufbar sind. In diesem Fall finden Sie in der Datenbanktabelle serendipity_plugins eine Auflistung aller aktivierten Plugins inklusive deren Dateipfad. Diesen Pfad müssen Sie möglicherweise auf neue Gegebenheiten anpassen.

Manchmal kann es sein, dass nach der Installation mehrere Instanzen eines Plugins aktiviert wurden. Sie können daher doppelte Plugins leicht wieder aus der Verwaltungsoberfläche löschen.

Wenn Sie eine Plugin-Datei selbständig editieren, kann es passieren, dass Sicherungskopien eines Plugins mit der Dateiendung .bak oder .php~ von Ihrem Editor im jeweiligen Plugin-Verzeichnis gespeichert werden. Diese Dateien können die Plugin-Verwaltung von Serendipity stören und müssen daher unbedingt gelöscht werden. Auch ganze Kopien eines Verzeichnisses unter einem zweiten Namen dürfen niemals im plugins-Unterverzeichnis gespeichert werden, verschieben Sie derartige Sicherheitskopien immer an einen von Serendipity unabhängigen Speicherort! Es ist aber alles eine Frage der Reihenfolge. Ein vorangestelltes _ zum Beispiel, erlaubt es aber dennoch ein Plugin vorübergehend aus der Liste und der Bearbeitung zu nehmen.

4.7.6 - Neue Plugins installieren

Neue Plugins installieren

Wenn Sie ein neues Ereignis- oder Seitenleisten-Plugin installieren, wird Serendipity Ihnen die verfügbaren Plugins auf einer Plugin-Übersicht darstellen. Dort wird jedes Plugin, das im Serendipity-Verzeichnis vorhanden ist, aufgelistet. Auch bereits installierte Plugins werden daher an dieser Stelle dargestellt, da es einige Arten von Plugins gibt, die mehrfach installiert (genauer: instanziert) werden können.

Serendipity wird mit einer kleinen Auswahl an verfübaren Plugins ausgeliefert, die nicht alle von Anfang an aktiviert sind. Sollten Sie weitere Plugins benötigen, können Sie diese entweder vom Server https://ophian.github.io/plugins/ manuell herunterladen [*] Github kann momentan keine Plugins einzeln als ZIP verpackt bereitstellen. Sie sind aber sehr einfach über diese URL https://github.com/ophian/additional_plugins aufrufbar und können entweder komplett als ZIP Datei heruntergeladen oder in Einzelteilen per einzelner RAW Datei gespeichert werden., automatisch mittels des Spartacus-Plugins installieren oder ein selbst entwickeltes Plugin auswählen. Siehe Serendipity Styx und sein eigenes darauf abgestimmtes Plugin-Repository. Wenn Sie aus dem Internet ein Serendipity-Plugin als ZIP-Datei heruntergeladen haben, müssen Sie dieses in die Unterverzeichnisstruktur von plugins entpacken. Serendipity kann mit der ZIP-Datei selber nichts anfangen, und auch wenn eine Plugin-Datei versehentlich nur ins Stammverzeichnis kopiert werden sollte, kann dies dazu führen, dass es später in der Plugin-Übersicht nicht aufgeführt wird.

Plugins müssen also in zwei Schritten für Serendipity verfügbar gemacht werden. Zum einen muss ein Plugin in einem Unterverzeichnis des plugins-Verzeichnisses gespeichert werden, damit Serendipity das Plugin überhaupt sehen kann. Im zweiten Schritt muss dann das hochgeladene Plugin für Serendipity über die Plugin-Verwaltung aktiviert werden.

plugin_sb_new_dm_de.png
Abbildung 4.22: Einstellungen: Plugins verwalten: Neues Plugin installieren (Ausschnitt)

In der Plugin-Übersicht für die Installation sehen Sie pro Zeile jeweils einen Plugin-Namen. Die Plugins sind unterteilt in verschiedene Gruppen, die Sie speziell auch über das Auswahlfeld Filter am Seitenanfang anwählen können.

Unter jedem Plugin-Namen wird eine Beschreibung des Plugins angezeigt, sowie der Autor und die Versionsnummer des Plugins. Unterhalb der Beschreibung sehen Sie entweder einen Button zur Installation des gewünschten Plugins oder die Information, dass ein Plugin bereits installiert ist.

Wenn Sie auf den Installations-Button klicken, werden Sie ggf. direkt zur Konfiguration des gerade gewählten Plugins weitergeleitet. Dort werden Ihnen die Standardoptionen bereits vorausgefüllt, Sie müssen also nicht sofort die vollständige Konfiguration aufrufen, sondern können die Konfiguration auch jederzeit später vervollständigen. Nach diesem Vorgang ist ein Plugin installiert und kann wie gewohnt über den Menüpunkt Plugins verschoben und konfiguriert werden.

4.7.7 - SPARTACUS

SPARTACUS

SPARTACUS steht für das Serendipity Plugin Access Repository Tool And Customization/Unification System. Trotz des zugegebenermaßen konstruierten Akronyms wird deutlich, dass Spartacus ein System ist, das Plugins und Templates zur Verfügung stellt.

Spartacus besteht aus zwei Komponenten: Zum einen der zentrale Server https://ophian.github.io/plugins, auf dem sämtliche verfügbaren offiziellen Plugins vorhanden sind und auch für Nicht-Serendipity-Benutzer übersichtlich dargestellt werden. Zum anderen wird bei Serendipity ein gleichnamiges Ereignis-Plugin mitgeliefert, das direkt auf diesen zentralen Server zugreifen und Plugins herunterladen kann. Das Plugin stellt einige Anforderungen an den Server, auf dem Sie Serendipity installiert haben:

  • Der Webserver darf nicht durch eine Firewall blockiert werden. Er muss Zugriffe auf github.com, sourceforge.net und spartacus.s9y.org auf Port 80 ermöglichen.
  • Die PHP-Konfiguration muss den Zugriff auf Netzwerk-Sockets erlauben.
  • Damit Serendipity Dateien selbständig herunterladen und auf dem Server speichern kann, muss Schreibzugriff auf die Verzeichnisse plugins und templates gewährt werden.

Auf manchen Webservern schlägt die erste Bedingung fehl, was dazu führt, dass keine PHP-Anwendung nach draußen zugreifen kann. Gerade bei großen Providern ist aus Sicherheitsgründen ein derartiger Zugriff nicht gestattet. In so einem Fall können Sie Spartacus also leider nicht einsetzen und müssen die Plugins manuell vom Server https://ophian.github.io/plugins/ bzw der Weiterleitung auf GitHub beziehen. Seit langem besteht auch behelfsweise die Möglichkeit, Dateien direkt über Ihren FTP-Zugang auf den Webserver hochzuladen - dadurch werden die PHP-Beschränkungen umgangen. Die Zugangsdaten müssen Sie in der Konfiguration des Spartacus-Plugins festlegen.

Der Autor hat diese Einschränkungen in den letzten 10 Jahren aber nicht mehr erlebt, so dass Serendipity und Spartacus heutzutage auf nahezu allen Systemen out-of-the-box funktionieren sollte!

Wenn das Spartacus-Plugin auf solchen blockierten Servern installiert wird, kann das zu einer Reihe von Problemen führen: von der vollständigen Fehlfunktion der Plugin-Installationsoberfläche bis hin zu weißen Seiten beim Klick auf ein zu installierendes Plugin.

Sollten Sie also beim Installieren von Plugins eine leere Seite erhalten, oder Ihr Browser gibt an, die Datei serendipity_admin.php müsse lokal auf der Festplatte gespeichert werden, oder die Installation eines Plugins führt zu langen Ladezeiten, dann können Sie sich sicher sein, dass Spartacus auf Ihrem Server nicht gestartet werden kann. Eine Fehlermeldung, die in diesem Zusammenhang auch auftreten kann, ist:


    Access Denied in /var/www/example.com/serendipity/bundled-libs/PEAR.php at line 848

Dies ist eine generische Fehlermeldung, die bedeutet, dass die für den Download zuständige PEAR-Komponente keine Verbindung zu einem Server aufnehmen konnte.

Möglicherweise kann Ihr Webserver auf fremde Server zugreifen, wenn Sie einen Proxy-Server benutzen. Um einen Proxy für Spartacus einzustellen, bietet das Plugin Trackbacks kontrollieren (siehe Seite trackbacks) eine Möglichkeit, den Proxy-Server zu konfigurieren. Der dort eingestellte Proxy-Server gilt dann für alle Serendipity-Funktionalitäten und aktuellen Plugins.

Wenn Sie ein älteres Plugin nutzen, das sich nicht von der im Trackback-Plugin konfigurierten Proxy-Einstellung beeindrucken lässt, können Sie notfalls auch manuell in der Datei bundled-libs/HTTP/Request2.php in Zeile 136 folgende Variablen setzen:


    $this->_proxy_host = null;
$this->_proxy_port = null;
$this->_proxy_user = null;
$this->_proxy_pass = null;

Beachten Sie, dass diese Änderung einer zentralen Bibliothek nicht gerade die feine englische Art ist, da die lokale Bibliothek auf einigen Servern durch eine zentrale PEAR-Bibliothek übergangen werden könnte.

In älteren Serendipity Releases war das Spartacus-Plugin aufgrund der aufgeführten potenziellen Probleme standardmäßig nach der Installation nicht aktiviert. Sie mussten es daher über den Menüpunkt Klicken Sie hier, um Ereignis-Plugin zu installieren erst auswählen und aktivieren. In der Konfiguration des Spartacus-Plugins konnten und können einige wichtige Optionen festgelegt werden, siehe Seite Spartacus.

Kann Spartacus auf dem Server eingesetzt werden, fügt es sich nahtlos in die Serendipity-Oberfläche ein. Wenn Sie sich mit aktiviertem Plugin dann die Plugin-Verwaltung zur Installation eines neuen Plugins ansehen, wird das Plugin automatisch aus dem Internet eine aktuelle Liste der verfügbaren Plugins laden und Ihnen darstellen. Bei Klick auf ein Plugin wird Spartacus automatisch alle benötigten Dateien herunterladen und Sie über diesen Download benachrichtigen.

Sollte der Download eines Plugins mittels Spartacus einmal fehlschlagen, können Sie über FTP das entsprechende Plugin-Verzeichnis einfach komplett löschen und die Neuinstallation probieren.

Auch die Aktualisierung von Plugins kann mittels Spartacus komfortabel vorgenommen werden. Anstatt über die Spartacus-Webseite nach neuen Versionen zu suchen, können Sie über die Plugin-Verwaltung den Button Plugins updaten anklicken, um Spartcus nach updatefähigen Seitenleisten- und Ereignis-Plugins zu durchsuchen. Dort werden dann alle aktualisierbaren Plugins aufgelistet und können auf den einzeln oder oder automatisch eingespielt werden. Das CKEditor Plus Plugin sollte als bisher einziges Plugin immer nur einzeln aktualisiert werden, wenn es ein neues und aktualisiertes Zip mitbringt.

Leider gibt es bei einem Upgrade in der Plugin-Oberfläche nicht immer einen Hinweis, welche Dinge sich bei einem Plugin verändert haben. Als Faustregel gilt, dass nur große Versionssprünge in einem Plugin tiefgreifende Änderungen mit sich bringen. Die meisten Updates sind Bugfixes oder kleinere neue Features. Da Plugin-Entwickler oft faule Leute sind, ist die Dokumentation der Updates jedoch meist dürftig, und Sie müssen sich die Aktualisierungen manuell in der Spartacus-Versionsverwaltung ansehen.[*] https://github.com/ophian/additional_plugins Details zu dieser Webseite finden Sie im Kapitel sourcecodeverwaltung ab Seite sourcecodeverwaltung.

Auch bei Plugins werden Updates immer unter großer Beachtung der Rückwärts-Kompatibilität durchgeführt. Sie müssen also nicht fürchten, dass sich bei einem Update eines Plugins etwas für Sie ändern könnte oder zu Bruch geht - diese Gefahr ist relativ gering. Lediglich wenn Sie selbst Änderungen an den Plugin-Dateien gemacht haben, müssen Sie diese sichern und nach dem Update erneut einfügen. Die Konfigurationsoptionen Ihrer Plugins bleiben bei einer Aktualisierung weiterhin bestehen.

Wenn Sie mehrere Plugins auf einmal aktualisieren wollen, müssen Sie sie diese mittels des rechten Mausbuttons in neue Tabs installieren oder jenen bereits genannten automatischen Einspieler nutzen. Achtung: Dies kann, je nach Menge und zur Verfügung gestellter Kapazität des Servers durchaus zu Fehlern führen, wenn die Grenzen der zugestandenen Auslastung erreicht sind. Besser und sicherer ist es jedoch, jedes Plugin einzeln und nacheinander upzudaten, auch, da es wie beim CKEditor Plus-Plugin mittlerweile durchaus Plugins geben kann, die augenblicklich für wichtige Upgrade-Aufgaben in ihre eigenen Konfigurationsseiten zurückfallen möchten.

Oberhalb jeder Übersichtsseite werden Sie einige Meldungen von Spartacus sehen, die Sie darüber informieren, dass gerade eine Übersichtsdatei oder Weiteres aus dem Internet geladen wird. Diese Meldungen helfen Ihnen, im Fall von Zugriffsproblemen die Schreibrechte zu prüfen.

Die XML-Dateien, die Spartacus herunterlädt, werden in dem temporären Verzeichnis templates_c gespeichert. Damit das Plugin nicht bei jedem Zugriff auf Ihre Plugin-Verwaltung diese Dateien neu lädt, wird Spartacus die Dateien zwischenspeichern und nur alle 12 Stunden auf Aktualisierung prüfen. Aufgrund dieser Zwischenspeicherung kann es also passieren, dass neue Plugins im Spartacus-Archiv erst mit maximal 12 Stunden Verzögerung dargestellt werden. Wenn Sie unbedingt forcieren wollen, dass Spartacus den Zwischenspeicher leert, dann können Sie über die Plugin-Konfiguration von Spartacus einfach auf den Button Speichern klicken. Dadurch werden die temporären Dateien alle gelöscht. Auf Wunsch könnten Sie die Dateien natürlich auch mit einem FTP-Programm löschen.

Alle Inhalte des Spartacus-Systems können Sie auch ohne Serendipity unter https://ophian.github.io/plugins/ ansehen und dort bzw auf GitHub Plugins als ZIP-Datei manuell herunterladen (siehe vorherige Fußnote).

Die Plugins von Spartacus werden, ebenso wie Serendipity selbst, öffentlich über ein Versionskontrollsystem gepflegt. Alle vorgenommenen Änderungen werden darin protokolliert. Details finden Sie in Kapitel sourcecodeverwaltung auf Seite sourcecodeverwaltung.

4.8 - Einstellungen (Administration)

Einstellungen (Administration)

Im Menübereich Einstellungen (hier Administration genannt) befinden sich alle Möglichkeiten, die generellen Optionen Ihres Blogs zu bearbeiten. Für die Benutzerverwaltung gibt es einen eigenen Seitenleisten Bereich, ebenso wie für die schon verschiedentlich erwähnte Wartung-Sektion, deren Teil, unter anderem, der Export und der Import von Blog-Artikeln sind.

 

4.8.1 - Konfiguration

Konfiguration

Hinter Konfiguration finden Sie alle Einstellungen des Blogs, die Sie auch bei der Installation im Fortgeschrittenen-Modus festlegen können.

Der Konfigurationsbereich ist dabei in mehrere Bereiche untergliedert, um etwas Struktur in die Oberfläche zu bringen. Jeder Bereich kann dabei über den Zeilenlangen-Button aus- und eingeklappt werden. Um alle Bereiche auf einmal auszuklappen, klicken Sie auf den obersten Button, um alle Optionen gemeinsam ein-/ausblenden.

Datenbankeinstellungen

Die Datenbankeinstellungen bestimmen den Zugang zur zentralen Serendipity-Datenbank und deren möglichen Optionen.

Hier müssen immer die aktuell gültigen Zugangsparameter zur Datenbank eingetragen werden. Diese Datenbankinformationen werden zusätzlich in der Datei serendipity_config_local.inc.php gespeichert. Wenn sich also einmal die Zugangsdaten ändern, könnte es sein, dass Sie manuell zuerst diese Datei (siehe auch Kapitel Installation erneut ausführen auf Seite Installation erneut ausführen) überarbeiten müssen, bevor Sie sich wieder ins Backend einloggen können.

configuration_db_dm_de.png
Abbildung 4.23a: Einstellungen: Konfiguration - Datenbank

 

Datenbanktyp In diesem Auswahlfeld sind die verfügbaren Datenbanktypen aufgeführt, zu denen Serendipity Verbindung aufnehmen kann. Die Liste der verfügbaren Typen richtet sich nach der Konfiguration Ihres PHP-Servers. PHP muss für jeden Datenbankserver eine sogenannte Client-Library eingebunden haben, um auf die Funktionen des jeweiligen Datenbanktyps zugreifen zu können. Wenn Sie sich sicher sind, dass auf Ihrem Server ein MySQL-Server läuft, muss das nicht automatisch bedeuten, dass PHP darauf auch zugreifen kann. Zahlreiche Linux-Distributionen bieten die Client-Libraries in eigenen Paketen an, bei Debian beispielsweise php-mysql. Serendipity kann auf folgende Client-Libraries zugreifen: mysqli (ab MySQL 4), postgres (PostgreSQL), PDO postgres (spezielle PHP5-Variante der PostgreSQL-Library), sqlite, sqlite3 und PDO-sqlite3. SQLite ist ein Sonderfall einer Datenbank, da es ohne einen Datenbankserver auskommen kann. Ab PHP5 ist SQLite fester Bestandteil von PHP und somit immer verfügbar. Die Vorteile von SQLite sind eine sehr hohe Performance beim Lesen von Datenbanken und die Erstellung einer einzelnen Datenbankdatei, von der man sehr leicht ein Backup aufnehmen kann. Der Nachteil ist, dass SQLite nicht alle Datenbank-Operationen mittels SQL-Syntax unterstützt und gerade bei komplexeren Datenbankabfragen doch eher langsam wird. Am besten getestet ist Serendipity bei Verwendung der MySQL-Datenbank. Die Kernfunktionen von Serendipity laufen auch problemlos mit allen anderen Datenbanktypen, aber einige Plugins könnten spezielle MySQL-Funktionen einsetzen. Wenn Sie den Datenbanktyp bei einer aktiven Serendipity-Installation ändern, richtet Serendipity keine neue Datenbank auf dem gewünschten System ein! Alle Datenbankeinstellungen richten sich nach dem Ist-Zustand, Serendipity geht also davon aus, dass Sie mit diesen Optionen die aktuellen Gegebenheiten abbilden, und nicht, wie Sie es in Zukunft gerne hätten. Um Serendipity auf eine andere Datenbank umzustellen, müssen Sie die Migration mithilfe der Dokumentation des Datenbankservers leider selbständig vornehmen.

Datenbank Servername Der Servername der Datenbank kann entweder eine IP-Adresse (zB. 127.0.0.1), ein lokaler Hostname (localhost) oder ein Internet-Hostname (www.example.com) sein. Wird für SQLite nicht benötigt.

Datenbank Username Der Benutzername für den Datenbankserver. Wird für SQLite nicht benötigt.

Datenbank Passwort Das Passwort für den Benutzer des Datenbankservers. Wird für SQLite nicht benötigt.

Datenbankname Der Name der Datenbank, in der Serendipity installiert wurde. Bei Verwendung von SQLite wird hier der Dateiname der .db-Datenbank gespeichert.

Datenbank-Präfix Jede Serendipity-Tabelle in einer Datenbank muss einen vordefinierten Präfix besitzen, damit sich die Tabellennamen von möglicherweise gleichnamigen Tabellen anderer Anwendungen in derselben Datenbank abheben können. Standardmäßig wird hier styx_ eingetragen. Wenn Sie den Tabellenpräfix nachträglich ändern, müssen Sie die bestehenden Tabellen manuell in der Datenbank umbenennen, Serendipity führt dies nicht selbständig aus.

Persistente Verbindungen nutzen Bei jedem Aufruf einer Seite von Serendipity wird eine Verbindung zur Datenbank aufgebaut. Im "Lebenszyklus" einer PHP-Anwendung wird diese Datenbankverbindung nach der Ausführung automatisch wieder geschlossen. Um etwas Zeit zu sparen, können PHP-Anwendungen sogenannte Persistent Connections (Ständige Verbindungen) nutzen. Diese Option wird in der PHP-Dokumentation [*] https://www.php.net/manual/de/features.persistent-connections.php ausführlicher beschrieben und bewirkt - kurz gesagt -, dass mehrere PHP-Aufrufe dieselbe Datenbankverbindung nutzen können, ohne diese ständig neu auf- und abzubauen. Generell birgt diese Option einige Gefahren, da bei Datenbankproblemen eine Verbindung nicht mehr automatisch neu aufgebaut wird und möglicherweise viele Zugriffe auf die Webseite das Ressourcenlimit an Verbindungen schneller erschöpfen könnten. Daher sollte diese Option nur dann aktiviert werden, wenn Sie sich mit ihren Vor- und Nachteilen auskennen.

Datenbank-Zeichensatzkonvertierung aktivieren Diese Option gilt nur für MySQL-Datenbanktypen und bringt Serendipity dazu, beim Verbinden mit der Datenbank anzugeben, welchen Zeichensatz das Blog benutzt. Gerade bei den damals aktuellen MySQL-Versionen ab 4.1 konnte die falsche Verwendung von Zeichensätzen zu Fehlern führen, siehe Kapitel Falsche Anzeige von Datumsangaben oder Sonderzeichen ab Seite Falsche Anzeige von Datumsangaben oder Sonderzeichen. Sollte Ihr Blog bei der Darstellung von Sonderzeichen Probleme machen, könnte die Umstellung dieser Option Abhilfe schaffen. Ansonsten ist das aktivieren der Datenbank-Zeichensatzkonvertierung heutzutage aber die empfohlene Einstellung.

Pfade

Im Bereich Pfade tragen Sie einige Optionen zur Festlegung der URLs ein. Bitte beachten Sie, dass Sie an dieser Stelle die derzeit gültigen Pfade eintragen müssen, die mit Ihrer Installation übereinstimmen.

configuration_path_dm_de.png
Abbildung 4.23b: Einstellungen: Konfiguration - Pfade

Wenn Sie eine Serendipity-Installation auf dem Server verschieben wollen, müssen Sie dies vorher manuell (mittels FTP-Programm oder Ähnlichem) erledigen und nachträglich die geänderten Pfade an dieser Stelle eintragen.

Fehler: Seite nicht gefunden Seite nicht gefunden Bitte achten Sie darauf, dass alle Pfadangaben immer mit einem Schrägstrich enden müssen. Etwaige fehlerhaft eingestellte Pfade können dazu führen, dass Links in Ihrem Blog nicht aufgerufen werden können und zu leeren Seiten führen. Auch wenn Ihre Seite unformatiert aussieht und keine Grafiken darstellt, kann das seine Ursache in einem falsch konfigurierten Pfad haben.

Voller Pfad Diese Option enthält den vollständigen Pfad der Serendipity-Installation auf dem Server. Dieser Pfad entspricht also dem eigentlichen Dateisystem (zB. /var/www/example.com/serendipity/), und nicht dem Schema der URL (/serendipity/). Bitte stellen Sie sicher, dass der Pfad immer einfache Schrägstriche (/) verwendet und nicht den Backslash (\). Auf Windows-Systemen können Sie den Backslash einfach mit einem normalen Schrägstrich ersetzen, und lassen Sie das Laufwerk (C:/) am Anfang weg.[*] Den Laufwerksbuchstaben bräuchten Sie nur, wenn Ihr DocumentRoot nicht auf demselben Laufwerk liegen würde wie das Verzeichnis von Serendipity. Da Serendipity aber immer innerhalb des DocumentRoot liegen muss, kann dieser Fall effektiv nicht eintreten. Wenn möglich, sollten Sonderzeichen in den Verzeichnispfaden vermieden werden, und der Pfad muss immer mit einem Schrägstrich enden.

Upload-Pfad Unterhalb des im Voller Pfad eingetragenen Verzeichnisses befindet sich der Ordner, in dem die Dateien der Mediathek gespeichert werden sollen (üblicherweise uploads). Wenn Sie Ihre Mediendateien in einem anderen Verzeichnis speichern wollen, können Sie den gewünschten Speicherort relativ zum vollen Pfad hier eintragen. Sollte das Upload-Verzeichnis außerhalb des Serendipity-Verzeichnisses liegen, dürfen Sie hier nicht einfach einen absoluten Pfad eintragen, sondern müssen mittels ../../ die jeweiligen Verzeichnisebenen höher wechseln. Wenn Sie also Serendipity im Verzeichnis /var/www/example.com/serendipity/ gespeichert haben und Ihr Upload-Verzeichnis sich in /var/uploads/ befindet, müssen Sie für den Upload-Pfad ../../../uploads/ eintragen. Wenn Sie dieses Verzeichnis umkonfigurieren, müssen Sie bereits hochgeladene Dateien manuell in das neue Verzeichnis verschieben.

Relativer HTTP-Pfad Der Relative HTTP-Pfad gibt die Pfadkomponente der URL an, in der Serendipity installiert wurde. Dabei muss der HTTP-Pfad sämtliche Verzeichnisnamen hinter dem Domain-Namen enthalten. Wäre Serendipity unter http://example.com/~john/serendipity/ installiert, müsste der relative HTTP-Pfad den Eintrag /~john/serendipity/ enthalten.

Relativer Template-Pfad Um Grafiken und Stylesheets der Templates anzuzeigen, muss Serendipity auf den Stammordner zugreifen, in dem sich die Templates befinden. Der Relative Template-Pfad gibt dabei die notwendige Verzeichnisstruktur (relativ zum HTTP-Pfad) an. Sie sollten diese Option möglichst nicht ändern, da an zahlreichen Stellen in Serendipity der Template-Pfad templates/ fest vorgesehen ist. Eine Änderung macht nur Sinn, wenn Sie mit symbolischen Links auf dem Webserver arbeiten, die unterschiedliche Pfadangaben benötigen.

Relativer Upload-Pfad Wenn Sie den Upload-Pfad wie im Beispiel oben ändern, wird sich auch dessen URL ändern. Die Option Relativer Upload-Pfad gibt dabei den Verzeichnisnamen des Speicherorts der Mediendateien an, relativ zur Stamm-URL. Sollte sich das Serendipity-Verzeichnis auf einem anderen VirtualHost oder einer ganz abweichenden Pfad-Struktur befinden, kann dies nur funktionieren, wenn Sie einen symbolischen Link [*] Symbolische Links sind häufig auf Linux-Servern zu finden und ermöglichen einen Datei- oder Verzeichnisverweis zu völlig anderen Verzeichnissen. Symbolische Links können nur mit direktem Zugriff zum Dateisystem eines Servers erstellt werden und sind daher meist Administratoren bzw. Shell-Benutzern vorbehalten. zum Ziel-Upload-Verzeichnis erstellen.

URL zum Blog Im Eingabefeld URL zum Blog tragen Sie die vollständige URL (mit Protokoll und Domainnamen) ein. Dabei können Sie, falls verfügbar, auch gerne https:// benutzen, wenn Ihr Server dies anbietet. Sollte Ihr Blog unter mehreren URLs erreichbar sein [*] zB. http://example.com/serendipity/, https://www.example.com/serendipity/ und http://blog.example.com/serendipity/, dann müssen Sie lediglich eine dieser URLs hier konfigurieren und die Option HTTP-Hostnamen automatisch erkennen aktivieren (siehe unten). Auch hier gilt: Wenn Sie Serendipity auf eine andere URL verschieben möchten, müssen Sie die Verzeichnisse und Dateien manuell verschieben und können erst danach diese Konfigurationsoption den neuen Gegebenheiten anpassen.

HTTP-Hostnamen automatisch erkennen Wenn Ihr Blog unter mehreren URLs erreichbar ist, können Sie Serendipity zwar unter allen drei URLs aufrufen, aber alle Verweise innerhalb des Blogs werden ausschließlich auf die in URL zum Blog konfigurierte URL verweisen. Wenn Sie gerne möchten, dass für jeden Besucher die URL weiterbenutzt wird, die er zum Aufrufen verwendet hat, dann können Sie die Option HTTP-Hostnamen automatisch erkennen aktivieren. Diese Funktion kann jedoch nur dann korrekt funktionieren, wenn sich die Pfadkomponente der URL niemals ändert. Sollte Ihr Blog aber unter den URLs http://example.com/serendipity/ und auch http://serendipity.example.com/ verfügbar sein, dann wäre dies nicht der Fall. In so einem Fall können Sie nur eine der beiden URLs für den korrekten Betrieb von Serendipity wählen. Mögliche Lösungen dieses Problems finden Sie im Kapitel Weiterleitung auf Seite Weiterleitung.

Index-Datei Diese Option legt fest, welche zentrale Datei Serendipity benutzt, um jeden Seitenaufruf dorthin umzulenken. Üblicherweise sollten Sie diese Option nur ändern, wenn Sie Serendipity in einer anderen Webseite einbetten (siehe Option Eingebettete Nutzung von Serendipity aktivieren auf Seite embedding). In der Datei .htaccess wird die hier konfigurierte Datei als ErrorDocument und DirectoryIndex eingebunden. Sollten Sie einmal eine eigene Datei hier angeben, müssen Sie in dieser Datei sicherstellen, dass das Serendipity-Framework über index.php eingebunden wird. Sie sollten die Option nicht zweckentfremden, um eine eigene HTML-Seite als Startseite für Serendipity festzulegen. Dies würde dazu führen, dass auch andere URLs von Serendipity nicht mehr zugänglich wären. Eine individuelle Startseite für Serendipity können Sie mittels des Plugins Statische Seiten einstellen, siehe Kapitel staticpage ab Seite staticpage.

Sämtliche Permalinks [*] Permalinks sind sprechende URLs (siehe Seite urlformung), die im Frontend eindeutig zu den jeweiligen Funktionalitäten führen. können im gleichnamigen Konfigurationsbereich eingestellt werden.

Bei den Permalinks ist es sehr wichtig, dass Sie genau wissen, in welchem Rahmen die Pfade verändert werden können. Es ist bei jedem Permalink wichtig, dass ein festes Verzeichnis-Präfix (wie archives, categories und andere) für jeden Permalink-Typen definiert wird, damit Serendipity beim Aufruf einer URL erkennen kann, welche Unterseite angefordert wird. Sie können also nicht einfach einen Pfadteil weglassen und Eintrags-URLs ohne vorangestellten Pfad konfigurieren, da Serendipity dann keine Pfad-Zuordnung treffen kann.

Jeder konfigurierte Pfad muss exakt in der Permalink-Struktur übernommen werden, Sie können also Pfad zu den Einträgen nicht auf eintraege setzen und dann für die Permalink-Struktur artikel/%id%-%title%.html einsetzen. In beiden Fällen müssen Sie entweder eintraege oder artikel benutzen. Vermeiden Sie möglichst Sonderzeichen (also auch Leerzeichen) in der URL.

Ein Hinweis noch zu dem Parameter %id%, den Sie bei mehreren Permalinks aufgeführt sehen. Obwohl dies später im Frontend als sprechende URL möglicherweise nicht sexy aussieht, birgt die Verwendung von %id% einen großen Performancevorteil. Denn sobald diese ID enthalten ist, kann Serendipity ohne weitere Datenbankabfrage herausfinden, welche Inhalte es anzeigen muss.

Bei der Umstellung von Permalinks ist darauf zu achten, dass dadurch die vorher gültigen URLs nicht mehr aktiv sind! Sollte eine Suchmaschine Ihre Seiten also bereits indiziert haben, kann eine Umstellung der Permalinks bedeuten, dass die Suchmaschine sämtliche Ihrer Seiten aus dem Index wirft und neu bewerten muss. Legen Sie sich daher möglichst früh auf Ihr gewünschtes URL-Muster fest.

Die Seiten, die sich hinter den jeweiligen Permalinks befinden, sind ausführlich im Kapitel Permalinks-Frontend ab Seite Permalinks-Frontend beschrieben.

Permalink-Struktur für die Artikel-URLs Hier wird die Struktur des Permalinks eingetragen, die beim Aufrufen eines einzelnen Artikels verwendet wird. Platzhalter dienen jeweils dazu, dynamische Teile in die URL zu übernehmen: %id% für die ID eines Artikels. %title% für den Titel eines Artikels. %day% für den Tag, an dem der Artikel verfasst wurde. %month% für den Monat, in dem der Artikel verfasst wurde. %year% für das Jahr, in dem der Artikel verfasst wurde. Diese (und auch alle folgenden) Permalink-Strukturen können weitere beliebige Pfadkomponenten enthalten.

Permalink-Struktur für Autoren-URLs Für die Darstellung der Einträge eines Autors wird dieser Permalink verwendet. Folgende Variablen sind verfügbar: %id% für die ID eines Autors. %realname% für den Benutzernamen eines Autors, wie er üblicherweise bei Artikeln angezeigt wird. %username% für den Login-Namen eines Autors. %email% für die E-Mail-Adresse eines Autors.

Permalink-Struktur für Kategorie-URLs Dieser Permalink stellt Einträge pro Kategorie dar. Verfügbare Variablen sind: %id% für die ID einer Kategorie. %name% für den Namen einer Kategorie. %description% für die Beschreibung einer Kategorie (Vorsicht bei langen URLs durch lange Beschreibungen!). %email% für die E-Mail-Adresse eines Autors.

Permalink-Struktur für RSS-Kategorien-Feed URLs Die Artikel einer Kategorie für einen RSS-Feed können über diese konfigurierte URL aufgerufen werden. Es sind dieselben Variablen wie für den normalen Kategorie-Permalink verfügbar.

Permalink-Struktur für RSS-Autoren-Feed URLs Die Artikel eines Autors für einen RSS-Feed werden in diesem Permalink festgehalten. Es gelten dieselben Variablen wie für die normalen Autoren-Permalinks.

Pfad zu den Einträgen Der erste Verzeichnisname für alle Artikelübersichten, standardmäßig archives.

Pfad zu den Archiven Der Verzeichnisname für die Archivübersicht, in der die Artikel nur chronologisch dem jeweiligen Monat zugeordnet sind.

Pfad zu den Kategorien Der Verzeichnisname für die Artikelübersicht einer Kategorie.

Pfad zu den Autoren Der Verzeichnisname für die Artikelübersicht eines Autors.

Pfad zum Abbestellen/Löschen/Bewilligen von Kommentaren Wenn Sie als Autor oder Administrator über den Eingang eines neuen Kommentars per E-Mail benachrichtigt werden, können Sie innerhalb der E-Mail auf Links klicken, die den Kommentar freischalten oder löschen. Für Personen, die neue Kommentare bei einem Artikel abonniert haben, gibt es zusätzlich einen Link, der dieses Abonnement wieder aufhebt. Alle drei Pfadvariablen können über diese Konfigurationsfelder angepasst werden.

Pfad zu den RSS-Feeds Der Verzeichnisname für alle RSS-Feeds.

Pfad zu einem externen Plugin Ereignis-Plugins können eigenständige, neue Unterseiten in Ihrem Blog zur Verfügung stellen. Diese Unterseiten können unabhängig vom Serendipity-Layout von einem Plugin ausgegeben werden; unter anderem werden die Anti-Spam-Grafiken vom Spamblock-Plugin derart ausgegeben. Dafür benutzen die Plugins das Unterverzeichnis plugin. Sie sollten dieses Verzeichnis möglichst nicht ändern, da es mehrere Plugins gibt, die immer fest auf das Verzeichnis plugin zugreifen und möglicherweise nicht mehr funktionieren, wenn Sie den Verzeichnisnamen ändern!

Pfad zur Administration Der Pfad, den Sie aufrufen, um das Backend (die Administrationsoberfläche) hervorzubringen.

Pfad zur Suche Der Pfad zur Suche nach Begriffen in Artikeltexten.

Pfad zu Kommentaren Der Pfad zur Übersicht von Kommentaren zu Artikeln.

Generelle Einstellungen

Weitere globale Einstellungen befinden sich im Bereich Generelle Einstellungen.

configuration_gs_dm_de.png
Abbildung 4.23d: Einstellungen: Konfiguration - Generelle Enstellungen

Blog-Titel Der Blog-Titel legt die Überschrift Ihres Blogs fest. Hier können Sie auch Sonderzeichen einfügen, jedoch keinen HTML-Code oder Grafiken. Eine derartige Sonderdarstellung müssen Sie über Anpassungen in Ihrem Template vornehmen (siehe Seite templatefiles).

Blog-Beschreibung Die Blog-Beschreibung wird unterhalb des Blog-Titels im Frontend angezeigt. Auch hier können Sie Sonderzeichen einfügen, aber keinen HTML-Code.

E-Mail-Adresse des Blogs Wenn Serendipity E-Mails an Autoren oder Kommentatoren schickt, muss eine E-Mail-Adresse für den Absender eingetragen werden. Da Serendipity E-Mails über den Webserver verschickt, muss die hier eingetragene E-Mail-Adresse auch vom Mailserver als gültig anerkannt werden. Ansonsten könnte der Mailserver Ihre E-Mail als Spam deklarieren und verwerfen. Meist können an dieser Stelle nur E-Mail-Adressen eingetragen werden, die auch auf demselben Server gehostet werden. Sollte Serendipity einmal keine Mails an Sie verschicken, prüfen Sie, ob Sie hier eine gültige Adresse eingetragen haben und ob Ihr Webserver auch in der Lage ist, E-Mails mittels sendmail [*] Sendmail ist ein Unix-Mailbefehl, der von PHP nur genutzt werden kann, wenn dieses Paket auf dem Server installiert ist. zu versenden. Auf Windows-Servern muss ein Mailserver in der php.ini-Datei eingetragen werden.

HTML Kommentare Mit dieser Einstellung erlauben Sie den Rich-Text-Editor für Kommentarfelder, sowohl im Frontend als auch im Backend. Es wirde das Möglichste getan um dieses Feature so sicher wie möglich zu machen. Wenn die Rich-Text-Editor (WYSIWYG)-Option in den "Eigenen Einstellungen" erlaubt ist, können Sie hier also zusätzlich "tag"-beschränkte HTML-Kommentare und "pre/code" HTML-Auszeichnungs-Bestandteile zulassen, die in Backend- und Frontend-Seiten als HTML verarbeitet, aber vom Editor nur im Backend bearbeitet werden. Bitte beachten Sie: Diese Option gibt auch alte Kommentare frei, um ihren eventuellen Markup Inhalt als HTML anzuzeigen. Überprüfen Sie diese also besser vor der Erlaubnis (!), damit Sie keine versehentlich genehmigten, aber unsichere (javascript oder links, etc) Kommentar Inhalte in Ihrer Datenbank gespeichert haben. Ansonsten eignen sich Rich-Text-Editor-Kommentare auch hervorragend, um lästige Bot-Programm-Spammer loszuwerden.

Abonnieren von Einträgen erlauben? Wenn Sie es Ihren Besuchern erlauben wollen, dass sie per E-Mail über Kommentare benachrichtigt werden, muss diese Option aktiviert sein. Ein Benutzer kann Kommentare jedoch nur abonnieren, wenn er selber zu einem Beitrag kommentiert hat.

Double-Opt In für Kommentar-Abonnementmails? Falls aktiviert, wird einem Besucher Kommentator, der E-Mail-Benachrichtigungen zu neuen Kommentaren abonnieren möchte, eine E-Mail zugeschickt. Diese enthält einen Bestätigungslink nach dem z.B. für Deutsche Gesetze erforderlichen Opt-In-Schema.

Schnelle Kommentar-Moderation verwenden? Diese Methode setzt Tokens ein, damit Kommentare direkt aus der Hinweis-E-Mail heraus gelöscht oder akzeptiert, also administriert werden können. Diese Funktion ist für höheren Komfort gedacht, geht aber zu Lasten der Sicherheit: Wenn jemand die E-Mail abfängt, kann diese Person entsprechende Kommentare ohne weitere Authentifikation löschen oder freischalten.

Sprache An dieser Stelle können Sie die Sprache der Oberfläche des Blogs wählen. Serendipity zeigt dann alle eigenen Meldungen in dieser Sprache an. Im Gegensatz zur Spracheinstellung im Menü Eigene Einstellungen wird hier nur die Sprache für Besucher des Blogs eingestellt. Ihre persönliche Spracheinstellung "überschreibt" diesen Wert.

Zeichensatz-Auswahl Serendipity ermöglicht die Darstellung aller Meldungen und Ihrer eigenen Artikel in verschiedenen Zeichensätzen. Alle Sprachen können im Zeichensatz UTF-8 abgebildet werden, daher ist dieser Zeichensatz mittlerweile der Standard im Internet. Einige andere Sprachen, besonders Chinesisch, verwenden jedoch eigene, nationale Zeichensätze zur korrekten Darstellung. Wenn Sie in dem Auswahlfeld dieser Option Nationaler Zeichensatz wählen, wird dieser spezielle nationale Zeichensatz benutzt (abhängig von der jeweils gewählten Sprache). Wenn Ihr Blog bereits Artikel enthält, wird die Umstellung dieser Option dazu führen, dass die Sonderzeichen Ihrer Artikel falsch angezeigt werden. Sie müssen daher die Konvertierung in diesem Fall manuell vornehmen, wie im Kapitel Falsche Anzeige von Datumsangaben oder Sonderzeichen ab Seite Falsche Anzeige von Datumsangaben oder Sonderzeichen beschrieben.

Kalendertyp Für einige Kulturen gibt es möglicherweise unterschiedliche Arten der Kalender-Darstellung. Für Serendipity wurde daher der persische Kalender als Alternative zum bekannten gregorianischen Kalender eingebaut und kann hier ausgewählt werden.

Sprache des Browsers eines Besuchers verwenden Wenn diese Option aktiviert ist, wird Serendipity die Sprache des Frontends abhängig von der im Browser des Besuchers eingestellten Sprache auswählen. So können Sie es Ihren Besuchern erleichtern, die umgebenden Texte zu verstehen, wenn sie Ihre Artikel in der Landessprache nicht lesen können. Bitte beachten Sie, dass diese Sprachauswahl die Artikel nicht automatisch übersetzen kann.

Plugin-Rechte für Benutzergruppen aktivieren? Serendipity ermöglicht es, pro Benutzergruppe zu definieren, welche Plugins von dieser Gruppe im Backend ausgeführt werden dürfen. Über die Definition in der Gruppenverwaltung kann verhindert werden, dass bestimmte Autoren zum Beispiel Zugriff zu dem Plugin Statische Seiten haben. Da es in Blogs relativ selten vorkommt, dass Sie den Zugriff derart strikt eingrenzen müssen, ist diese Option standardmäßig nicht aktiviert und muss daher bewusst von Ihnen eingeschaltet werden. Das Einschalten dieser Option kann die Performance von Serendipity spürbar negativ beeinflussen, da für jede Ausführung eines Plugins nun erst geprüft werden muss, ob Zugriff darauf erlaubt ist. Wenn Sie also auf diese Flexibilität verzichten können, sollten Sie die Option Plugin-Rechte für Benutzergruppen aktivieren weiterhin auf Nein stellen.

Update-Hinweis Mit dieser Option aktivieren Sie den Serendipity Update Hinweis und den "1-Klick"-Upgrade Task in der Backend Startseite, wenn das serendipity_event_autoupdate Plugin installiert ist und ein neues Update bereitsteht. Aus Performancegründen wird das Ergebnis für 6 Stunden gecached.

Update-RELEASE-Datei URL Mit dieser URL positionieren Sie den Zeiger auf die Serendipity Styx Release Datei. Dies ist Bestandteil der vorangegangen (aktiv gesetzten) Update-Hinweis Option.

Log Level Wenn diese Option aktiviert ist, schaltet Serendipity in verschiedenen Bereichen ein Developer Debug Level ein. Je nach Implementierung im Serendipity-Code wurden Debugging-Ausgaben platziert und in eine Tagesdatei unter templates_c/logs/ geschrieben. Diese Option sollte nur aktiviert werden, wenn Probleme in der Funktionsausführung bestehen. Wird die Option auf "Fehler" gesetzt, werden PHP-Fehler in jenes Logfile geschrieben. Hierbei wird die PHP error_log Option überschrieben. Das Serendipity Styx event_changelog Plugin erlaubt diese Logdateien am Tage selbst komfortabel aus dem Wartungsbereich und innerhalb der eingelogten Sitzung heraus zu lesen. Ansonsten sind Vorkehrungen getroffen, dass auf diese Textdateien nicht ohne weiteres von außen zugegriffen werden kann und alte Logdateien in der Wartung gelöscht werden können, da sie eventuell relevante interne Daten enthalten.

Erlaube caching (EXPERIMENTAL) Wenn diese Option aktiviert ist, erlaubt Serendipity einen internen Puffer (cache) einzuschalten, um spezifische SQL queries zwischenzuspeichern. Dadurch verringert sich die Last auf Servern mit mittlerem bis hohem Verkehr und verbessert die Ladezeit. Diese Option ist immer noch experimentell und bisher nur ungenügend validiert und getestet.

Design und Optionen

Optionen, die das Aussehen des Blogs betreffen, sind im Bereich Design und Optionen zusammengefasst.

configuration_dao_dm_de.png
Abbildung 4.23e: Einstellungen: Konfiguration - Design und Optionen

Anzahl der Artikel auf der Startseite Standardmäßig zeigt Serendipity die letzten 15 Artikel auf der Startseite. Über die Einstellung Anzahl der Artikel auf der Startseite können Sie diese Anzahl kontrollieren, die auch für alle Übersichtsseiten angewendet wird.

Einträge im Feed Analog zu der Anzahl der Artikel auf der Startseite bestimmt die Option Einträge im Feed, wie viele Artikel in Ihrem RSS-Feed standardmäßig enthalten sind. Eine hohe Einstellung dieser Zahl stellt Ihren Besuchern zwar mehr Einträge dar, vergrößert aber auch die Dateigröße des RSS-Feeds (und damit den Traffic) erheblich.

Stabile Archive Diese Option sortiert die Archiv-Seiten absteigend, so dass sie auf einer festen Seite bleiben und Suchmaschinen sie nicht immer wieder neu indizieren müssen. Voreingestellt ist aber die fortlaufende Sortierung.

Wie sollen Such-Resultate sortiert werden? Diese Auswahlbox sortiert die Such-Resultate nach Datum oder Relevanz.

Strikte RFC2616 RSS-Feed Kompatibilität Wie im Kapitel Caching von RSS-Feeds auf Seite Caching von RSS-Feeds erklärt, können RSS-Feeds bei Ihren Besuchern zwischengespeichert werden. Dieses Caching macht möglicherweise bei einer kleinen Anzahl von Software-Programmen Probleme. Sollte die benutzerseitige Deaktivierung des Cachings (siehe erwähntes Kapitel) nicht ausreichen, können Sie die Option Strikte RFC2616 RSS-Feed Kompatibilität aktivieren. Serendipity verhält sich dann absolut standardgemäß, verzichtet jedoch auf das zusätzliche Feature der fallweisen Artikelauslieferung abhängig vom letzten Besuchsdatum. Zwei weitere Einstellungen, die das Caching beeinflussen, können Sie auf Seite Caching-Variablen nachschlagen.

GZIP-Kompression verwenden Wenn Serendipity den HTML-Code des Frontends an den Browser Ihrer Besucher ausgibt, wird dabei eine Menge an Klartext-Daten übertragen. Klartext lässt sich mittels ZIP-Kompression relativ stark bündeln und bietet sich daher zum Einsparen von Traffic an. Gerade bei Besuchern mit niedriger Bandbreite (Benutzer von Modems, GPRS-Verbindungen) kann die GZIP-Komprimierung einige Vorteile bringen. Leider benötigt das Packen mit GZIP-Kompression einiges an CPU-Leistung. Daher muss man abwägen, ob der eigene Server eher einen Engpass bei der CPU-Leistung oder bei der Trafficmenge hat. Zwar wird eine Aktivierung der GZIP-Kompression weniger Daten übertragen, aber die Performance von Serendipity wird dadurch sinken. Hier müssen Sie eine Entscheidung treffen. Da Bandbreite heutzutage ein selteneres Problem ist, empfehle ich, zugunsten der Servergeschwindigkeit diese Option zu deaktivieren.

Popups für Kommentare, Trackbacks usw. verwenden? Blendet Serendipity im Frontend einen Link auf Kommentare und Trackbacks eines Artikels ein, können diese Links entweder auf die vollständige Artikelansicht zeigen oder auch ein Popup-Fenster mit der gewünschten Darstellung öffnen. Wenn Sie diese Popups benutzen wollen, aktivieren Sie die Option Popups für Kommentare, Trackbacks usw. verwenden. Beachten Sie jedoch, dass Popups bei vielen Internet-Nutzern verpönt sind und es daher empfehlenswert ist, Ihren Besuchern die Wahl zu lassen, ob sie etwas als Popup öffnen möchten oder nicht. Jeder moderne Browser bietet dazu das Öffnen von Links in einem neuen Fenster mit einfachem Mausklick der mittleren Taste an.

Eingebettete Nutzung von Serendipity aktivieren? Wenn Sie Serendipity in eine andere Anwendung einbetten wollen, können Sie die Ausgaben von Serendipity zentral speichern und in der PHP-Anwendung weiterverarbeiten. Damit diese Einbindung gelingt, darf Serendipity dann keine HTML-Kopf- und -Fußzeilen senden. Die Aktivierung dieser Option bietet genau dies: Serendipity sendet dann nur den eigentlichen Inhalt des Blogs, der von der fremden Anwendung im Zusammenspiel mit der Option Index-Datei (siehe Seite index-Datei) genutzt werden kann. Diese Option war besonders für ältere Serendipity-Versionen notwendig. Seit es Smarty-Templates gibt, kann man diese Templates auch leicht so anpassen, dass keine Kopf- und Fußzeilen mehr gesendet werden müssen. Schlagen Sie im Kapitel sharedinstall ab Seite sharedinstall nach, um eine Anleitung zur Einbettung von Serendipity zu erhalten. Sollte Ihr Serendipity-Blog ein merkwürdiges Layout aufweisen, ist womöglich die Aktivierung dieser Option "schuld" daran.

Externe Links klickbar? Für die Seitenleisten-Plugins Top Exits und Top Referrer kann man mittels dieser Option einstellen, ob in diesen Plugins dargestellte Links mittels HTML klickbar dargestellt werden oder nicht. Eigentlich gehört diese Option mittlerweile in die Konfigurationsseite der beiden Plugins. Aus historischen Gründen ist die Option jedoch in der globalen Konfiguration enthalten und wird möglicherweise in zukünftigen Versionen verschwinden.

Referrer-Tracking aktivieren? Wenn Sie die Option Referrer-Tracking aktivieren, wird bei jedem Aufruf einer Serendipity-Seite ausgewertet, von welcher Seite ein Besucher kam. Diese Daten können dann in den Statistiken verwendet werden und zeigen Ihnen, von welchen Webseiten häufig zu Ihnen verlinkt wird. Leider wurde diese Option im Laufe der Zeit sehr oft durch Spammer missbraucht und zeigt nur noch in seltenen Fällen wirklich nutzbare Daten an.

Geblockte Referrer Um ein wenig Kontrolle auf Referrer-Spammer auszuüben, können Sie in diesem Eingabefeld mehrere Stichwörter eintragen, die Sie mittels ; voneinander trennen. Sobald eines dieser Stichwörter in der URL eines Besuchers vorkommt, wird diese URL nicht mit in die Referrer-Statistik übernommen.

URL-Formung Die Option URL-Formung ist zuständig, um sprechende URLs zu aktivieren (siehe Seite mod-rewrite). Ob Serendipity URLs hübsch formatieren kann, hängt davon ab, ob Ihr Webserver dies unterstützt. Die Unterstützung können Sie ausprobieren, indem Sie testweise einfach die Methoden zur URL-Formung aktivieren und die Konfiguration abspeichern. Besuchen Sie danach Ihr Frontend und prüfen Sie, ob der Link zu einer Artikel-Detailseite noch funktioniert. Wenn Sie Fehlermeldungen erhalten oder dies nicht klappt, müssen Sie die URL-Formung wieder deaktivieren. Die Administrationsoberfläche können Sie immer unter http://www.example.com/serendipity/serendipity_admin.php auch im Fehlerfall aufrufen. Möglicherweise müssen Sie dazu die Datei .htaccess löschen, wenn bei Ihrem Webserver sonst alle Aufrufe fehlschlagen. Folgende Arten der URL-Formung sind möglich: Disable URL Rewriting Bei dieser Methode werden sprechende URLs deaktiviert. Ein Link sieht dann aus wie: http://www.example.com/serendipity/index.php?/archives/1-MeinArtikel.html Diese URLs mögen für Sie zwar sprechend aussehen, aber für eine Suchmaschine wie Google sind sie es nicht und können daher nicht zur Aufwertung der Auffindbarkeit dienen (siehe Kapitel SEO). Use Apache ErrorHandling Auf vielen Apache-basierten Webservern ist diese Methode einsetzbar. Mittels eines kleinen Tricks werden Fehlerseiten dazu benutzt, um die eigentlich nicht existierende virtuelle Seite aufzurufen. Eine URL sieht dann aus wie: http://www.example.com/serendipity/archives/1-MeinArtikel.html Der Nachteil dieser Methode ist, dass für jeden URL-Aufruf in Ihrem Apache Fehler-Logfile ein Eintrag erscheint, was man als unsexy bezeichnen könnte. Use Apache mod_rewrite Die performanteste Methode der URL-Formung stellt Use Apache mod_rewrite dar. Sie produziert identische URLs wie das Apache ErrorHandling, ist aber flexibler und erzeugt keine Fehler-Logfile-Einträge.

Basiert die Zeitdifferenz auf der Server-Zeitzone? Wenn Ihr Webserver in einer anderen Zeitzone als Ihr eigener Computer steht, kann es zu einem Zeitversatz kommen. Mir dieser Auswahl werden Eintragszeiten nach Server-Zeitzone eintragen oder nicht. YES wählt die Server-Zeitzone als Basis, NO wählt GMT.

Zeitunterschied des Servers Wenn Ihr Webserver in einer anderen Zeitzone als Ihr eigener Computer steht, kann es zu einem Zeitversatz kommen. Ihr Server würde Artikel, die Sie um 15:00 Uhr Ortszeit erstellen, je nach Serverzeit möglicherweise für 03:00 Uhr morgens auszeichnen. Um diesen Zeitversatz zu korrigieren, können Sie in dem Eingabefeld Zeitunterschied des Servers eintragen, wie viele Stunden Zeitunterschied zwischen Ihrem Computer und dem Server liegen. Um diesen Zeitunterschied herauszufinden, wird die aktuelle Serverzeit im Text neben der Eingabebox für Sie angezeigt. Sie können halbe Stunden mit einer Angabe wie 1.5 eintragen. Negative Zeitunterschiede geben Sie mit einem vorangestellten - an.

Zukünftige Einträge zeigen Üblicherweise wird Serendipity nur Artikel darstellen, deren Uhrzeit nicht vor der aktuellen Serverzeit liegt. So können Sie zukünftige Einträge bereits verfassen, ohne dass Sie zum jeweiligen Zeitpunkt manuell etwas freischalten müssen. Wenn Sie jedoch auch zukünftige Artikel anzeigen wollen (zum Beispiel für ein Blog mit in der Zukunft stattfindenden Ereignissen), können Sie die Option Zukünftige Einträge zeigen aktivieren.

Leserechte auf Kategorien anwenden Serendipity unterstützt die Möglichkeit, Artikel in Kategorien mit einem Leseschutz zu versehen. So können Sie einer Kategorie Leserechte nur für bestimmte Benutzergruppen zuweisen, und alle anderen Benutzergruppen (insbesondere anonyme Besucher des Frontends) können dann Artikel in dieser Kategorie nicht lesen. Dies ermöglicht es, Serendipity auch als CMS einzusetzen. In vielen Blogs ist ein derartiger Zugriffsschutz jedoch nicht notwendig, da alle Artikel von allen Besuchern gelesen werden sollen. Ist dies der Fall, können Sie die Option Leserechte auf Kategorien anwenden gerne auf Nein setzen. Dies wird die Geschwindigkeit der Darstellung im Frontend positiv beinflussen, da weitaus weniger Datenbankabfragen ausgeführt werden müssen, um die Artikelübersicht zu erzeugen.

Feed-Einstellungen

Der vorletzte Bereich, Feed-Einstellungen, legt einige Optionen für die Blog Feeds fest.

configuration_feed_dm_de.png
Abbildung 4.23f: Einstellungen: Konfiguration - Feed-Einstellungen

Einträge mit erweitertem Text im RSS-Feed einbinden Erweiterte Ja - Nein - Client Abfrage. Voreinstellung: Nein. Ein RSS-Feed enthält üblicherweise nur den Text eines Artikels, den Sie im Feld Eintrag erfasst haben. Der Erweiterte Eintrag ist nicht Bestandteil der RSS-Feeds, und somit muss ein Benutzer Ihr Blog besuchen, um den vollständigen Artikel lesen zu können. Dies ist häufig gewünscht, um mehr Besucher auf die Webseite zu "locken". Um Ihren Besuchern mehr Komfort zu bieten, können Sie aber auch den vollständigen Artikel im RSS-Feed eintragen. Mit dieser Konfigurationsoption können Sie dieses Verhalten beeinflussen. Wenn Sie die Option Client aktivieren, kann, wie im Abschnitt FullFeed auf Seite FullFeed erwähnt, der Leser selbst bestimmen, ob er einen vollständigen RSS-Feed haben will oder nicht. Dazu muss er Ihren RSS-Feed über die Datei rss.php?fullFeed=true abonnieren. Dies ist natürlich relativ versteckt, so dass Sie Ihre Besucher über diese mögliche Variante informieren müssten.

Bild für den RSS-Feed Ein (string) input Feld. Voreinstellung: Leer (leer heißt: Binde das Serendipity-Logo ein). URL für ein Bild im GIF/JPEG/PNG Format, falls vorhanden.

Breite des Bildes Ein (string) input Feld. Voreinstellung: Leer (in Pixeln, max. 144).

Höhe des Bildes Ein (string) input Feld. Voreinstellung: Leer (in Pixeln, max. 400).

E-Mail-Adressen einbinden Einfache Ja - Nein Abfrage. Voreinstellung: Nein.

Feld "managingEditor" Ein (string) input Feld. Voreinstellung: Leer (leer heißt: nicht verwenden). E-Mail-Adresse des verantwortlichen Editors, falls vorhanden. [RSS 2.0]

Feld "webMaster" Ein (string) input Feld. Voreinstellung: Leer (leer heißt: nicht verwenden). E-Mail-Adresse des Webmasters, falls vorhanden. [RSS 2.0]

Feld "ttl" (time-to-live) Ein (string) input Feld. Voreinstellung: Leer (leer heißt: nicht verwenden). Anzahl der Minuten, nachdem das Blog von fremden Seiten nicht mehr gecached werden sollte. [RSS 2.0]

Feld "pubDate" Einfache Ja - Nein Abfrage. Voreinstellung: Ja. Soll das "pubDate"-Feld für den RSS-Kanal eingebettet werden, um das Datum des letzten Eintrags zu enthalten?

Individuelle Feed-URL Ein (string) input Feld. Voreinstellung: Leer. Wenn gesetzt, wird die eingetragene URL verwendet um Feedreader dorthin weiterzuleiten. Dies ist hilfreich für Statistikdienste wie z.B. Feedburner, so dass hier die Feedburner-URL des eigenen Feeds hinterlegt werden kann.

Erzwingen der individuellen Feed-URL Einfache Ja - Nein Abfrage. Voreinstellung: Nein. Wenn aktiviert, werden alle Feedreader automatisch zu der eingetragenen individuellen Feed-URL weitergeleitet.

Bildkonvertierung

Der letzte Bereich, Bildkonvertierung, legt einige Optionen für die Mediathek und die Vorschaubild-Erzeugung fest.

configuration_img_dm_de.png
Abbildung 4.23g: Einstellungen: Konfiguration - Bildkonvertierung

ImageMagick zur Skalierung verwenden Wenn auf Ihrem Webserver die Software ImageMagick [*] https://imagemagick.org/ installiert ist, können Sie diese Software zur Erstellung und Konvertierung von Vorschaubildern benutzen. Ist ImageMagick nicht aktiviert, kann Serendipity auch die PHP-Bibliothek gdlib (für JPG, PNG, GIF, WBMP, WebP, XBM und XPM Dateien) einsetzen. Jede dieser Bildverarbeitungsbibliotheken hat ihre Vor- und Nachteile. Sowohl GD als auch ImageMagick bieten einige grundlegende Funktionen wie: - Größenanpassung und Zuschneiden von Bildern, - Erstellen von Bildern, die aus benutzerdefinierten Formen, Text und anderen Bilddateien bestehen, - Anwendung von Bildfiltern (Änderung von Helligkeit, Kontrast, Einfärbung usw.). Die GD-Bibliothek ist durch die direkte Einbingung in PHP weit verbreitet, so dass sie wahrscheinlich überall -out-of-the-box- funktionieren wird. ImageMagick bietet den Vorteil, dass zB. auch Vorschaubilder von PDF-Dateien erzeugt werden können, oder TIFF Bilddateien bearbeitet werden können. Bis auf diesen Vorteil sind GD-Lib und ImageMagick in den Grundfunktionen ungefähr gleichwertig; anderseits aber unterstützt ImageMagick mehr Dateitypen und kann Bilder auf viel mehr Arten transformieren als die GD-Bibliothek. Es erlaubt Ihnen, Code von größerer Klarheit und Qualität zu schreiben. Und ImageMagick kann exaktere Zuschnitte von Bildern forcieren, was eventuell bei der Serendipity Mediathek von Bedeutung sein kann.

Pfad zur "convert" ImageMagick-Datei In diesem Eingabefeld müssen Sie den vollständigen Pfad zur ImageMagick-Datei auf dem Webserver eintragen. ImageMagick kann nur ausgeführt werden, wenn der Webserver-Benutzer für diese Datei Zugriffsrechte gewährt. Gerade bei aktiviertem Safe Mode ist dies selten der Fall. Deaktivieren Sie ImageMagick, falls Fehlermeldungen bei der Vorschaubild-Erzeugung auftreten.

Vorschaubild-Endung Als Thumbnail bezeichnet man die Vorschaugrafiken, die Serendipity von einer Bilddatei automatisch erzeugt. Jede dieser Vorschaugrafiken enthält standardmäßig den Namenszusatz styxThumb. Die Vorschaudatei zum Bild logo.jpg wird also logo.styxThumb.jpg heißen und im selben Verzeichnis angelegt werden. Diesen Dateinamen können Sie über die Option Vorschaubild-Endung selber festlegen. Wenn Sie den Dateinamen ändern und bereits Dateien in der Mediathek vorhanden sind, müssen Sie im Menü Mediathek auf Vorschauen erneuern klicken.

Vorschaubildgröße Jede Grafikdatei wird standardmäßig auf maximal 400 Pixel Breite oder Höhe für die Vorschaugrafik verkleinert. Der jeweils größere Wert (Breite oder Höhe) wird dabei auf 400 Pixel verkleinert und der jeweils kleinere Wert unter Berücksichtigung der Bildproportionen errechnet. Serendipity zeigt die Vorschaubilder in der Mediathek stets in der hier konfigurierten Größe an. Wenn Sie also größere (oder kleinere) Vorschaubilder bevorzugen, können Sie die maximale Größe unter Vorschaubildgröße einstellen. Auch hier müssen Sie auf Vorschauen erneuern klicken, wenn Sie diesen Wert ändern, obwohl Sie schon Dateien in die Mediathek eingestellt haben.

Bestimmung der maximalen Vorschaubildgröße Legt fest, wie die Größe der Thumbnails angepasst werden soll. Der Standard "Längste Seite" nutzt die größte Seite als Beschränkung, so dass weder Breite noch Höhe die festgelegte Zahl überschreiten dürfen. "Breite" und "Höhe" legen lediglich die Höhe bzw. Breite als größte Seite fest, so dass die jeweils andere Angabe auch größer als die festgelegte Zahl sein darf.

Maximale Dateigröße für den Upload Wenn Sie den Upload von Dateien künstlich einschränken wollen, können Sie die maximale Dateigröße einer in die Mediathek hochgeladenen Datei über das Feld Maximale Dateigröße für den Upload einstellen. Beachten Sie, dass Sie diesen Wert nicht größer einstellen können als die ebenfalls limitierenden Konfigurationsoptionen upload_max_filesize, post_max_size und max_input_time der php.ini (siehe Kapitel file-uploads auf Seite file-uploads).

Maximale Breite eines hochgeladenen Bildes Maximale Höhe eines hochgeladenen Bildes Abgesehen von der Dateigröße können Sie ein hochgeladenes Bild auch auf eine maximale Auflösung festlegen. Wenn das Bild eine dieser Dimensionen überschreitet, wird es nicht akzeptiert. So können Sie verhindern, dass Redakteure Bilder hochladen, die für den Einsatz im Internet nicht geeignet sind.

Vor dem Upload Größe anpassen Mittels Javascript werden Bilder vor dem Upload an die gewählte Maximalgröße angepasst. Wenn aktiv, wird Ajax für den Bildupload verwendet, was auch zur Entfernung des "Eigenschaften angeben"- Buttons führt. Dieses muss dann separat geschehen. ACHTUNG: Diese Einstellung verhindert andere Optionen, insbesondere dann, wenn das imageselectorplus event Plugin genutzt wird!

Nutzung von AVIF Variationen (PHP 8.1+) aktivieren Image AVIF Variationen können sehr ressourcenintensiv sein, da viel Ram und CPU/GPU Kerne benötigt werden um Bilder in das AV1 Format zu kodieren. Massenuploads und Massenkonvertierungen (siehe "Wartung") sind daher nicht zu empfehlen. Erlernen Sie den Umgang erst an ein paar Beispielen, bevor Sie die Nutzung verbleibend erlauben. ACHTUNG: PHP 8.1 fehlt noch eine entscheidende Funktion, um Größenangaben mit den üblichen Methoden aus AVIF Dateien auszulesen. Dies bedingt vorläufig auch, dass die Bild-Funktionen der Mediathek "Dateiausmaße ändern" und "Bild um 90° drehen" für alle Formate nicht verwendet werden können, wenn Sie AVIF verwenden, da ja jede dieser Aktionen das Originalbild, sowie dessen Variationen betrifft. Das Problem ist mit PHP 8.2 gelöst, welches die fehlende Funktion nachliefert.

Automagische Synchronisation der Mediathek Da Serendipity, wie im Kapitel Mediathek ab Seite Mediathek beschrieben, den Dateibestand des Upload-Verzeichnisses mit einer eigenen Datenbanktabelle abgleicht, kann es hier zu Unterschieden kommen. Serendipity kann bei jedem Aufruf der Mediathek prüfen, ob möglicherweise Dateien hinzugekommen oder gelöscht worden sind. Dazu werden alle Verzeichnisse und Dateien auf dem Server mit der Datenbank abgeglichen. Serendipity optimiert den Zugriff dabei, indem es diese Aktion nur ausführt, wenn sich etwas an der Menge der Dateien und Unterverzeichnisse getan hat. Dieser Vorgang kann bei einer großen Mediathek möglicherweise zu Ressourcen-Engpässen führen. In so einem Fall müssen Sie die automagische Synchronisation deaktivieren. Wenn der automatische Synchronisationsvorgang eine neue Datei findet oder eine alte Datei löscht, wird dies direkt innerhalb der Mediathek dargestellt.

Dynamische Bildgrößenanpassung erlauben Üblicherweise kann Serendipity von einem Bild entweder nur die Originalgrafik oder die Vorschaugrafik zurückliefern. Ein Teil der Mediathek kann aber auch (manuell) über das Frontend angesprochen und benutzt werden, um Grafiken auch in jeder anderen beliebigen Dateigröße auszugeben (siehe Seite mdb-profi).

EXIF/JPEG Metadaten übernehmen? Wenn Sie ein Bild in die Mediathek von Serendipity hochladen, kann Serendipity automatisch die Binärdaten des Bildes auswerten und in der Mediathek speichern. In solchen Binärdateien können sogenannte EXIF-Daten [*] https://www.exif.org/ gespeichert werden, die zB. von Digitalkameras automatisch eingefügt werden und Informationen über Belichtungszeit und Aufnahmezeitpunkt enthalten. Serendipity kann diese Metadaten innerhalb der Mediathek anzeigen. Da das Auslesen der Binärdaten einiges an Server-Ressourcen beanspruchen kann, könnte dies möglicherweise zu sehr großen Datenmengen in der Datenbank (dort werden die Metadaten zwischengespeichert) oder auch dazu führen, dass das Hochladen von Dateien fehlschlägt. Deaktivieren Sie in diesem Fall die Option EXIF/JPEG Metadaten übernehmen.

Medien-Eigenschaften Zu jeder Datei in der Serendipity-Mediathek können Sie eine selbst definierte Menge von möglichen Metadaten eintragen. Standardmäßig greift Serendipity dabei auf die Felder DPI (nur bei Bildern), Laufzeit (nur bei Video/Audio), Datum, Copyright, Titel, Kurzer Kommentar und Langer Kommentar zurück. Diese verwendeten Felder werden in der Eingabebox Medien-Eigenschaften festgelegt. Die Eingabebox mag für Sie etwas kryptisch erscheinen, ist aber für Serendipity ein sehr schneller Weg, ohne umständliche Zusatzoberfläche Ihre Eingaben zu erfassen. Alle gewünschten Felder werden dabei mit einem ;-Zeichen getrennt: DPI;DATE;COPYRIGHT;TITLE;COMMENT1;COMMENT2 Jedes Feld kann einen beliebigen Namen haben, der aber keine Sonderzeichen und Leerzeichen beinhalten darf. Wie der Name eines Feldes später in der Mediathek angezeigt wird, richtet sich ebenfalls nach diesem Feld. Serendipity sucht dabei in den Sprachdateien (siehe Kapitel lang-dir, Seite lang-dir) nach einer definierten Konstante MEDIA_PROPERTY_DPI. Ist diese Konstante definiert, wird die darin definierte Bezeichnung in der Mediathek angezeigt. Gäbe es keine solche Konstante, würde der Begriff selbst dargestellt werden. Wenn Sie also das Feld QUALITAET am Ende einfügen, wird in der Mediathek auch QUALITAET angezeigt. Um eine eigene, klarere Bezeichnung zu wählen, müssen Sie die Konstante selbst definieren, wie im angesprochenen Kapitel erwähnt. Nun kann jedes aufgeführte Feld noch einige Optionen aufweisen, die jeweils durch das :-Zeichen getrennt werden. Vier Optionen sind verfügbar: :IMAGE wenn das vorangehende Feld nur für Bilddateien benutzt werden soll. :VIDEO wenn das vorangehende Feld nur für Videos benutzt werden soll. :AUDIO wenn das vorangehende Feld nur für Sounddateien benutzt werden soll. :MULTI wenn eine Medien-Eigenschaft einen längeren Eingabetext anstelle nur einer einzeiligen Eingabebox zulassen soll. Beispielsweise möchten Sie gerne für Bilder ein Eingabefeld Bildqualität, für Videos Bewegungsqualität und für alle Dateien pauschal ein großes Eingabefeld Einsatzzweck speichern. Dafür würden Sie folgende Konfiguration vornehmen: Bildqualitaet:IMAGE;Bewegungsqualitaet:VIDEO;Einsatzzweck:MULTI

Medien-Schlüsselwörter Jeder Datei in der Datenbank können Sie über die Eigenschaftsoberfläche einer Liste von selbst definierten Schlüsselwörtern zuordnen. Dabei können mehrere Schlüsselwörter einer einzelnen Datei zugewiesen werden, und die Mediathek kann später auch nach diesen Schlüsselwörtern durchsucht werden. Schlüsselwörter werden fest in der Eingabebox Medien-Schlüsselwörter vorgegeben. Alle möglichen Schlüsselwörter müssen Sie mit einem Semikolon voneinander trennen. Ein einzelnes Schlüsselwort darf in diesem Fall auch Sonderzeichen und Leerzeichen enthalten.

Erlaube, Daten über lokale URLs abzurufen Standardmäßig ist es aus Sicherheitsgründen verboten, Daten über lokale URLs abzurufen, um Server-Side Request Forgery (SSRF) zu vermeiden. Wenn Sie ein lokales Intranet verwenden, können sie die Datenabfrage über diese Option explizit erlauben.

 

Über den Button Testen & speichern können Sie die geänderte Konfiguration sichern. Serendipity wird die Datei serendipity_config_local.inc.php immer neu abspeichern, egal ob und welche Änderungen erfolgt sind. Bei Änderungen an der Permalink-Struktur oder den Pfaden wird zusätzlich die Datei .htaccess erneut erstellt.

Durch einen Klick auf diesen Button können Sie daher auch eine versehentlich gelöschte .htaccess-Datei wieder neu erzeugen.

Profi-Einstellungen

Abgesehen von diesen menügesteuerten Einstellungsoptionen besitzt Serendipity noch einige versteckte Optionen. Diese legt man in den Dateien serendipity_config_local.inc.php und serendipity_config.inc.php fest. Dafür müssen Sie also die beiden genannten Dateien mit einem Editor öffnen und ändern. Innerhalb der Datei sind einige Werte festgelegt, die sich alle auf unterschiedliche $serendipity[...]-Variablen beziehen.

Diese Variablen sind im Folgenden aufgeführt. Einige von ihnen werden über die Datei serendipity_config.inc.php vorbelegt, die Sie jedoch im Bedarfsfall über die eigene Konfigurationsdatei serendipity_config_local.inc.php überschreiben können.

$serendipity['versionInstalled'] In dieser Variable wird die aktuell installierte Serendipity-Versionsnummer gespeichert. Diese müssen Sie höchstens dann manuell anpassen, wenn Sie ein gescheitertes Update neu ausführen wollen!

$serendipity['dbName'] $serendipity['dbPrefix'] $serendipity['dbHost'] $serendipity['dbUser'] $serendipity['dbPass'] $serendipity['dbType'] $serendipity['dbPersistent'] Enthält die Zugangsdaten und Parameter der Datenbankverbindung, mit der Serendipity installiert ist. Diese Variablen können normal über die Serendipity-Konfiguration eingestellt werden und sollten daher in dieser Datei nur geändert werden, wenn Sie die Datenbank oder den Server gewechselt haben und nicht mehr auf Ihre Serendipity-Installation zugreifen können.

$serendipity['noautodiscovery'] Wenn Serendipity nicht versuchen soll, automatische Trackbacks an URLs zu schicken, die Sie in Ihren Artikeln angegeben haben, können Sie die Variable $serendipity['noautodiscovery'] auf true setzen. Standardmäßig ist die Variable überhaupt nicht gesetzt und daher deaktiviert (false).

$serendipity['pingbackFetchPage'] Wenn Serendipity einen Pingback (siehe Seite trackback) empfängt, bedeutet dies, dass ein fremdes Blog sich auf Ihr Blog bezieht, aber kein Trackback senden möchte. Ein Pingback ist somit eine reduzierte Form des Trackbacks. Serendipity kann ab Version 1.3 Pingbacks vollständig auswerten. Da ein Pingback üblicherweise nur die URL des fremden Blogs enthält, kann es im Gegensatz zu einem Trackback keine Textauszüge mitliefern. Somit würden Sie nur die URL des fremden Blogs in Ihrem Artikel auffinden. Um Textauszüge zu beziehen, kann Serendipity die fremde URL öffnen und dort die ersten Zeichen des Textes mit einbinden. Damit dies erfolgen kann, muss die Variable $serendipity['pingbackFetchPage'] auf true gesetzt werden. Standardmäßig ist diese Variable nicht gesetzt, da das Öffnen einer fremden URL zu einem Performanceverlust des Blogs führen kann und auch DDoS-Angriffe [*] Rasche Zugriffe in Folge von mehreren automatisierten Browsern, die sämtliche Ressourcen Ihres Webservers aufbrauchen oder durch manipulierte URLs Timeouts erzeugen können. erleichtert.

$serendipity['pingbackFetchPageMaxLength'] Bei empfangenen Pingbacks wird standardmäßig nur eine beschränkte Anzahl an Zeichen der sendenden Blog-Seite abgerufen. Diese Zeichen werden später verwendet, um den Inhalt des Pingbacks zu füllen. Die Anzahl der Zeichen, die ausgelesen werden, können Sie über die Variable $serendipity['pingbackFetchPageMaxLength'] steuern, standardmäßig sind dies 200 Zeichen.

$serendipity['referrerXSRF'] Serendipity verfügt über zwei Methoden zur Sicherung des Blogs gegen XSRF-Angriffe (siehe Seite XSRF). Wenn Sie die Variable $serendipity['referrerXSRF'] auf true setzen, wird Serendipity bei einer fehlenden HTTP-Referrer-Kopfzeile (vom Browser übermittelt) eine angeforderte Aktion nicht ausführen. Diese Option können Sie aktivieren, wenn Sie Ihr Blog gegen zusätzliche Attacken sichern möchten; Sie müssen aber sicherstellen, dass alle Redakteure des Blogs in ihrem Browser die Übermittlung von HTTP-Referrern aktiviert haben und auch kein etwaiger Proxyserver diese Kopfzeilen herausfiltert. Ist der Wert auf false gesetzt, wird Serendipity eine Warnmeldung ausgeben, sobald Ihr Browser oder Proxyserver bei der Ausführung einer Aktion keinen HTTP-Referrer ausliefert.

$serendipity['expose_s9y'] Standardmäßig ist diese Variable auf true gesetzt. Dies bedeutet, dass Serendipity einige HTTP-Header an den Browser übermittelt, die darauf hindeuten, dass Serendipity auf dem Server eingesetzt wird. Wenn Sie dies aus Sicherheitsgründen vermeiden wollen, können Sie die Variable auf false setzen.

$serendipity['useHTTP-Auth'] Diese Variable ist standardmäßig auf true gesetzt und Serendipity ermöglicht damit eine HTTP-Authentifikation. Diese HTTP-Authentifikation benutzt die Abfrage eines Benutzernamens und Passworts und ist Teil des HTT-Protokolls. Ihr Browser zeigt daher für die Autorisation ein Popup-Fenster an, das den Benutzernamen und das Passwort abfragt. Die eingegebenen Daten dienen dann für den Login eines Serendipity-Benutzers und können alternativ zum Login über das Backend dienen. Der große Vorteil der HTTP-Autorisation ist, dass man sich auch ohne Interaktion des Benutzers mit dem Aufrufen einer URL einloggen kann: http://John+Doe:john@www.example.com/serendipity/ Benutzername und Passwort müssen der URL vorangestellt werden. Besonders hilfreich ist diese Art der Authentifikation für RSS-Feeds. Da diese von externen Programmen (RSS-Readern) aufgerufen werden, können Sie häufig nicht auf Ihren vorhandenen Login ins Backend zugreifen. Ohne diesen Login kann Serendipity nicht zuordnen, welcher Benutzergruppe man angehört, und so würde man eventuell lesegeschützte Artikel nicht lesen können. Gibt man als URL für den RSS-Reader jedoch diese authentifizierte URL an, kann der Login sozusagen durchgereicht werden. Wenn Sie das Authentifikations-Popup des Browsers verwenden wollen, können Sie an jede URL den Parameter http_auth=true anhängen, also zum Beispiel: http://www.example.com/serendipity/index.php?http_auth=true Die HTTP-Authentifikation kann nur bei Apache-Webservern benutzt werden, bei denen PHP als Modul (nicht als CGI) eingebunden wurde. Diese Art der Authentifikation kann man häufig auch mittels einer .htaccess-Datei herbeiführen: AuthType Basic
AuthName "Authorisation: User erforderlich"
AuthUserFile /etc/passwd
require valid-user
Sollten Sie manuell derartige Kommandos eingebaut haben, um das Frontend von Serendipity zu schützen, wird Serendipity diese automatisch auch zum Login in das Backend verwenden. Daher müssten die Benutzernamen, die Sie zum HTTP-Auth-Login verwenden, identisch sein mit den Zugangsdaten der Serendipity-Benutzerdatenbank. Sollte dies nicht der Fall sein, müssen Sie die Variable $serendipity['useHTTP-Auth'] auf false setzen und damit die HTTP-Authentifikation im Backend unterbinden. Einen Benutzernamen und ein Passwort, das Sie zum Login einsetzen wollen, können Sie auch notfalls an jede URL mit den Parametern http_auth_user und http_auth_pw anhängen: http://www.example.com/serendipity/index.php?http_auth_user=John+Doe&http_auth_pw=john Bei einem derartigen Aufruf müssen Sie darauf achten, dass Ihr Benutzername und Passwort im Klartext an den Webserver übermittelt werden und dabei möglicherweise in Zugriffs-Logfiles auftauchen könnten. Nutzen Sie daher diese Art des Logins nur in vertrauenswürdigen Umfeldern und wenn die obige Variante mittels Apache-PHP-Modul nicht möglich ist. Die sicherste Methode zum Login bleibt jedoch nach wie vor der Zugriff über das HTTPS-Protokoll.

$serendipity['use_PEAR'] PEAR ist eine Sammlung von PHP-Bibliotheken (siehe Kapitel PEAR auf Seite PEAR), die Serendipity für einige Funktionalitäten benötigt. Serendipity liefert diese Bibliotheken zwar mit, aber da sie oft auf Servern vorhanden sind und besser gewartet werden, bevorzugt Serendipity standardmäßig die Server-Bibliotheken. Dies kann jedoch möglicherweise zu Problemen führen, wenn Ihr Server ganz alte PEAR-Bibliotheken anbietet oder es zu Zugriffsrechtsproblemen kommt. In so einem Fall können Sie die Variable $serendipity['use_PEAR'] auf false setzen und damit erzwingen, dass Serendipity seine eigenen Bibliotheken benutzt.

$serendipity['CacheControl'] Falls diese Variable auf false gesetzt ist, wird Serendipity spezielle HTTP-Header senden, die es dem Browser ermöglichen, die Seiten des Blogs lokal zwischenzuspeichern. Dies beschleunigt den Aufruf von bereits besuchten Blog-Seiten ungemein. Wenn Sie jedoch ein Blog führen, in dem es häufig Änderungen im Minutentakt gibt, kann das Zwischenspeichern dazu führen, dass Ihre Besucher ältere Inhalte sehen und nicht merken, dass es neue Daten gibt. Standardmäßig ist die Variable auf true gesetzt und verbietet daher dieses Caching zugunsten stets aktueller Inhalte.

$serendipity['version'] Im Gegensatz zu $serendipity['versionInstalled'] gibt diese Variable nicht an, welche Version gerade aktiviert ist, sondern welcher Version die Dateien auf dem Server entsprechen. Dieser minimale Unterschied ist dann wichtig, wenn Sie gerade eine neue Serendipity-Version hochgeladen haben, denn Serendipity wird aufgrund eines Unterschieds in den Versionsnummern der beiden genannten Variablen erkennen, ob und wenn ja, welches Update ausgeführt werden soll. Ändern Sie diese Versionsnummer daher nicht eigenständig.

$serendipity['production'] Wenn diese Variable auf true gesetzt ist, befindet sich Serendipity im produktiven Einsatz. In diesem Fall werden dann einige Fehlermeldungen nicht ausgegeben, die Serendipity in einer Testumgebung ansonsten darstellen würde. Um Fehler leichter zu bemerken, ist diese Variable bei allen Beta-Versionen und Snapshots von Serendipity standardmäßig deaktiviert (false), damit Fehlermeldungen ausgegeben werden. In allen finalen Versionen ist sie standardmäßig aktiviert.

$serendipity['allowDateManipulation'] Standardmäßig ist diese Variable auf true gesetzt und ermöglicht es dadurch einem Redakteur, eine beliebige Uhrzeit für die Veröffentlichung seines Artikels einzutragen. Wenn Sie diese Variable auf false setzen, wird immer nur die aktuelle Uhrzeit für einen Artikel eingetragen, und Redakteuren (auch Administratoren!) ist es nicht erlaubt, das Datum zu verändern. Diese Option ist daher bei solchen Blogs sinnvoll, die streng auf ehrliche Zeitangaben setzen.

$serendipity['max_last_modified'] $serendipity['max_fetch_limit'] Diese beiden Variablen beziehen sich auf das Caching der RSS-Feeds (siehe Seite Caching von RSS-Feeds). Wenn ein Artikel von Ihnen überarbeitet wird oder einen neuen Kommentar erhält, ändert dies nichts an dem Veröffentlichungsdatum Ihres Blog-Artikels. Ein RSS-Feed würde daher Änderungen an einem Artikel nicht an die Benutzer weiterreichen. Da so ein Verhalten unerwünscht ist, sorgt Serendipity bei jeder Aktualisierung (auch bei Kommentaren) eines Artikels dafür, dass ein Aktualisierungsdatum auf den aktuellen Zeitpunkt gesetzt wird. Der RSS-Feed richtet sich nach diesem Aktualisierungsdatum und zeigt trotz aktiviertem RSS-Caching daraufhin die neuen Einträge an. Da RSS-Reader Einträge eindeutig anhand einer ID oder ihrer URL identifizieren, kann das Programm den aktualisierten Artikel erneut einlesen und Sie über Änderungen (und neue Kommentare) informieren. Die Variable $serendipity['max_last_modified'] legt nur fest, wie alt ein Artikel maximal (relativ zum aktuellen Zeitpunkt) sein darf, damit Änderungen am Artikel in RSS-Feeds als neu angesehen werden. Schließlich interessiert es einen Leser Ihres RSS-Feeds sicher nicht, wenn Sie einen zwei Jahre alten Artikel überarbeiten oder jemand den ersten Eintrag Ihres Blogs kommentiert. Diese Variable enthält eine Angabe in Sekunden, die der Abstand zwischen Veröffentlichungsdatum und aktuellem Zeitpunkt maximal betragen darf. Ist ein Artikel älter als diese Zeitangabe, wird er nicht als aktualisiert markiert. Standardmäßig ist $serendipity['max_last_modified'] auf 604800 Sekunden [*] Das entspricht sieben Tagen. Für Programme ist es einfacher, einheitlich mit Sekunden zu arbeiten, auch wenn die Angabe fürs menschliche Auge etwas merkwürdig wirken mag. gesetzt. Die zweite Variable $serendipity['max_fetch_limit'] legt fest, wie viele Artikel ein Benutzer, der Ihren RSS-Feed seit langem nicht mehr aufgerufen hat, maximal empfangen darf. Standardmäßig ist der Wert auf 50 Artikel gesetzt, um nicht zu viel Bandbreite zu verschwenden und potenziellen Missbrauch einzudämmen.

$serendipity['trackback_filelimit'] Wenn Serendipity ein Trackback zu einem Artikel schicken will, muss es die URL zu dem fremden Artikel öffnen. Dies macht Serendipity mit allen URLs, auf die Sie in einem Artikel verweisen, um automatisch herauszufinden, zu welchen URLs ein Trackback gesendet werden soll. Wenn Sie jedoch auf große Dateien (Videos, Audio-Dateien) verweisen, muss Serendipity auch diese URL vollständig abrufen. Das kann dann dazu führen, dass Serendipity sehr lange braucht, um Trackbacks auszuwerten, und währenddessen auch viel Bandbreite/Traffic aufbraucht. Sollten Sie Trackbacks aber nicht pauschal deaktivieren wollen (siehe Seite noautodiscovery), können Sie die maximale Dateigröße (in Bytes) in der Variable $serendipity['trackback_filelimit'] eintragen. Das Standardlimit steht derzeit auf 150kb. Bitte beachten Sie, dass Serendipity nicht immer von vornherein beim Besuch einer URL weiß, wie groß der Inhalt sein wird. Daher kann es auch passieren, dass URLs mit größeren Inhalten zwangsweise aufgerufen werden. In diesem Fall hilft das Plugin Trackbacks kontrollieren (siehe Seite trackbacks), mit dem Sie Trackbacks gezielt auf spezielle URLs einschränken können.

$serendipity['fetchLimit'] $serendipity['RSSfetchLimit'] $serendipity['CBAfetchLimit'] Diese drei limit Variablen beziehen sich auf den Datenbank Auszüge, in etwa: "Suche xxx in TABELLE limit 0, 15" für die Eintragsnavigationen. Ihre Verschiedenheit beruht auf unterschiedlichen Ausgabe Anforderungen. Dies sind Blog Einträge, RSS Feed Ausgaben und Kommentar Ausgaben. Die $serendipity['fetchLimit'], sowie die $serendipity['RSSfetchLimit'] Variablen können und sollen natürlich unter Konfiguration - Design und Optionen per Konfigurationsoption eingestellt werden. Die Zahl 15 stammt übrigens aus frühen Zeiten des Internets als RSS Feeds generell mit 15 limitiert wurden. Deshalb wurde diese Zahl damals auch für die Einstellung der Blog "fetchLimit" Variable übernommen, obwohl sicherlich, je nachdem wie Sie ihr Blog nutzen und wie lang ihre Blogeinträge werden, eine engere Limitierung des Ausgabefensters besser passt. Die $serendipity['CBAfetchLimit'] Variable allerdings ist eine dieser "versteckten" Variablen, die nur per Hand überschrieben werden können und behandelt die Anzahl der zugleich dargestellten Kommentare auf den comments_by_author /comments/ Zusammenfassungsseiten (siehe Seiten Permalinks-Frontend und Kommentarübersichten). Ihr ungesetzter default Wert sind 10 Kommentare per Seite. Erfahrungsgemäß ist hier aber etwa 20 die bessere Einstellung, da ja jemand diese Kommentar Archiv Seiten nur aufruft, um schnell einen Überblick der letzten Kommentare zu erhalten.

$serendipity['use_iframe'] Wenn Serendipity einen Artikel speichert, führt es diese Aktionen in einem separaten Bereich der Webseite aus, den Serendipity oberhalb der Artikelmaske einbettet. Ein derart eingebetteter Bereich nennt sich iframe und kann von allen halbwegs modernen Browsern angezeigt werden. Bei Browsern auf Handys und PDAs könnte diese Technik jedoch möglicherweise Probleme machen, daher können Sie die Variable $serendipity['use_iframe'] auf false setzen, um Serendipity ohne diese Technik nutzen zu können. Wenn iframes deaktiviert sind, können mögliche Fehler beim Speichern eines Artikels (hauptsächlich Trackback- und Plugin-Fehler) jedoch eher dazu führen, dass der gesamte Artikel nicht gespeichert wird. Daher sollten Sie iframes nur im größten Notfall deaktivieren und vorzugsweise lieber auf einen anderen Browser zurückgreifen. Beachten Sie auch, dass das Deaktivieren der iframes global für alle Redakteure gilt.

$serendipity['languages'] In dieser Variable speichert Serendipity die Liste aller für Besucher und Redakteure verfügbaren Sprachen. Die dort aufgeführten Kürzel müssen eine entsprechende Sprachdatei lang/serendipity_lang_XX.inc.php aufweisen, damit Sie die Sprache auch wirklich benutzen können. Wenn Sie also eine neue Übersetzung von Serendipity (zB. für Plattdeutsch) erstellen wollen, können Sie die neue Sprache zum einen in diese Variable miteintragen und zum anderen die entsprechende Sprachdatei im lang-Unterverzeichnis erstellen. Wenn Sie die Liste der verfügbaren Sprachen für Redakteure einschränken wollen, können Sie die überflüssigen Sprachen aus der Variablenliste entfernen.

$serendipity['autolang'] Die Sprache, die Serendipity standardmäßig bei der Installation benutzt (wenn keine andere Sprache vom Browser präferiert wurde), wird in der Variable $serendipity['autolang'] gespeichert. Das dort eingetragene Kürzel (standardmäßig en für englisch) muss in der Liste der Variable $serendipity['languages'] enthalten sein.

$serendipity['defaultTemplate'] Templates müssen nur die Dateien in ihrem eigenen Verzeichnis mitliefern, die von den Standarddateien abweichen. Dadurch können Templates klein gehalten werden und ihre Features vom Standard-Template abhängig machen. Wenn eine Template-Datei eines Themes nicht vorhanden ist, wird die Datei im Standard-Theme benutzt. Eben jenes Standard-Theme definieren Sie in der Variable $serendipity['defaultTemplate'] (standardmäßig Pure, Pure). Weiterhin gilt als letzter Ausweg immer das Verzeichnis default im Template-Verzeichnis.

$serendipity['skip_smarty_hooks'] Wenn der Wert dieser Variable auf true gesetzt wird, können Smarty-Templates selbständig keinerlei Ereignis-Plugins aufrufen (siehe auch Seite serendipity-hookPlugin).

$serendipity['skip_smarty_hook'] Statt den Aufruf aller Ereignis-Plugins mittels $serendipity['skip_smarty_hooks'] zu verbieten, kann dieses Array eine Liste von Ereignissen (Hooks) enthalten, die ein Smarty-Funktionsaufruf innerhalb der Template-Dateien nicht aufrufen darf. Jeder Array-Schlüssel muss hierbei dem Namen des zu verbietenden Hooks enthalten.

 

Achten Sie darauf, dass, wenn Sie Änderungen in der Datei serendipity_config.inc.php vornehmen, diese Änderungen bei einem Update von Serendipity überschrieben werden und Sie sie neu eintragen müssen. Einzig Änderungen in der Datei serendipity_config_local.inc.php (sofern sie am Ende der Datei vorgenommen wurden) behält Serendipity bei einem Update bei.

4.8.2 - Benutzerverwaltung

Benutzerverwaltung

In der Benutzerverwaltung von Serendipity können Sie die Redakteure und ihre Zugriffsmöglichkeiten verwalten.

Auf dieser Übersichtsseite sehen Sie eine Liste aller Redakteure, auf die Sie Zugriff haben.

usermanagement_dm_de.png
Abbildung 4.24: Einstellungen: Benutzerverwaltung

In Serendipity werden Zugriffsrechte aufgrund von zwei Eigenschaften geregelt. Die eine ist der globale Benutzerrang/Userlevel, der der Zahl 0 (einfacher Redakteur), 1 (Chefredakteur) oder 255 (Administrator) entspricht. Die zweite ist die Zugehörigkeit zu einer Benutzergruppe, wobei jede Benutzergruppe flexible Rechte besitzen kann.

Die festen Benutzerlevel wurden in Serendipity 0.6 eingeführt und mittlerweile in fast allen Bereichen durch die Eingliederung in eigenständige Benutzergruppen abgelöst, die den Zugriff viel kleinstufiger regeln können. Dennoch gilt der Benutzerrang nach wie vor als ein Kriterium für einige zusätzliche Plugins. Sollte ein Redakteur keiner Gruppe zugehörig sein, regelt sein Benutzerrang alle ihm zur Verfügung stehenden Zugriffsmöglichkeiten.

Grundsätzlich empfiehlt es sich daher weiterhin, neue Redakteure auch einem Benutzerrang grob zuzuordnen. Bestimmen Sie dabei, ob ein Redakteur volle Rechte zu einem Blog haben soll (Administrator), ob er als Chefredakteur über anderen Redakteuren stehen soll oder ob er nur einen ganz schlichten Redakteur zur Texterfassung darstellen soll.

Ein Administrator sieht in der Übersicht alle Redakteure. Ein Chefredakteur sieht hier nur noch andere Chefredakteure und normale Redakteure. Normale Redakteure wiederum sehen nur andere normale Redakteure.

In der Benutzerübersicht wird dem Benutzerrang entsprechend ein kleines Symbol dem Namen vorangestellt. Es folgen der Benutzerrang und drei Links, als ein Button zur Ansicht der Frontend-Einträge des Nutzers und zwei administrative zum Bearbeiten und Löschen eines Benutzers.

Über den Button Einen neuen Benutzer anlegen können Sie einen neuen Benutzer anlegen, die Oberfläche ähnelt dabei den Optionen bei der Bearbeitung eines Redakteurs. Beachten Sie beim Bearbeiten eines Redakteurs, dass Ihre Möglichkeiten zum Ändern der Daten von Ihren Rechten abhängig sind, daher wird Ihnen unter Umständen beim Speichern eines Benutzers das Recht verwehrt, diese Änderung durchzuführen.

Einen neuen Benutzer anlegen oder einen Benutzer bearbeiten

Die Oberfläche zum Bearbeiten/Anlegen eines Redakteurs sieht größtenteils exakt so aus wie die Seite der Eigenen Einstellungen (siehe Kapitel Eigene Einstellungen ab Seite Eigene Einstellungen). Hier können Sie einen Benutzer so bearbeiten, als wären es Ihre eigenen Einstellungen. Tun Sie dies bitte nur mit Vorsicht, denn üblicherweise sollten die Redakteure ihre Einstellungen selbständig vornehmen.

Das Alte Passwort eines Benutzers muss an dieser Stelle nur eingegeben werden, wenn der Benutzer Ihrem eigenen Redakteurs-Account entspricht. Andernfalls kann ein Administrator bzw. befugter Benutzer Änderungen auch ohne Passwortangabe vornehmen und so auch ein neues Passwort setzen.

new_user_form_dm_de.png
Abbildung 4.25: Einstellungen: Benutzerverwaltung: Neuer Redakteur

 

Abweichend von den Eigenen Einstellungen sind in dieser Oberfläche zusätzlich die folgenden Optionen aufgeführt:

Zugriffsrechte Die Zugriffsrechte entsprechen der groben Einordnung eines Benutzers in einen Benutzerrang. Wählen Sie aus dem Auswahlfeld, welchem Rang der Benutzer am ehesten entspricht. Achten Sie darauf, dass Sie, wenn Sie Ihren eigenen Benutzer bearbeiten, Ihre eigenen Rechte beschränken könnten. Wenn Sie versehentlich Ihren Benutzerrang auf Redakteur stellen, sind Ihre Rechte erstmal eingeschränkt. Um in diesem Fall Ihren Benutzerrang zu reaktivieren, müssen Sie das Script fixpriv.php auf Seite fixpriv.php ausführen.

Gruppenzugehörigkeit Die Gruppenzugehörigkeit des gewählten Redakteurs wird über das Mehrfachauswahlfeld Gruppenzugehörigkeit gesteuert. Ein Redakteur kann dabei Mitglied in mehreren Gruppen sein, um alle Rechte jeder einzelnen Gruppe zu vereinen. Achten Sie auch hier darauf, dass, wenn Sie sich (versehentlich) als Mitglied der Gruppe entfernen, Sie möglicherweise Ihren Zugriff auf Serendipity zerstören.

Benutzer deaktivieren / Rechte entziehen Eine globale Option, um einem Benutzer sämtliche Zugriffsrechte außer dem Einloggen zu verbieten, stellt der Punkt Benutzer deaktivieren dar. Ist der Wert Ja aktiviert, ist ein Benutzer sozusagen gesperrt. Dies ist besonders nützlich, wenn Sie Benutzer anlegen wollen, die eigentlich nur im Frontend Artikel lesen, aber im Backend keinerlei Möglichkeiten nutzen sollen. Über das Plugin Freie Benutzer-Registrierung können Sie Besuchern ermöglichen, sich selbst einen Redakteurs-Account anzulegen (Details siehe Seite adduser) - auch bei solchen Redakteuren wird es oft gewünscht sein, den Zugriff stark einzuschränken. Achten Sie darauf, nicht versehentlich für sich selbst diese Option zu aktivieren. Auch dies können Sie nur mittels des fixpriv.php-Scripts rückgängig machen.

Rechte: Einträge veröffentlichen Die Option Rechte: Einträge veröffentlichen bestimmt, ob es einem Redakteur erlaubt ist, einen Artikel als Veröffentlichung zu speichern. Ist diese Option nicht aktiviert, kann ein Benutzer lediglich Entwürfe speichern. Diese Entwürfe müssen dann von einem höherrangigen Redakteur veröffentlicht werden.

 

Beim Erstellen eines neuen Benutzers achten Sie bitte auf die Voreinstellungen, da zB. die Option Rechte: Einträge veröffentlichen standardmäßig auf Nein steht. Möglicherweise entspricht dies nicht der Einstellung, die Sie beabsichtigen.

4.8.3 - Gruppenverwaltung

Gruppenverwaltung

Ähnlich wie bei der Verwaltung der Benutzer sehen Sie in der Übersicht der Gruppenverwaltung alle angelegten Benutzergruppen.

groupmanagement_dm_de.png
Abbildung 4.26: Einstellungen: Gruppenverwaltung

Sie können von dort aus entweder eine Neue Gruppe anlegen, bestehende Gruppen Bearbeiten oder Löschen. Beim Löschen einer Gruppe müssen Sie vorsichtig sein, dass Sie damit bestehenden Redakteuren nicht den Zugriff auf das Backend vollständig entziehen.

Standardmäßig werden in Serendipity drei Benutzergruppen angelegt: Administrator, Chefredakteur und Redakteur. Jede dieser Gruppen ist so eingerichtet, dass sie den Zugriff für die Mitglieder dieser Gruppen so einschränkt, wie es zu erwarten wäre: Redakteure dürfen nur Artikel anlegen und eigene Artikel bearbeiten, Chefredakteure dürfen zusätzlich Plugins und das Aussehen des Blogs verwalten und Einträge anderer Redakteure überarbeiten. Administratoren dürfen natürlich alles.

Jede Gruppe kann eine große Menge an kleinstufigen Rechten festlegen, die Sie in der Detailseite einer neuen oder bestehenden Gruppe ankreuzen können.

Eine Gruppe erstellen oder bearbeiten

Die Detailseite einer Gruppe listet alle Rechte auf. Sie können dabei nur diejenigen Rechte mittels einer Auswahlbox auswählen, die Sie selber aufgrund Ihrer Gruppenmitgliedschaft besitzen.

edit_groups_userlevel_editor_dm_de.png
Abbildung 4.27: Einstellungen: Gruppenverwaltung: Gruppe bearbeiten

Hier im Beispiel der Bearbeitung für die Gruppe Redakteur, also der niedrigsten der vorgesehen Gruppenrechte.

Wenn Sie aber als Mitglied der Gruppe Chefredakteur beisielsweise eine neue Gruppe erstellen, können Sie keine Rechte zur Administration des Blogs vergeben - denn das wäre natürlich eine einfache Art, sich die Blog-Herrschaft anzueignen.

Bei solchen nicht vergebbaren Rechten sehen Sie also nur den aktuellen Wert des jeweiligen "gesperrten" Rechtes.

Folgende Rechte stehen zur Verfügung:

Name Der Name einer Gruppe kann von Ihnen frei gewählt werden und darf auch Sonderzeichen enthalten. Bei den von Serendipity vordefinierten Gruppen steht an dieser Stelle nicht der jeweilige Gruppenname, sondern etwas in der Art USERLEVEL_CHIEF_DESC. Dies wird später bei der Darstellung durch den jeweiligen "echten" Namen ersetzt, damit bei anderssprachigen Redakteuren deren Gruppenzugehörigkeit nicht auf einen deutschen Begriff festgelegt wird.

Gruppenzugehörigkeit In dieser Auswahlbox werden alle verfügbaren Redakteure dargestellt. So können Sie einer neuen Gruppe relativ leicht bestehende Redakteure hinzufügen, indem Sie sie einfach in dem Mehrfachauswahlfeld markieren. Einen Benutzer können Sie auf zwei Arten aus einer Gruppe entfernen: Entweder Sie heben die Zugehörigkeit in diesem Mehrfachauswahlfeld auf, oder Sie bearbeiten den jeweiligen Benutzer und heben dort die Gruppenzuordnung auf. Mehrere Redakteurszuordnungen können Sie mit gedrückter (Strg/Apfel)-Taste und der linken Maustaste vornehmen.

adminCategories, adminCategoriesDelete, adminCategoriesMaintainOthers Wenn das Recht adminCategories aktiviert ist, kann ein Redakteur Kategorien verwalten (neue Kategorien anlegen und bestehende Kategorien bearbeiten). Besitzt er das Recht adminCategoriesDelete, darf er auch Kategorien löschen. Dabei ist der Zugriff nur auf selbst angelegte Kategorien möglich. Erst wenn ein Benutzer auch das Recht adminCategoriesMaintainOthers besitzt, darf er auch Kategorien anderer Benutzer verwalten.

adminComments Damit ein Redakteur die Kommentarübersicht aufrufen kann, muss er das Recht adminComments besitzen. Ohne dieses Recht darf er nur Kommentare zu von ihm geschriebenen Artikeln (mittels der E-Mail-Benachrichtigung) freischalten.

adminEntries, adminEntriesMaintainOthers Nur wenn ein Redakteur das Recht adminEntries besitzt, darf er Einträge im Blog erstellen. Dabei darf er nur selbst erstellte Artikel im Nachhinein überarbeiten. Wenn er das Recht adminEntriesMaintainOthers besitzt, darf er zusätzlich auch auf Artikel anderer Redakteure zugreifen. Ob ein Benutzer überhaupt Einträge erstellen und veröffentlichen darf, wird zusätzlich individuell pro Benutzer in dessen Einstellungen (siehe Seite Benutzerverwaltung) festgelegt.

adminImages und weitere Um auf die Mediathek zuzugreifen, benötigt ein Redakteur das Recht adminImages. Weitere feinstufige Rechte kontrollieren, was der Redakteur innerhalb der Mediathek durchführen darf. Mittels adminImagesAdd darf er neue Mediendateien hochladen. Das Recht adminImageDelete ermöglicht es ihm, Mediendateien auch wieder zu löschen. Neue Unterverzeichnisse kann er mit dem Recht adminImagesDirectories anlegen. Um Vorschaubilder erneut zu erstellen, benötigt er das Recht adminImagesSync. Die Mediathek selbst kann ein Redakteur zum Einbinden von Dateien nur aufrufen, wenn er das Recht adminImagesView besitzt. Um auch die Dateien anderer Redakteure anzusehen, benötigt er das Recht adminImagesViewOthers. Um auch die Mediendaten anderer Redakteure bearbeiten/löschen zu können, ist das Recht adminImagesMaintainOthers erforderlich.

adminImport Das Recht adminImport regelt, ob ein Redakteur die Einträge fremder Blogsysteme importieren darf.

adminPlugins Besitzt ein Redakteur das Recht adminPlugins, kann er Seitenleisten- und Ereignis-Plugins installieren. Dabei wird der Redakteur als Eigentümer eines Plugins aufgeführt und kann daraufhin nur seine eigenen Plugins auch konfigurieren. Über das Recht adminPluginsMaintainOthers kann ein Redakteur auch die Konfiguration fremder Plugins ändern.

adminTemplates Um ein anderes Template zu aktivieren und Template-Optionen zu konfigurieren, benötigt der Redakteur das Recht adminTemplates.

adminUsers und weitere Ob ein Redakteur die Benutzerverwaltung aufrufen darf, wird mit dem Recht adminUsers eingestellt. Neue Benutzer darf er mit dem Recht adminUsersCreateNew anlegen, Benutzer löschen mit adminUsersDelete. Den Benutzerrang darf er nur verändern, wenn er das Recht adminUsersEditUserlevel besitzt. Ansonsten darf er nur Redakteure niederen Ranges anpassen. Die Gruppenverwaltung darf der Benutzer mit dem Recht adminUsersGroups anlegen. Besitzt er das Recht adminUsersMaintainSame, darf er gleichrangige Benutzer bearbeiten, und wenn er das Recht adminUsersMaintainOthers besitzt, darf er auch alle anderen Benutzer verwalten.

blogConfiguration Wenn der Redakteur das Recht blogConfiguration besitzt, darf er Änderungen an der globalen Konfiguration des Blogs vornehmen. Darunter fallen jedoch keine Änderungen der Datenbankkonfiguration oder systemnaher Einstellungen.

personalConfiguration, personalConfigurationNoCreate Die Eigenen Einstellungen darf ein Redakteur nur mit dem Recht personalConfiguration aufrufen. Das Sonderrecht, einen Benutzer zu sperren, darf ein Redakteur nur ausüben, wenn er das Recht personalConfigurationNoCreate besitzt. Analog dazu darf er die Sondervariablen zum Veröffentlichungsrecht von Artikeln und den Benutzerrang nur bearbeiten, wenn er über die Rechte personalConfigurationRightPublish und personalConfigurationUserlevel verfügt.

siteAutoUpgrades Das "besondere" Recht siteAutoUpgrades wurde mit Serendipity Styx 2.8.0 eingeführt und ermöglicht, einem bestimmten Benutzer, mit der Gruppeneigenschaft "Chefredakteur", die Erlaubnis zu erteilen, das Serendipity Autoupdate über die Backend Startseite auszuführen, sobald ein Upgrade vorliegt. Dieses Recht darf nur der Administrator vergeben und entziehen und sollte nur auf Multiuser-Systemen mit diesem besonderen Bedürfnis vergeben werden. Als empfohlenes Beispiel gehen Sie wie folgt vor: Erstellen Sie als Administrator unter "Gruppe" eine neue Gruppe mit beliebigem Namen und vergeben in dieser nur die Hauptkategorien, sowie das spezielle Feld siteAutoUpgrades und das - in diesem Fall - besonders wichtige Feld Hidden group / Non-Author, damit diese Gruppe für andere Benutzer verborgen bleibt. Danach verbinden sie unter "Benutzer" den gewünschten Nutzer mit der Eigenschaft "Chefredakteur" zusätzlich mit eben dieser neu erstellten Gruppe.

siteConfiguration Die systemweite Konfiguration (mit Einstellungen der Datenbank und anderer systemnaher Optionen) darf ein Redakteur nur verändern, wenn er über das Recht siteConfiguration verfügt.

userlevel Die vordefinierten Gruppen von Serendipity können mit einem Benutzerrang verkettet werden. Dies ist nicht veränderbar und lediglich für die vordefinierten Gruppen von Interesse. Daher sehen Sie an dieser Stelle auch in allen Fällen nur ein Nein.

Verbotene Plugins Ist die globale Option Sollen persönliche Plugin-Rechte für Benutzergruppen aktiviert werden? in der Konfiguration des Blogs (Abschnitt Generelle Einstellungen) aktiviert, werden Sie an dieser Stelle eine Liste aller installierten Plugins sehen. Sollte die Option (wie standardmäßig der Fall) deaktiviert sein, sehen Sie hier nur einen Hinweis, der auf die Konfigurationsoption Bezug nimmt. In dem Mehrfach-Auswahlfeld können Sie alle Plugins auswählen, auf die eine Benutzergrupe keinen Zugriff hat. So können Sie Redakteure von der Benutzung einiger Plugins gezielt ausnehmen.

Verbotene Ereignisse Die Ereignis-Plugins von Serendipity werden an speziellen Stellen des Systems ausgeführt. Diese Stellen nennen sich Ereignisse und tragen alle einen individuellen Namen. Plugins können sich zu einem Ereignis einklinken und dann beliebige Aktionen durchführen. Wenn man ein Plugin nicht zentral verbieten will, kann über dieses Mehrfachfeld gezielt nur eine Menge von gewünschten Ereignissen für die Benutzergruppe blockiert werden. Die Namen der Ereignisse lassen auf deren Bedeutung schließen, sind aber nur für erfahrenere Benutzer von Belang. Auch von Plugins selbst eingebundene Ereignisse sind in dieser Liste enthalten. Eine Übersicht über die üblichen Serendipity-Ereignisse sehen Sie im Abschnitt Ereignisse ab Seite Ereignisse.

Wenn Sie eine neue Gruppe anlegen wollen, sehen Sie am Ende der Eingabemaske den Button Neue Gruppe anlegen.

Sollten Sie eine bestehende Gruppe bearbeiten, können Sie die vorgenommenen Änderungen über den Menüpunkt Speichern übernehmen. Auch hier sehen Sie dann den Button Neue Gruppe anlegen. Dieser dient dazu, eine ganz neue Gruppe mit den konfigurierten Möglichkeiten zu erstellen. Sie können diese Methode also nutzen, wenn Sie eine Gruppe erstellen wollen, die einer bestehenden Gruppe ähnelt. Bearbeiten Sie dann diese Gruppe als Vorlage, nehmen Sie die Änderungen vor und klicken Sie auf Neue Gruppe anlegen, um dies durchzuführen.

4.9 - Einstellungen (Wartung)

Einstellungen (Wartung)

Der Punkt Einstellungen (Wartung) ist ein neuer Menüpunkt im Backend seit der Serendipity Version 2.0.

Auf dieser Sammel-Seite werden alle administrativen Aufgaben zusammengefasst, die einen Wartungscharakter haben, aber als eigenständiger Menüpunkt entweder zu gewichtig wären, oder etwas außerhalb der sonstigen Aufgaben stehen. Diese Seite ist ein wenig so etwas, wie das Pendent, die Rückseite, zur Backend-Startseite, dem “Dashboard”.

So finden Sie hier die Daten importieren und Einträge exportieren Zugänge, das Werkzeug Installation prüfen, die Wartungsaufgabe, um den Smarty (compile) Template-Cache zu leeren, das bereits beschriebene Vorschauen erneuern Mediendaten-Tool, die neue UTF-8-MB4 Migrations-Aufgabe, die Spamblock Wartung, den Zugang zu den Serendipity Logfiles, den Service Wartungs Modus, sofern sie das modemaintain event Plugin installiert haben, und anderes. Wie auch auf der Startseite, können sich Plugins mit weiteren Aufgaben über den backend_maintenance Hook hier einhaken.

maintenance_dm_de.png
Abbildung 4.28: Einstellungen: Wartung (Beispielseite)
4.9.1 - Installation prüfen

Wartung: Installation prüfen

Bei jedem Serendipity Release, bei Styx sogar bei den Beta-Releases, wird eine Checksumme jeder einzelnen Datei erstellt. Den Vergleich mit ihren aktuellen Dateien können Sie hier vornehmen. Natürlicherweise können nur Dateien verglichen werden, die auf ihrem augenblicklichen System, wie auch in einem Release Zip zu finden sind. Veränderte Dateien, und seien es nur veränderte Speicherzeiten, werden Ihnen angemahnt. Dies muss nicht immer einen Fremdzugriff bedeuten, denn oft war man es selbst, der eine Datei geöffnet und neu gespeichert hat.

4.9.2 - Template Cache leeren

Wartung: Template Cache leeren

Die Smarty Zwischenschicht Dateien, einer simplen Abstraktion von PHP, werden im templates_c-Ordner kompiliert und gespeichert. Siehe: System/Plugin/Smarty-Template "Cache" Dateisystem für temporär erstellte Dateien. Um zu vermeiden, dass sie nach einem Systemupgrade oder einer eigenen Veränderung der Template (*.tpl) Dateien möglicherweise einem Cache-Effekt unterliegen, können Sie hier die Template Dateien ihres Themes löschen lassen. Smarty wird diese sofort neu anlegen, sobald ein Request dafür vorliegt.

4.9.3 - Einträge exportieren

Wartung: Einträge exportieren

Hinter dem Menüpunkt Einträge exportieren befindet sich nur ein einzelner Button: Vollständigen RSS-Feed exportieren.

Dieser Button ist lediglich ein Link auf Ihren RSS-Feed im Frontend, dem der Parameter all=1 angehängt ist.

Als Ergebnis dieser Exportaktion wird Ihr Browser also einen RSS-Feed mit allen Ihren Einträgen anzeigen. Diesen RSS-Feed können Sie speichern und in andere Anwendungen importieren.

Bitte beachten Sie unbedingt, dass der RSS-Feed nur einen ganz kleinen Teil Ihres Blogs enthält, nämlich nur den Beitragstext sowie die Überschriften Ihrer Artikel und einige zusätzliche Informationen wie den Autor, die zugeordnete Kategorie und die Veröffentlichungszeit. Nicht enthalten sind in diesem RSS-Feed die erweiterten Artikelinhalte, Benutzerinformationen, alle verfügbaren Kategorien und noch vieles mehr. Daher ist ein RSS-Export definitiv nicht als Backup geeignet.

Um die Daten von Serendipity in ein anderes Blogsystem zu überführen, müssen Sie daher auf manuelle Importwege zurückgreifen (siehe Kapitel Wartung) oder auf die Entwicklung eines Import-Moduls des Fremdsystems für Serendipity hoffen. Serendipity selbst bietet eine Reihe von Import-Modulen für andere Blogsysteme an. Häufig sind die Datenbankstrukturen fremder Systeme nicht so weit entfernt voneinander, so dass mit etwas SQL-Kenntnis ein Import vorgenommen werden kann.

4.9.4 - Daten importieren

Wartung: Daten importieren

Serendipity kann von anderen Blogsystemen Daten importieren. Über den Menüpunkt Daten importieren finden Sie eine Auswahl des betreffenden Systems, von dem Sie importieren wollen.

Abhängig vom gewählten System können nur Teile der Daten dieses Systems importiert werden, und da es bei fremder Software öfter zu Änderungen der Datenbankstruktur kommt, kann die exakte Versionsnummer beim Import sehr wichtig sein.

Sollte Ihre Blogsoftware in der Liste nicht aufgeführt sein, ist ein Import zu Serendipity dennoch nicht unmöglich. Fragen Sie in diesem Fall in den Serendipity-Styx-Discussions unter https://github.com/ophian/styx/discussions einfach einmal nach, dort wird man sicher helfen können. Grundsätzlich müssen beim Import lediglich Daten auf Datenbankbasis eingelesen und in einem neuen Format gespeichert werden. Wenn Sie über SQL-Kenntnisse verfügen, könnten Sie Ihren eigenen Importer so relativ einfach entwickeln. Details zur Datenbankstruktur von Serendipity finden Sie ab Seite er-schema.

Nachdem Sie das Quell-Blogsystem (siehe vorherige Abbildung: 4.28) gewählt haben, klicken Sie auf Los!. Auf der Folgeseite werden Ihnen abhängig vom gewählten System einige Optionen präsentiert.

maintenance_import_wp_form_dm_de.png
Abbildung 4.30: Einstellungen: Daten importieren: WordPress

Meist ist es wichtig, dass die Datenbank des Zielsystems sich auf demselben Server wie das Serendipity-Blog befindet, um auf die Datensätze zugreifen zu können. Sie sollten auf jeden Fall mittels einer Software wie phpMyAdmin vor dem Import ein Backup sowohl der Serendipity-Datenbank als auch des Quell-Blogs machen.

Der Import-Vorgang in Serendipity kann beliebig oft durchgeführt werden und führt bei jedem neuen Aufruf zum erneuten Import. So kann es also passieren, dass bei mehreren Importversuchen die Artikel mehrfach importiert werden. Nach jedem fehlgeschlagenen Import sollten Sie daher die möglicherweise bereits erstellten Einträge, Kategorien und Autoren wieder löschen.

Folgende Blogsysteme stehen zum Import bereit:

Serendipity Importiert werden: Daten aus Serendipity Standard Release Datenbank Tabellen. Serendipity Import ist kein Serendipity Upgrader oder Installer und dient nur dazu Tabellendaten eines anderen Blogs in einen weiterführenden und existierenden anderen Blog zu integrieren. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Tabellen-Gruppen, Testlauf. Die Option Zeichensatz gibt an, in welchem Zeichensatz das Import-Serendipity seine Artikel gespeichert hat. Dies ist in neuen Serendipity-Versionen meist UTF-8, und ISO-8859-1 in älteren. In Serendipity-Artikeln werden früher Sonderzeichen gerne auch mit HTML-Syntax maskiert. Aus einem Ä wird so ein &Auml;. Serendipity bevorzugt jedoch die echten Sonderzeichen. Wenn Sie die Option Soll versucht werden, HTML-Instanzen automatisch zu konvertieren aktivieren, werden derartige Sonderzeichen wieder korrekt umgewandelt. Sollten Sie beim Import der Einträge später einmal merkwürdige Sonderzeichen erhalten, probieren Sie einmal diese beiden Optionen aus. Mit der Option Imortiere gruppierte Tabellen (aus Gründen der PHP max_execution_time limits bei Blogs mit vielen Einträgen) können Sie erzwingen, dass Datenbank Tabelleneinträge nur gruppiert eingelesen und importiert werden, was die Last und Ausführungszeit deutlich verringern kann. Die wichtigste Option ist der virtuelle Testlauf-Import. Mit seiner Hilfe können Sie recht gefahrlos testen, ob beim Auslesen und Importieren eventuelle Fehler geschehen würden, die vorher dringend gefixt werden müssten. Sie sollten nur Daten gleicher Serendipity Versionen importieren und immer mit einem vollständigen Backup ihrer Datenbank beginnen. Tabellendaten von Plugins, wie zB. Staticpages, sind unbekannt und müssen, ebenso wie anderes, zB die Mediendaten in "/uploads", per Hand importiert werden.

WordPress Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel, Statische Seiten. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks. Die Option Zeichensatz gibt an, in welchem Zeichensatz WordPress seine Artikel gespeichert hat. Dies ist in neuen WordPress-Versionen meist UTF-8, und ISO-8859-1 in älteren. In WordPress-Artikeln werden oft Sonderzeichen mit HTML-Syntax maskiert. Aus einem Ä wird so ein &Auml;. Serendipity bevorzugt jedoch die echten Sonderzeichen. Wenn Sie die Option Soll versucht werden, HTML-Instanzen automatisch zu konvertieren aktivieren, werden derartige Sonderzeichen wieder korrekt umgewandelt. Sollten Sie beim Import der Einträge später einmal merkwürdige Sonderzeichen erhalten, probieren Sie einmal diese beiden Optionen aus. Mit der Option Trackbacks an erkannte Links im Eintrag senden können Sie erzwingen, dass alle Trackbacks zu den importierten Einträgen nochmals geschickt werden. Üblicherweise ist dies unerwünscht, daher ist die Voreinstellung auf Nein gesetzt. WordPress kann neben Artikeln auch sogenannte attachments und staticpages speichern. Wenn Sie die Option Auch attachments und staticpages als normale Blog-Einträge importieren aktivieren, werden diese Sonderseiten auch als Serendipity-Artikel importiert.

WordPress PostgreSQL Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks. Eine Abspaltung von WordPress stellt WordPress PostgreSQL dar. Dieses läuft mit einer PostgreSQL- statt MySQL-Datenbank und kann mit identischen Optionen (Datenbankeinstellungen, Sonderzeichen, Trackbacks) wie WordPress importiert werden.

b2Evolution 0.9.0.11 Paris Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

LifeType Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

bBlog 0.7.4 Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

Blogger Importiert werden: Autoren, Kommentare, Artikel. Konfigurationsoptionen: Blogger.com-Exportdatei, Passwort für neue Autoren, Zeichensatz, Einteilung erweiterter Artikel. blogger.com stellt einen recht komplizierten Fall des Imports dar. Dieses System läuft nicht auf dem eigenen Webserver, sondern wird von Google bereitgestellt. Daher gibt es auch keinen direkten Datenbankzugriff zum System. Der Blogger-Import besteht aus einer ausführlichen Beschreibung, wie man sein Blog bei Blogger.com konfigurieren muss, um eine Exportdatei herzustellen. Diese Datei kann dann Serendipity wiederum importieren und auslesen. Leider sind die Anweisungen auf die alten Templates von Blogger.com bezogen und können bei der neuen Blogger-Oberfläche nicht ohne Umstellung angewendet werden. Notfalls müssen Sie daher Ihre Einträge von Blogger mittels des Allgemeinen RSS-Imports importieren.

boastMachine 3.0 Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

Geeklog 1.3.11 Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

LiveJournal Importiert werden: Nur Artikel. Konfigurationsoptionen: XML-Quelldatei, zugeordnete Kategorie, Artikelstatus. Ähnlich wie Blogger.com ist LiveJournal ein Online-Dienst, der Ihnen keinen direkten Zugriff auf Ihre geschriebenen Artikel ermöglicht. Jedoch ermöglicht es LiveJournal, eine XML-Datei der Einträge zu exportieren. Diese können Sie auf Ihren Webserver hochladen und dem Importer benennen. Leider können über diese XML-Datei nur die Artikel importiert werden und keinerlei andere Informationen.

MovableType Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: MovableType-Datensätze, Zeichensatz, Debugging, Trackbacks. MovableType speichert seine Daten (in älteren Versionen) in einem für Serendipity nicht zugänglichen Datencontainer. Von der MovableType-Administrationsoberfläche aus können Sie jedoch eine Exportdatei erzeugen. Diese Exportdatei können Sie dann auf den Serendipity-Server hochladen und den Pfad zu dieser Datei beim Importvorgang eintragen. Die MoveableType-Datensätze liegen leider in einem relativ "chaotischen" Format vor, und daher kann es leicht zu defekten Importen kommen. Daher gibt es eine Debugging-Option und die Möglichkeit, trotz defekter Datei lesbare Einträge zu importieren.

Nucleus Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

Pivot Importiert werden: Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Pivot-Datensätze. Pivot speichert seine Dateien in einer zentralen PHP-Datei. Den Pfad zu dieser Datei müssen Sie beim Importvorgang angeben. Alle importierten Artikel werden dem aktuellen Serendipity-Benutzer zugeordnet.

pMachine Pro 2.4 Importiert werden: Autoren, Passwörter, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

sunlog 0.4.4 Importiert werden: Autoren, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks. Sunlog bietet zwar diverse Zugriffsrechte für seine Redakteure, diese sind jedoch inkompatibel zu Serendipity. Dabei werden beim Import nur die Stammdaten der Redakteure übernommen, und alle Redakteure werden als Administratoren übernommen. Da Sunlog seine Passwörter in einem für Serendipity nicht lesbaren Format speichert, müssen die Passwörter aller Autoren erneut vergeben werden. Standardmäßig wird ein Redakteur dabei mit dem Passwort sunlog angelegt.

Textpattern 1.0rc1 Importiert werden: Autoren, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks. Da Textpattern seine Passwörter in einem für Serendipity nicht lesbaren Format speichert, müssen die Passwörter aller Autoren erneut vergeben werden. Standardmäßig wird ein Redakteur dabei mit dem Passwort txp angelegt.

phpNuke Importiert werden: Autoren, Kategorien, Kommentare, Artikel. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks.

Voodoopad Importiert werden: Inhalte. Konfigurationsoptionen: VoodooPad-Datendatei. Voodoopad ist eigentlich kein Blogsystem, sondern eher ein Offline-Wiki. Der Importer kann exportierte Daten von Voodoopad übernehmen und als statische Seiten importieren. Daher wird das Serendipity-Plugin Statische Seiten benötigt (siehe Seite staticpage). Im Importer geben Sie den Pfad zu der XML-Datei an, und alle Datensätze darin können daraufhin importiert werden.

phpBB Importiert werden: Autoren, Kategorien, Postings. Konfigurationsoptionen: Zugangsdaten, Zeichensatz, HTML-Maskierung, Trackbacks. phpBB ist ein Forensystem. Was in einem Blog die Artikel und Kategorien sind, wird in einem Forum als Bereiche und Postings definiert. Serendipity kann alle eingetragenen Benutzer des Forums importieren und als Serendipity-Redakteur übernehmen. Dabei wird auch erkannt, ob ein Forenbenutzer Administratorrechte hat, und er erhält diese dann auch in Serendipity. Die einzelnen Foren und Unterforen werden in Serendipity als Kategorien und Unterkategorien übernommen. Der jeweils erste Eintrag in einem Foren-Thread wird als Blog-Artikel importiert, alle folgenden Postings des Threads werden als Blog-Kommentar importiert.

Allgemeiner RSS-Import Importiert werden: Nur Artikel. Konfigurationsoptionen: RSS-Feed URL, Artikelstatus, Zugeordnete Kategorie, Zeichensatz, Erweiterter Eintrag. Als letzte Möglichkeit des Artikel-Imports gilt der Allgemeine RSS-Import. Hiermit können Sie einen RSS-Feed in Ihr eigenes Blog importieren. Dabei werden die importierten Artikel dem aktuell eingeloggten Serendipity-Benutzer zugeschrieben. Da in einem RSS-Feed nur sehr wenige Daten vorhanden sind, können nur Artikelstammdaten (Veröffentlichungszeitpunkt, Titel, Text) importiert werden. Sollte eine Kategoriezuordnung im RSS-Feed enthalten sein, versucht der Importer eine gleichnamige Kategorie im Blog zu finden und zuzuordnen. Schlägt das fehl, wird die im Importer festgelegte Standard-Kategorie zugeordnet. In einigen RSS-Feeds kann neben den Artikel-Teasern auch ein erweiterter Artikeltext enthalten sein, der ebenfalls importiert wird. Wenn Sie die Option Füge den gesamten importierten Text in das einzelne Text-Feld ein auf Ja setzen, wird sämtlicher verfügbarer Inhalt in das Hauptfeld des Blog-Artikels übernommen. Andernfalls versucht Serendipity, den Teaser-Text und vollständigen Text des RSS-Artikels sinnvoll aufzuteilen. Als Sonderfall des RSS-Imports dient das WPXRSS-Format. Dieses wird von WordPress-Blogs eingesetzt und enthält außer Artikeln auch Informationen zu Kategorien, Kommentaren und Redakteuren. Das WPXRSS-Format funktioniert nur auf Webservern mit PHP5-Unterstützung. Bitte beachten Sie, dass dieser Importvorgang nicht für den regelmäßigen Import eines RSS-Feeds gedacht ist. Dafür gibt es das RSS Aggregator-Plugin, siehe Seite aggregator.

4.9.5 - Vorschauen erneuern

Wartung: Vorschauen erneuern

Dieser Vorgang wurde bereits im Kapitel der Mediathek genauer beschrieben. Siehe: Vorschauen erneuern. Bitte lesen Sie dort nach was es mit dieser Wartungsaufgabe auf sich hat.

4.9.6 - Spamblog Log Wartung

Spamblog Log Wartung

Wie bereits in Kapitel VIII beschrieben, verursachen Datenbank Logeinträge, wie zum Beispiel beim Spamblock Plugin, mit der Zeit eine unnötig große Aufblähung ihrer Datenbank. Dies kann Ihr System mit der Zeit also stetig verlangsamen. Siehe: Spamblocklog Dateineinträge Löschen. Die dort vorgeschlagenen manuellen SQL Queries zum Aufräumen solchen Masseneinträge, sind hier schon einmal automatisiert gelistet, so dass Sie diese Wartungsaufgabe einfach nur ab und an selber anklicken müssen. Sodann werden Datenbank-Logeinträge gelöscht, die bestimmten Kriterien unterliegen. Erfahrungsgemäß sind, je nach Einstellung der vorhandenen Spamblog Plugins, die beiden Typen (moderate und rejected) hauptsächlich mit Spam bestückt. Sie haben hier die Wahl entweder grob oder selektiv Löschungen anzustoßen.

4.9.7 - Service Wartungs Modus

Wartung: Service Wartungs Modus

Über das zu installierende serendipity_event_modemaintain modemaintain event Plugin, kann Ihr öffentliches Blog - das Frontend - in einen “503 - Service Temporarily Unavailable” Modus (einen temporären 503 Wartungsmodus) versetzt werden. Die Bedingung dafür ist, dass sie sich mit der LogIn Daten speichern Methode angemeldet haben und sich während des Vorganges weder ausloggen, noch ihr Browserfenster schließen. Diese LogIn Methode geschieht über das Login-Cookie, welches Ihnen erlaubt, über die temporäre Sitzung hinaus angemeldet zu bleiben. Wie das geht, können Sie bei Login unter Option Daten speichern nachlesen. Ansonsten können Sie ihr Blog frei im Backend und im Frontend bedienen und anschauen. Ist der Vorgang der Wartung, zB ein Serendipity Upgrade, abgeschlossen, deaktvieren Sie dem Modus wieder. Bitte lesen Sie die Informationen zu dieser Wartungsaufgabe genau durch, damit Sie sich nicht versehentlich selber aussperren!

4.9.8 - Zeige Serendipity Logfiles

Wartung: Zeige Serendipity Logfiles

Wenn Sie das changelog event Plugin installiert haben (default) und die Konfigurationsoptions Log Level auf Fehler oder Debug gestellt haben, werden bestimmte Ereignisse zB. bei Trackbacks oder bei bestimmten Mediathekaktionen während des Vorganges im Hintergrund still in eine Logdatei geschrieben. Diese können Sie dann hier und nur hier einsehen. Der Zugriff auf diese Logdateien sollte über das Frontend sollte nicht möglich sein. Löschen Sie die alten Logfiles trotzdem regelmäßig, wenn sie ihren Dienst getan haben, denn sie könnten relevante Informationen enthalten. Die default Einstellung zur Logausgabe lautet: Nein. Ohne weiteres Zutun kann hier ansonsten nur das Serendipity Styx ChangeLog einfach im Browserfenster ausgelesen werden, damit Sie sich über all die kleineren und größeren Veränderungen zwischen den Release Versionen auf dem Laufenden halten können.

4.9.9 - UTF-8 MB4 Migration

Wartung: UTF-8 MB4 Migration

UTF8MB4 ist mit Serendipity Styx 2.4+ und MySQL die Default Installations-Kollation, wenn vom Server unterstützt. In diesem Fall sehen Sie bereits die grün hervorgehobene Erfolgsmeldung, wie auf der Abbildung 4.28: Einstellungen: Wartung (Beispielseite) zu sehen.

Für Serendipity (+ Styx) Upgrader: Wenn Sie Serendipity Styx 2.4+ mit MySQLi- und UTF-8-Zeichensätzen (Standard) verwenden, können die Datenbanktabellen und Indizes von UTF-8 nach UTF-8 mit Multibyte-Erweiterung migriert werden, um auch Unicode-Zeichen außerhalb des "Basic Multilingual Plane" (BMP) zu unterstützen, wie zB. Emojis. UTF8mb4 ist für MySQL eine Obermenge von UTF-8. Wenn ihr MySQLi-Treiber oder die MySQL Server-Version kleiner ist als Version 5.5.3, oder ihre aktuelle Installation den UTF-8 Zeichensatz nicht verwendet, ist UTF8MB4 nicht unterstützt. Um UTF8MB4 verwenden zu können, stellen Sie sicher, dass Ihr Blog für den UTF-8 Zeichensatz konfiguriert ist, und bestehende Daten nach UTF-8 konvertiert wurden, indem Sie ein Tool wie mysqldump für Export, Konvertierung nach UTF-8 und den Import verwenden.

Die grüne Erfolgsmeldung über ihre Systemvoraussetzung ist natürlich, oder spätestens nach einiger Zeit, überflüssig zu behalten und kann seit Serendipity Styx 3 über das eingefügte icon permanent weggeklickt werden.

4.9.10 - Plugin Altlastenmanager

Wartung: Plugin Altlastenmanager

Das mächtige Plugin Werkzeug muss ebenso wie die Mediathek mit der Datenbank synchron gehalten werden. Mit der Zeit aber sammeln sich hier ehemals installierte Plugins, werden dann deaktiviert oder nur unvollständig deinstalliert. Jedenfalls existierten über Jahre solche Zombies ohne jemals mit ihrer remote Version von Spartacus aktualisiert zu werden. Häufig wurden diese dann zur erneuten Installaton vorgeschlagen, wenn Sie die Liste der neue-plugins-installieren aufriefen. Solch alte Versionen konnten dann mitunter das ganze System aus dem Tritt bringen. Löschen Sie die alten Plugins also regelmäßig, wenn sie ihren Dienst getan haben. Der Button Suche nach Plugin Zombies zeigt eine multi-select Liste, aus der alle darin von Ihnen gewählten Plugins wirklich vom System gelöscht werden können.

4.9.11 - Theme Altlastenmanager

Wartung: Theme Altlastenmanager

Auch die Themes bieten ein schier endloses Kuddelmuddel, wenn sie nicht den jeweils aktuellen Versionen entsprechen. Zu unterscheiden sind Core-Themes und Remote-Themes. Letztere werden über Spartacus geholt und bereitgestellt. Ihre Leichen aber liegen oft über Jahre herum und sollten wirklich gelöscht werden. Wenn Sie sie wieder benötigen, laden Sie sie neu herunter, dann aber guten Gewissens, dass diese wirklich dem letzten Stand entsprechen. Die einzigen Themes die sie vielleicht behalten wollen sind jene, an die Sie selbst Hand angelegt haben und sie als eine Art sentimentale Grabbelkiste behalten wollen. Doch wenn Jahre vergehen, ist das Vorgänger-Theme auf Spartacus möglicherweise dem alten Zustand schon entrückt. Gerade Styx hat alle alten Themes aus dem additional_themes Repository auf einen halbwegs akzeptablen Zustand gebracht und tut dies bis Heute, wenn etwas Wichtiges und das wirklich alle Theme betrifft auffällt. Der Button Suche heruntergeladene Themes zeigt eine multi-select Liste aus der alle darin von Ihnen Themes Plugins wirklich von Ihrem System gelöscht werden können.

4.10 - Bookmarklet

Bookmarklet

Der Punkt Bookmarklet ist eigentlich kein eigenständiger Menüpunkt im Backend. Vielmehr sehen Sie diesen Menüpunkt im Kasten Weitere Links auf der Startseite des Backends, wenn den Info-Button anklicken.

Der Link zum Bookmarklet führt dabei auf Ihre eigene Seite und enthält einen JavaScript-Code. Dieser Link ist nicht zum Anklicken gedacht, sondern Sie sollten ihn als Lesezeichen/Favorit in Ihrem Browser speichern.

Wechseln Sie nun auf eine fremde Webseite, über die Sie in einem eigenen Blog-Artikel gerne berichten wollen. Markieren Sie dort einen Textteil, auf den Sie sich beziehen wollen, und wählen Sie in Ihrem Browser das Lesezeichen Bookmarklet aus. Sie werden nun auf Ihr Blog geleitet, und die URL der fremden Seite wird automatisch in Ihren Artikeltext eingefügt. So können Sie komfortabel und ohne eigenes Zutun schnell Artikel verfassen. Allerdings unterliegen die Auswahl und deren Übertragung per GET-Parameter in Gänze der URL einer gewissen Längenbeschränkung. Sehen also keinen Übertrag, haben Sie eventuell zu viel Text ausgewählt. Versuchen Sie es dann mit deutlich weniger markiertem Text erneut.

Serendipity Styx öffnet mit dem Informations-Button der Backend Startseite, außer dem Bookmarklet, noch eine weitere Box, die einen Styx Quick Tipp als erstes Willkommen bereitstellt. Auch dieser ist Sprach- und Übersetzungsfähig, wird über Sprachtemplates generiert und harret noch fleißigen Sprachhelfern.

Kapitel 5: Seitenleisten-Plugins

Serendipity bietet eine große Menge von Plugins an. Einige davon werden direkt bei Serendipity mitgeliefert, andere sind im externen Spartacus-Archiv (siehe Seite Spartacus) verfügbar.

Plugins sind bei Serendipity in Seitenleisten- und Ereignis-Plugins unterteilt. Wie im Kapitel zur Plugin-Verwaltung (siehe Seite Plugins verwalten) erwähnt, binden sich Seitenleisten-Plugins zur Ausgabe in den Rahmenbereich Ihres Blogs ein. Ereignis-Plugins hingegen dienen der funktionellen Erweiterung Ihres Blogs.

Auf den folgenden Seiten finden Sie eine Übersicht der am häufigsten genutzten Plugins und aller mitgelieferten Plugins. Aus Platzmangel können wir leider nicht auf jedes Plugin eingehen, verzeihen Sie also bitte, falls Ihr Lieblings-Plugin nicht beschrieben wird. Die meisten Plugins sind trotz kurzer Beschreibung leicht zu benutzen und zu konfigurieren. Sollte es darüber hinaus Fragen zu der Benutzung eines Plugins geben, wird man Ihnen in den Serendipity-Styx-Discussions [*] https://github.com/ophian/styx/discussions sicherlich helfen.

Einige Plugins bestehen aus einer Kombination von Seitenleisten- und Ereignis-Plugins. Sie werden als Gekoppelte Plugins bezeichnet und in einem eigenen Kapitel (ab Seite Gekoppelte Plugins) behandelt.

Plugins können häufig mehr als einmal installiert werden. Gerade bei Seitenleisten-Plugins wie dem HTML-Klotz macht dies Sinn, damit man beliebig viele Inhalte im Blog anzeigen kann. Wenn ein Plugin nicht mehrfach installiert werden kann, erscheint es in der Plugin-Liste mit dem Hinweis "bereits installiert". Bei Ereignis-Plugins ist es hingegen seltener notwendig, mehr als eine Instanz des Plugins zu installieren. Jedes mehrfach installierte Plugin kann individuell konfiguriert werden, da jede Instanz unabhängig agiert.

Die Konfigurationsoptionen der jeweiligen Plugins sind hier auf die essentiellen Parameter beschränkt und daher nicht vollständig aufgeführt. Im Buch nicht beschriebene Optionen sind jedoch in der Konfigurationsoberfläche eines Plugins aufgeführt und werden dort auch grob beschrieben oder sind meistens selbsterklärend.

Leider sind nicht alle Plugins bisher ins Deutsche übersetzt, daher wird bei einigen Beschreibungen und Plugin-Namen im Folgenden auf das englische Original zurückgegriffen.

Damit Sie ein Seitenleisten-Plugin innerhalb der Verzeichnisstruktur besser finden, geben wir in der Übersicht neben dessen Namen auch den Klassennamen der Datei an.

Die Plugins der folgenden Zusammenstellungen sind nach Alphabet, im Sinne von serendipity_plugin_A-Z geordnet.

 

5.1 - Standardmäßig aktivierte Plugins

Standardmäßig aktivierte Plugins

Seitenleisten-Plugins werden im Frontend Ihres Blogs angezeigt und können dort beliebige Inhalte darstellen oder einbinden. Im Gegensatz zu Ereignis-Plugins kann ein Seitenleisten-Plugin ausschließlich Ausgaben in der Seitenleiste vornehmen und keine weitere Kernfunktionalität zur Verfügung stellen. Die folgenden Seitenleisten-Plugins werden bei Serendipity mitgeliefert und sind standardmäßig aktiviert.

5.1.1 - Archive: serendipity_plugin_archives

Archive
serendipity_plugin_archives

Das Plugin Archive zeigt eine Übersicht der letzten Monate an. Ein Klick auf den jeweiligen Monat öffnet die Artikelübersicht für den gewünschten Zeitraum.

In der Konfiguration des Plugins können Sie neben der Überschrift des Plugins auch angeben, ob das Plugin Monate, Wochen oder Tage gliedern soll. Die Anzahl der Einträge im Archiv gibt an, wie viele Ausgaben im Plugin erfolgen sollen.

Wenn Sie die Option Anzahl der Einträge pro Kategorie anzeigen aktivieren, wird hinter jeder Ausgabe des Plugins in der Seitenleiste die Anzahl von Einträgen eingeblendet, die Sie in diesem Zeitraum erstellt haben. Achten Sie beim Aktivieren dieser Option darauf, dass diese die Geschwindigkeit des Plugins stark verringert. Das Auslesen der Anzahl aller Artikel pro Zeitraum ist eine komplexe Datenbankabfrage.

Wenn Sie die Option Versteckt den Archiv-Link, wenn es keine Einträge für einen Zeitraum gab... aktivieren, können in der Ausgabe der Monatsarchive diejenigen Monate übergangen werden, in denen Sie keine Blog-Artikel geschrieben haben. Damit dies klappt, müssen Sie die Option Anzahl der Einträge pro Kategorie anzeigen ebenfalls aktivieren.

plugin_archives_config_as_stack_example_dm_de.png
Abbildung 5.1: Archives Plugin: Konfiguration - Beispiel für stapelbare Plugins

Stapelbare Plugins wie dieses - also Plugins die Mehrfachinstallationen erlauben - werden mit einem Icon vor dem Pluginnamen ausgezeichnet. Der Info Button öffnet die zusätzliche Plugin Beschreibung bzw räumt dies aus dem Weg.

5.1.2 - Kategorien: serendipity_plugin_categories

Kategorien
serendipity_plugin_categories

Dieses Plugin blendet die im Blog verfügbaren Kategorien ein. Wenn Sie Ihr Blog als eine Art CMS betreiben, wird dieses Seitenleisten-Plugin daher oft als Menü benutzt, um auf die jeweiligen Unterbereiche zu gelangen.

Ein Klick auf die im Plugin dargestellte Kategorie ruft dabei jeweils die Artikelübersicht dieser Kategorie auf.

Konfigurationsoptionen sind:

Quelle der Kategorien Wie im Kapitel kategorie-leserechte auf Seite kategorie-leserechte erwähnt, können für Kategorien besondere Leserechte gelten, so dass nur eingeloggte Mitglieder einer Benutzergruppe Einträge dieser Kategorie lesen können. Standardmäßig stellt das Kategorien-Plugin alle Kategorien dar, die im Blog angelegt sind - ganz gleich, ob dafür besondere Leserechte gelten, oder nicht. Wenn ein Besucher auf eine solche Kategorie klickt, kann es daher sein, dass er darin keine Artikel angezeigt bekommt. Deshalb ist es möglicherweise wünschenswert, wenn einem Leser auch nur die Kategorien angezeigt werden, zu denen er auch Leserechte besitzt. Dafür ist das Auswahlfeld Quelle der Kategorien vorgesehen. Dort wählen Sie eine Benutzergruppe aus, so dass nur Kategorien angezeigt werden, die für die gewählte Benutzergruppe sichtbar sind. Standardmäßig steht diese Option auf Alle Autoren. Sie müssen die Sonderoption Derzeitiger Autor wählen, wenn die Kategorieliste sich nach den Rechten des aktuell eingeloggten Besuchers richten soll.

Zeige nur Kategorien unterhalb... Da Kategorien in Serendipity schachtelbar sind, kann es recht komplexe Kategorie- bzw. Menüstrukturen abbilden. Möglicherweise soll in der Seitenleiste aber nur ein Teil dieser Struktur angezeigt werden. Daher können Sie im Auswahlfeld Zeige nur Kategorien unterhalb... festlegen, ab welcher Oberkategorie die Unterrubriken angezeigt werden.

Die gewählte Oberkategorie verstecken Wenn Sie im obigen Konfigurationsfeld eine Kategorie ausgewählt haben, bestimmt die Option Die gewählte Oberkategorie verstecken, ob der Name dieser Oberkategorie angezeigt (Nein) oder versteckt (Ja) wird.

XML-Button Für die Artikel jeder einzelnen Kategorie kann ein RSS-Feed abonniert werden. Dazu wird neben jedem Kategorienamen ein kleines Bild eingeblendet, auf das ein Benutzer klicken kann, um den RSS-Feed der Kategorie zu abonnieren. Dieses Bild stellt üblicherweise ein universelles RSS-Icon dar, das von zahlreichen Blogsystemen und Browsern einheitlich benutzt wird. Sie können aber gerne in dem Konfigurationsfeld XML-Button ein abweichendes Bild eintragen. Dazu müssen Sie den vollständigen HTTP-Pfad (alles hinter http://www.example.com/) eingeben. Wenn Sie kein Bild einbinden wollen, tragen Sie hier none ein.

Sortierung Zwei Auswahlfelder untereinander werden bei der Konfigurationsoption Sortierung dargestellt. Das obere Auswahlfeld bestimmt, nach welchem Kriterium die Liste der Kategorien sortiert werden soll. Da Kategorien innerhalb Serendipity noch nicht beliebig sortiert werden können, entscheidet also ausschließlich diese Sortierungsreihenfolge die Reihenfolge der Darstellung in der Seitenleiste. Standardmäßig werden die Kategorien nach dem Namen der Kategorie alphabetisch sortiert. Weitere Möglichkeiten sind eine Sortierung nach Beschreibung oder der ID einer Kategorie. Auch kann eine Sortierung nach keinem Kriterium ausgewählt werden, in diesem Fall werden die Kategorien so wie sie in der Datenbank abgelegt sind geordert. Das zweite Auswahlfeld gibt dabei an, ob die Kategorien absteigend (also von A bis Z oder 0 bis 9) oder aufsteigend (von Z bis A bzw. 9 bis 0) sortiert werden sollen. Wenn Sie eine ganz individuelle Auflistung von Kategorien haben möchten, gibt es zwei Möglichkeiten. Die erste Möglichkeit wäre, einfach eine manuelle HTML-Liste der Kategorien zu erstellen und als HTML-Klotz Seitenleisten-Plugin (Seite htmlnugget) einzufügen. Dadurch verlieren Sie natürlich die anderen dynamischen Möglichkeiten des Plugins. Die zweite Möglichkeit wäre, das Feld Beschreibung einer Kategorie zu missbrauchen, indem Sie nicht einen Text, sondern eine Zahl darin aufschreiben. Durch die Eingabe einer Zahl für die Reihenfolge der Kategorien können Sie in der Sortierung die Reihenfolge beeinflussen. Das bedeutet jedoch auch, dass Sie dann keine normale textliche Beschreibung der Kategorie mehr nutzen können. Da diese Beschreibung sonst aber nur für Redakteure gilt, ist dies möglicherweise zu verkraften.

Besuchern erlauben, mehrere Kategorien gleichzeitig darzustellen? Wenn ein Besucher in der Darstellung des Plugins auf eine einzelne Kategorie klickt, sieht er alle Einträge dieser Kategorie. In manchen Fällen möchte ein Besucher aber gerne Inhalte mehrerer Kategorien auf einmal ansehen. Wenn Sie die Option Besuchern erlauben, mehrere Kategorien gleichzeitig darzustellen aktivieren, wird neben jeder Kategorie ein Ankreuzfeld angezeigt. Der Besucher kann alle gewünschten Kategorien markieren und danach auf den Button Los klicken, um die Auswahl zu setzen. Ist die Option deaktiviert, wird diese Auswahlbox nicht mehr angezeigt. Dennoch kann ein Besucher spezielle URLs aufrufen, in denen er mehrere Kategorien auf einmal ansehen kann (siehe Seite Permalinks-Kategorien). Die Deaktivierung der Option nimmt dem Benutzer also höchstens die komfortable Möglichkeit zu einer solchen Übersicht und beeinflusst die Darstellungsweise des Plugins.

Kategorien verstecken, die nicht Teil des vom Besucher gewählten Kategoriebaums sind Wenn Sie eine verschachtelte Kategoriestruktur eingerichtet haben, stellt diese eine Baumstruktur dar. Dabei sind jeweils einer Oberkategorie eine oder mehrere Unterkategorien zugeordnet. Wenn Sie Serendipity als eine Art CMS einsetzen, bei dem die Kategorien Menüpunkten entsprechen, wünschen Sie sich möglicherweise, dass bei einem Klick auf eine Unterkategorie die anderen "parallelen" Menüpunkte nicht mehr angezeigt werden. Stellen Sie sich folgenden Kategorienbaum vor: Oberkategorien A, B und C. Jede Kategorie besitzt zwei Unterkategorien: A1 und A2, B1 und B2 sowie C1 und C2. Wenn der Besucher nun auf die Unterkategorie A1 klickt, würden Sie gerne nur die Kategorien A und A2 anzeigen. Die Kategorien und Unterkategorien von B und C sollen verschwinden. Genau zu diesem Zweck dient die Option Kategorien verstecken... Wenn diese Option aktiviert ist, werden die nicht zum gewählten Kategoriebaum passenden restlichen Kategorien nicht mehr in der Ausgabe des Plugins angezeigt. Sie müssten dann zuerst wieder auf die Startseite zurück (oder auf andere Menüpunkte klicken), um die ausgeblendeten Kategorien wieder zu sehen.

Anzahl der Einträge pro Kategorie anzeigen Wenn Sie möchten, dass die Anzahl der Artikel in einer Kategorie in der Ausgabe des Plugins neben dem Kategorienamen angezeigt wird, können Sie die Option Anzahl der Einträge pro Kategorie anzeigen aktivieren. Beachten Sie auch hier, dass die Aktivierung die Geschwindigkeit des Plugins stark beeinflusst, da das Zählen aller Artikel der Datenbank einige Zeit beansprucht. Wenn Sie Einträge zu mehr als einer Kategorie zuweisen, wird dieses Plugin (leider) für jede zugewiesene Kategorie den Artikel erneut zählen. Daher kann es passieren, dass die angezeigte Artikelzahl höher ist als die in Wirklichkeit vorhandenen Artikel.

Smarty-Templating aktivieren Damit Sie dieses Plugin möglichst komfortabel anpassen können, gibt es die Template-Datei plugin_categories.tpl. Nur wenige Seitenleisten-Plugins verfügen über ein eigenes Smarty-Template, da meistens Änderungen per CSS bereits vollkommen ausreichen. Aus Performancegründen wird diese Template-Datei daher auch standardmäßig nicht benutzt. Wenn Sie also ein eigenes Template für das Aussehen der Kategorie-Auflistung benutzen wollen, müssen Sie die Konfigurationsoption Smarty-Templating aktivieren auf Ja setzen. Die eingesetzten Variablen dieser Datei werden auf Seite plugin-categories-tpl erklärt.

5.1.3 - Powered by: serendipity_plugin_plug

Powered by
serendipity_plugin_plug

Ein ebenfalls recht simples Plugin ist Powered by. Es gibt das Logo von Serendipity mit einem Link zur Webseite https://ophian.github.io/ aus und erlaubt es Ihren Besuchern, zu sehen, welche großartige Software hinter Ihrem Blog steckt.

Die Konfigurationsoptionen des Plugins ermöglichen eine Feineinstellung, ob man nur das Logo oder nur den Text anzeigen möchte.

5.1.4 - Verwaltung des Blogs: serendipity_plugin_superuser

Verwaltung des Blogs
serendipity_plugin_superuser

Mit dem Plugin Verwaltung des Blogs binden Sie einen einfachen Link im Frontend ein, auf den Sie als Redakteur klicken können, um ins Backend zu gelangen. Das Plugin erkennt dabei automatisch, ob Sie schon eingeloggt sind, und gibt dementsprechend entweder einen Link zum Login oder direkt zum Backend aus.

Die einzige Konfigurationsoption des Plugins gibt an, ob Sie das HTTPS zum Login benutzen möchten. Ihr Server muss HTTPS (siehe Terminologie auf Seite https) unterstützen und ein gültiges Zertifikat für den Server besitzen, auf dem Serendipity installiert ist. Nur bei der Benutzung von HTTPS ist gewährleistet, dass Ihr Benutzername und Passwort nicht im Klartext (sondern verschlüsselt) an den Server übertragen werden und niemand Ihre Logindaten abfangen kann.

5.1.5 - Blog abonnieren: serendipity_plugin_syndication

Blog abonnieren
serendipity_plugin_syndication

Das Plugin stellt die verschiedenen Optionen zum Abonnieren Ihres Blogs mittels RSS-Feed dar. Dabei wird in der Seitenleiste für jedes gewünschte Format ein Link eingebunden, den Ihre Besucher in ihr RSS-Programm übernehmen können.

Neben dem Titel des Plugins in der Seitenleiste sowie der Aktivierung der zahlreichen Feed-Formate bietet das Plugin folgende Konfigurationsoptionen:

Volle Einträge mit erweitertem Text im RSS-Feed einbinden Ein RSS-Feed enthält üblicherweise nur den Text eines Artikels, den Sie im Feld Eintrag erfasst haben. Der Erweiterte Eintrag ist nicht Bestandteil der RSS-Feeds, und somit muss ein Benutzer Ihr Blog besuchen, um den vollständigen Artikel lesen zu können. Dies ist häufig gewünscht, um mehr Besucher auf die Webseite zu "locken". Um Ihren Besuchern mehr Komfort zu bieten, können Sie aber auch den vollständigen Artikel im RSS-Feed eintragen. Mit dieser Konfigurationsoption können Sie dieses Verhalten beeinflussen. Wenn Sie die Option Client aktivieren, kann, wie im Abschnitt FullFeed auf Seite FullFeed erwähnt, der Leser selbst bestimmen, ob er einen vollständigen RSS-Feed haben will oder nicht. Dazu muss er Ihren RSS-Feed über die Datei rss.php?fullFeed=true abonnieren. Dies ist natürlich relativ versteckt, so dass Sie Ihre Besucher über diese mögliche Variante informieren müssten.

FeedBurner Feed Der Webservice feedburner ist ein auslaufendes Angebot von Google, das Statistiken über die Auslieferung Ihres RSS-Feeds und einige weitere Möglichkeiten der Einbettung bietet. Bei einem FeedBurner-Feed kann der Aufruf des RSS-Feeds im Browser direkt hübsch formatiert sein, statt als für den Besucher merkwürdiger XML-Datensatz zu erscheinen. FeedBurner ermöglicht auch die Einbindung von Werbung und verwandten Tags. Bei FeedBurner müssen Sie sich separat anmelden und dem Service die URL Ihres RSS-Feeds mitteilen. FeedBurner wird dann regelmäßig diese URL aufrufen, Ihren RSS-Feed einlesen, ihn konvertieren und danach unter einer eigenen FeedBurner-URL (die Sie konfigurieren können) anbieten. Damit die Statistikzählung aktiviert wird, müssen Ihre Besucher künftig diesen FeedBurner-Feed abonnieren und nicht den üblichen Serendipity-Feed. Dazu dient die Einstellung Feedburner Feed im Plugin. Wenn diese Variable auf Ja steht, wird der Link zum Feedburner-Feed in Ihrer Seitenleiste angezeigt. In diesem Fall sollten Sie alle anderen Feed-Formate deaktivieren, da die Besucher ja nur noch den FeedBurner-Feed aufrufen sollen. Wenn Sie die FeedBurner-Option lediglich auf Ja gestellt haben, bleiben die URLs zu Ihren alten RSS-Feeds weiterhin intakt, sie werden lediglich versteckt. Wenn Sie Ihre Besucher aber in Zukunft auch von diesen verstecken URLs fernhalten wollen, stellen Sie die FeedBurner-Option auf Erzwingen. Dadurch wird jeder Aufruf des Serendipity-RSS-Feeds automatisch auf die FeedBurner-Feeds umgeleitet. Zu welchem FeedBurner-Feed Serendipity verweist, stellen Sie am Ende der Konfigurationsoptionen ein.

E-Mail-Adresse einbinden? Standardmäßig muss ein RSS-Feed zu jedem Autor eine E-Mail-Adresse anzeigen. Dies wird leider gegenwärtig häufig von SPAM-Robotern missbraucht, um E-Mail-Adressen im Internet zu sammeln. Daher können Sie über die Option E-Mail-Adresse einbinden einstellen, ob Ihre echte E-Mail-Adresse oder eine vorgetäuschte E-Mail-Adresse (nospam@example.com) eingebunden wird. Beachten Sie, dass, wenn Sie im Anti-Spam-Plugin (Seite spamblock) die gleichnamige Option aktiviert haben, diese ebenfalls die Darstellung der E-Mail-Adressen beeinflusst. In abgegrenzten Blogs (im Intranet zum Beispiel) macht die Aktivierung dieser Option noch Sinn, beim Einsatz im Internet ist es jedoch empfehlenswert, die Option auf Nein zu setzen.

Feld "managingEditor" Der RSS 2.0-Feed ermöglicht die Einbindung eines optionalen Feldes, das die E-Mail-Adresse des leitenden Redakteurs eines Blogs enthalten kann. Abonnenten des RSS-Feeds können sich so leicht an den inhaltlich Verantwortlichen wenden. Auch hier gelten die obigen Bedenken, dass enthaltene E-Mail-Adressen oft Spammern zum Opfer fallen könnten.

Feld "webMaster" Analog zu einem inhaltlich Verantwortlichen kann diese Option eine E-Mail-Adresse des technisch Verantwortlichen enthalten.

Feld "ttl" (time-to-live) RSS-Feeds müssen von RSS-Readern regelmäßig abgerufen werden, damit neue Artikel gefunden werden können. Üblicherweise wird ein solcher RSS-Reader alle 30 oder 60 Minuten (je nach Einstellung Ihrer Besucher) Ihre RSS-Feeds abrufen. Sie können über das Feld ttl (Gültigkeitsdauer) innerhalb des RSS-Feeds für RSS-Reader vorschlagen, wie lange Ihr Feed üblicherweise gültig ist. Diesen eingestellten Wert können RSS-Programme dann als Richtlinie für die Aktualisierungshäufigkeit benutzen. Der ttl-Wert wird in Minuten angegeben, wenn Sie also üblicherweise nur einen Artikel pro Tag online stellen, können Sie ihn auf 1440 stellen (entspricht 24 Stunden). Damit können Sie dann möglicherweise einiges an Traffic auf Ihrem Webserver sparen, wenn sich die RSS-Reader daran halten.

Feld "pubDate" Ein RSS-Feed kann ein optionales pubDate-Feld enthalten, das Auskunft über den Erstellungszeitpunkt des letzten Artikels gibt. Dieser Wert wird von vielen RSS-Readern benutzt, um Aktualisierungen festzustellen, daher raten wir von der Deaktivierung dieser Option ab.

XML-Button Neben jedem RSS-Feed wird in der Seitenleiste eine kleine Grafik angezeigt, die standardmäßig dem Standardsymbol für RSS-Feeds entspricht. Wenn Sie eine eigene Grafik benutzen wollen, können Sie den Pfad zu der Grafik in dem Feld XML-Button eintragen. Die Grafik muss sich dabei in Ihrem Template-Verzeichnis befinden, und der hier eingetragene Pfad muss relativ zu Ihrem Template-Verzeichnis sein. Wenn die Datei also in /var/www/example.com/serendipity/templates/meinTemplate/bilder/MeinRSS.gif liegt, tragen Sie im Konfigurationsfeld bilder/MeinRSS.gif ein.

Bild für den RSS-Feed Das RSS 2.0-Format ermöglicht es, ein eigenes Logo für den Feed einzutragen. Diese Grafik kann dann von RSS-Readern in der Titelzeile oder an anderen Stellen angezeigt werden. Wenn Sie hier nichts eintragen, wird standardmäßig das Serendipity-Logo eingebunden. Tragen Sie in diesem Feld die vollständige URL zu einem Bild ein, also etwa http://www.example.com/MeinLogo.jpg. Diese Grafikdatei darf maximal 144 Pixel breit und 400 Pixel hoch sein. Die genauen Maße des Bildes müssen Sie in den beiden darunterliegenden Feldern Breite des Bildes und Höhe des Bildes eintragen.

FeedBurner-ID, Titel, Bildunterschrift und Bild Die letzten vier Konfigurationsoptionen betreffen Sie nur, wenn Sie den oben erwähnten FeedBurner-Service benutzen. Als ID müssen Sie die im FeedBurner dargestellte ID Ihres Feeds eintragen, sie entspricht dem Namen, den Sie in der URL https://feeds.feedburner.com/ID sehen. Wenn Sie den Feedburner-Feed aktiviert haben, wird ein Link dorthin im Seitenleisten-Plugin angezeigt. Dieser Link wird begleitet von einem Bild und einem Linktitel. Im Feld FeedBurner Titel können Sie diesen Titel vergeben, der neben der Grafik dargestellt wird. Die Grafikdatei müssen Sie mit einer vollständigen URL wie https://www.example.com/feedburner.jpg eintragen. Wenn Sie dieses Feld leer lassen, sehen Sie eine Standardgrafik, die den Besucherzähler darstellt. Im Feld FeedBurner Bild-Unterschrift können Sie einen Text hinterlegen, der angezeigt wird, wenn Sie mit der Maus über die FeedBurner-Grafik fahren. Dort können Sie beispielsweise eine kurze Beschreibung eintragen, warum Sie FeedBurner benutzen.

5.2 - Weitere mitgelieferte Plugins

Weitere mitgelieferte Plugins

Neben den standardmäßig aktivierten Plugins können Sie natürlich auch weitere Seitenleisten-Plugins installieren. Es folgt eine Liste der Seitenleisten-Plugins, die bei Serendipity standardmäßig mitgeliefert werden.

 

5.2.1 - Autoren: serendipity_plugin_authors

Autoren
serendipity_plugin_authors

Das Plugin Autoren stellt in der Seitenleiste eine Liste aller im Blog eingetragenen Redakteure dar. Ein Klick auf einen Autor führt dann zu der Übersicht der von ihm geschriebenen Artikel.

Die Konfigurationsoptionen des Plugins sind:

XML-Button Für jeden Autor steht ein eigener RSS-Feed-Link zur Verfügung, über den Einträge dieses Autors abonniert werden können. Die Grafik muss sich dabei in Ihrem Template-Verzeichnis befinden, und der hier eingetragene Pfad muss relativ zu Ihrem Template-Verzeichnis sein. Wenn die Datei also in /var/www/example.com/serendipity/templates/meinTemplate/bilder/MeinRSS.gif liegt, tragen Sie im Konfigurationsfeld bilder/MeinRSS.gif ein.

Mehrfachauswahl von Autoren erlauben? Ähnlich wie bei der Liste aller Kategorien, kann in der Liste aller Autoren vom Besucher eine Auswahl getroffen werden, welche Artikel er dargestellt sehen will. Üblicherweise kann er mit dem Klick auf den Link eines Redakteurs nur die Einträge eines einzelnen Redakteurs sehen. Ist die Option Ermöglicht Besuchern, Einträge mehrerer Autoren gleichzeitig darzustellen aktiviert, wird neben jedem Redakteur ein Ankreuzfeld angezeigt, das der Besucher für alle gewünschten Redakteure markieren kann, um so die Übersicht der Artikel dieser Redakteursgruppe lesen zu können.

Anzahl der Artikel neben dem Autor-Namen anzeigen Wenn Sie diese Option aktivieren, wird in Klammern hinter dem Redakteursnamen die Anzahl der von ihm verfassten Artikel angezeigt. Bitte beachten Sie, dass die Aktivierung dieser Zählung relativ datenbankintensive Abfragen durchführen muss und daher möglicherweise zu Geschwindigkeitseinbußen führen kann.

Nur Autoren mit mindestens X Beiträgen anzeigen Möglicherweise möchten Sie nur aktive Redakteure des Blogs aufführen. Daher können Sie in dem Eingabefeld eine Mindestzahl an Beiträgen eintragen, die ein Redakteur geschrieben haben muss, um in der Seitenleiste angezeigt zu werden. Für diese Option gelten dieselben Performance-Bedenken wie bei der vorherigen. Sollten Sie eine von beiden aktivieren, wird die Aktivierung der anderen Option jedoch darüber hinaus keine weiteren Einbußen zur Folge haben.

5.2.2 - Kalender: serendipity_plugin_calendar

Kalender
serendipity_plugin_calendar

Dieses Plugin wurde mit Serendipity 2.0+ aus der Liste aktiver Plugins gestrichen, da der Kalender als Artikelnavigation heutzutage kaum noch genutzt wird und als mehr oder weniger nicht mehr zeitgemäß betrachtet wird.

Der Kalender zeigt einen blätterbaren Kalender eines Monats in der Seitenleiste an. Einzelne Tage des Kalenders können dabei hervorgehoben werden und zeigen dem Besucher an, dass an diesem Tag ein Blog-Artikel verfasst wurde. Der aktuelle Tag wird ebenfalls hervorgehoben.

In den Konfigurationsoptionen können Sie den Tag des Wochenanfangs festlegen und die Anzeige von Artikeln zu einem Tag auf eine spezielle Kategorie beschränken.

Die Option Plugin-Schnittstelle aktivieren können Sie aktivieren, wenn Sie anderen Plugins erlauben wollen, Tage im Kalender hervorzuheben. Das Plugin Mein Kalender kann diese Option beispielsweise benutzen, um Ihre persönlichen Termine anzufügen.

Zuletzt können Sie einstellen, welche Kategorie als Ausgangspunkt der im Kalender angezeigten Blog-Artikel verwendet wird. Standardmäßig werden alle Kategorien dafür benutzt, Sie können aber auch eine spezielle Kategorie auswählen. Wenn der Besucher die Blog-Artikel selbständig auf eine spezielle Kategorie eingrenzt und das Plugin als Ausgangspunkt Alle Kategorien verwendet, so wird automatisch die aktuelle Kategorie als Datenquelle zur Kalenderdarstellung eingesetzt.

Die Darstellung erfolgt mittels der Template-Datei plugin_calendar.tpl, deren Variablen auf Seite plugin-calendar-tpl erklärt werden.

5.2.3 - Kommentare: serendipity_plugin_comments

Kommentare
serendipity_plugin_comments

Wenn Ihre Besucher Kommentare zu einem Beitrag hinterlassen, können Sie als Redakteur diese relativ leicht über den Backend-Menüpunkt Kommentare einsehen oder werden sogar per E-Mail darüber benachrichtigt. Normale Besucher haben diese Möglichkeit nicht und können daher entweder den RSS-Feed der letzten Kommentare abonnieren oder müssten jeden Blog-Artikel individuell aufrufen, um sich über neue Kommentare zu informieren.

Daher bietet das Seitenleisten-Plugin Kommentare eine einfache Möglichkeit, die letzten Kommentare aller Artikel anzuzeigen und so für den Besucher übersichtlich einzubinden.

Folgende Konfigurationsoptionen bietet das Plugin, abgesehen vom Seitenleisten-typischen Titel:

Zeilenumbruch In der Seitenleiste steht meist nur begrenzt Platz zur Darstellung von Text zur Verfügung. Gerade Kommentare können jedoch die zur Verfügung stehende Breite übermäßig strapazieren. Daher bietet die Option Zeilenumbruch die Möglichkeit, den Platzbedarf einzuschränken, indem nach einer festgelegten Anzahl von Buchstaben ein harter Zeilenumbruch eingefügt wird. Der Zeilenumbruch wird dabei auch Wörter mittendrin trennen, um das Limit nicht zu überschreiten. Dies ist notwendig, damit überlange Wörter Ihrer Besucher (wie zB. "Coooooooooooooooooooool!") nicht das Layout Ihrer Seite sprengen. Leider bereitet der Zeilenumbruch gerade dann Probleme, wenn Besucher lange Links posten, die dann auseinandergebrochen werden. Sollte dies bei Ihnen häufig vorkommen, können Sie die Buchstabenanzahl des Zeilenumbruchs auf eine hohe Zahl wie 999 setzen und dann den Zeilenumbruch dem Browser überlassen. Dabei empfiehlt es sich dann, mittels CSS mögliche Layoutprobleme zu verhindern. Fügen Sie dazu die Zeile .plugin_comment_body { overflow: scroll } am Ende der Datei style.css Ihres gewählten Templates hinzu (siehe Kapitel template-css). Dies wird den Browser dazu anweisen, überlange Wörter durch Scrollbalken innerhalb der Seitenleiste anzuzeigen und nicht die ganze Seitenleiste an die Wortbreite anzupassen.

Zeichen pro Kommentar Um nicht zu viel Platz zu beanspruchen, werden immer nur die ersten 120 Zeichen eines Kommentars in der Seitenleiste angezeigt. Dies reicht meistens, um sich als Besucher einen Überblick zu verschaffen und bei Interesse den vollständigen Kommentar in der Artikel-Detailseite zu lesen. Im Eingabefeld Zeichen pro Kommentar können Sie diese Zeichenanzahl vorgeben.

Anzahl an Kommentaren Üblicherweise zeigt das Plugin die letzten 15 Kommentare. Diese Anzahl können Sie mit dem Eingabefeld Anzahl an Kommentaren verändern.

Datumsformat Zu jedem Kommentar wird das Erstellungsdatum mit angezeigt. Wie dieses formatiert wird, tragen Sie im Feld Datumsformat ein. Die zur Verfügung stehenden Variablen finden Sie auf https://www.php.net/manual/de/function.strftime.php.

Typ Das Seitenleisten-Plugin kann sowohl Kommentare als auch Trackbacks anzeigen. Über das Auswahlfeld Typ bestimmen Sie diese Art der Anzeige. So können Sie beispielsweise auch zwei Kommentar-Seitenleisten-Plugins installieren: eines, das die Trackbacks anzeigt, und eines, das die Kommentare anzeigt.

Kommentatoren URL anzeigen bei... Über dieses Auswahlfeld können Sie bestimmen, ob die Homepage der Person, die den Kommentar hinterlassen hat, in der Seitenleiste angezeigt werden soll. Sie können wählen, ob die Homepage niemals, nur bei Kommentaren, nur bei Trackbacks oder bei beidem angezeigt wird.

5.2.5 - Event-Ausgabe Wrapper: serendipity_plugin_eventwrapper

Event-Ausgabe Wrapper
serendipity_plugin_eventwrapper

Das Plugin Event-Ausgabe Wrapper ist ein recht spezielles Plugin, da es die Grenze zwischen Seitenleisten-Plugin und Ereignis-Plugin etwas aufweicht.

Eigentlich ist es ausschließlich Seitenleisten-Plugins möglich, eine Ausgabe in der Seitenleiste vorzunehmen. Ereignis-Plugins können nur auf andere Bereiche und Funktionalitäten von Serendipity Einfluss nehmen, was wiederum Seitenleisten-Plugins nicht erlaubt ist.

Seltene Fälle von Ereignis-Plugins bieten jedoch auch die Möglichkeit an, eine spezielle Ausgabe in der Seitenleiste vorzunehmen. Diese Möglichkeit wurde eher in frühen Versionen von Serendipity benutzt (zB. vom Plugin "Link List" oder "Worte ersetzen"). Inzwischen nutzen fast alle Plugins die einfachere Möglichkeit, ein zugehöriges Seitenleisten-Plugin (siehe Gekoppelte Plugins ab Seite Gekoppelte Plugins) zu bestimmen und dieses konzeptionelle Problem für Sie als Benutzer einfacher zu lösen.

Wenn dieses Ausgabe-Wrapper-Plugin von einem anderen benötigt wird, finden Sie einen Hinweis dazu in dem jeweiligen Plugin.

In der Konfiguration dieses Plugins können Sie das Quell-Ereignis-Plugin, das eingebunden werden soll, über ein Auswahlfeld bestimmen. Den Titel des Plugins in der Seitenleiste können Sie ebenfalls in einem Eingabefeld eintragen.

Wenn Sie im Frontend keine Ausgaben zu dem gewählten Ereignis-Plugin auffinden, bedeutet das lediglich, dass das gewählte Plugin keine Ausgaben anbietet. Sie können also zB. zwar das Plugin Textformatierung: Smilies auswählen, da dieses aber den Event-Ausgabe Wrapper nicht unterstützt, werden Sie keine Ausgabe sehen.

Für Techniker ist erwähnenswert, dass alles, was dieses Plugin tut, darin besteht, die generate_content()-Methode eines Ereignis-Plugins aufzurufen und die Ausgaben dieser Funktion an die für Seitenleisten-Plugins übliche (gleichbenannte) Methode generate_content() weiterzureichen. Aus Performance-Gründen (und Separierungsgründen) gibt es keinen Event-Hook, um ein Seitenleisten-Plugin zu emulieren.

5.2.6 - Geschichte: serendipity_plugin_history

Geschichte
serendipity_plugin_history

Mit dem Seitenleisten-Plugin Geschichte können Sie im Frontend auf ältere Artikel Ihres Blogs hinweisen, indem Sie eine (von mehreren Optionen abhängige) Liste darstellen.

Titel Titel des Seitenleisten Blocks.

Intro, Outro Sie können vor (Intro, Einführung) und nach (Outro, Nachwort) der Auflistung der älteren Artikel einen beliebigen Text in die Ausgabe des Seitenleisten-Plugins aufnehmen, um Ihren Besuchern zu erklären, warum Sie eine Liste älterer Einträge aufführen. So könnten Sie als Intro zB. den Text "In einer Galaxie, weit weit entfernt ..." den Artikeln voranstellen. Obwohl hierfür nur eine kleine Eingabezeile vorgesehen ist, können Sie hier beliebig langen Text (auch mit HTML-Formatierung) eintragen.

Überschriftenlänge Wenn Ihre Artikel öfter besonders lange Überschriften enthalten, würden diese den Rahmen möglicherweise sprengen. Für diesen Fall können Sie die Zeichenlänge eines Artikeltitels einschränken.

Vorgefertigter Zeitrahmen Standardmäßig zeigt das Plugin Einträge an, die genau vor einem Jahr geschrieben wurden. Ist kein solcher Artikel vorhanden, zeigt das Plugin keinen Artikel an. Wenn Sie einen anderen Zeitraum wünschen, können Sie das Auswahlfeld Vorgefertigter Zeitrahmen auf Anderer stellen und die darunterliegenden Optionsfelder anpassen.

Mindestalter Wenn Sie einen eigenen vorgefertigten Zeitrahmen eingestellt haben, tragen Sie in dieses Feld ein, wie alt ein Artikel mindestens sein muss (in Tagen gemessen), um in der Ausgabe des Plugins berücksichtigt zu werden.

Höchstalter Analog zu dem Mindestalter eines Artikels können Sie hier das maximale Alter eines Eintrages angeben. Wenn Sie als Mindestalter beispielsweise 12 eintragen und als Höchstalter 20, würden Sie am 30.06.2007 alle Artikel sehen, die zwischen dem 18.06.2007 und dem 10.06.2007 verfasst wurden.

Anzahl der durchlaufenden Jahre Setzen Sie die Anzahl der Jahre, die insgesamt durchlaufen werden sollen, wenn Sie "Heute vor einem Jahr" als Zeitrahmen ausgewählt haben. Standard ist 1 (das aktuelle Jahr). Setzen Sie dafür die voranstehenden "Mindestalter" und "Höchstalter" Einträge auf exakt 365 Tage. Bei Auswahl von mehreren Jahren wird die ausgegebene History Sidebar Box mitsamt möglichen Intro und Outro aus Performancegründen für diesen Tag in der "templates_c/history_daylist.dat" Datei gecached.

Maximale Anzahl der Einträge Beschränkt die Anzahl der Einträge, die in der Seitenleiste angegeben werden. Wenn Sie mehr als die hier festgelegte Anzahl an Einträgen im definierten Zeitraum erstellt haben, werden also nur die ersten Artikel davon angezeigt.

Optionaler Text, für Eintrags Cache von leeren Jahren Als Platzhalter für Jahre ohne Einträge mit der "Option Anzahl der durchlaufenden Jahre". Beispiel: "Schade! Heute gibt es nichts. Vielleicht Morgen..."

Ganze Einträge Standardmäßig zeigt das Plugin nur die Überschriften der Artikel des gewählten Zeitraums an. Wenn Sie diese Option auf true stellen, wird auch der Beitragstext mit angezeigt.

Datum anzeigen Wenn Sie diese Option auf true stellen, wird auch das Datum eines Artikels angezeigt.

Zeige den Namen des Authors Den Autorennamen eines Artikels können Sie anzeigen, indem Sie die Option Show author's name auf true stellen.

Datumsformat Sofern Sie die Option Datum anzeigen aktiviert haben, können Sie hier das Datumsformat einstellen. Die zur Verfügung stehenden Variablen finden Sie auf https://www.php.net/manual/de/function.strftime.php, auch wenn die Funktion an sich inzwischen als Deprecated markiert ist.

5.2.7 - HTML-Klotz: serendipity_plugin_html_nugget

HTML-Klotz
serendipity_plugin_html_nugget

Das Plugin namens HTML-Klotz ist wohl das meistunterschätzte Plugin - sobald man es einmal einzusetzen weiß, ist es aus einem Blog nicht mehr wegzudenken. Denn mit diesem Plugin können Sie beliebiges HTML und beliebiges JavaScript in Ihre Seitenleiste einfügen.

Dieses Plugin lässt sich beliebig oft installieren und kann daher flexibel positioniert werden. Der Einsatz eines HTML-Klotzes macht zudem Dateiänderungen auf dem Server unnötig, denn alles kann über die Plugin-Verwaltung eingestellt werden.

Pro HTML-Klotz gelten folgende Konfigurationsoptionen:

Titel Die Überschrift des HTML-Klotzes, die in der Seitenleiste angezeigt wird. Wenn Sie den Titel leer lassen, wird kein Titel angezeigt. Dies ist besonders dann hilfreich, wenn Sie ein JavaScript einfügen wollen, das keine Ausgabe besitzt und sonst nur zur Anzeige eines leeren Klotzes führen würde. Der Titel eines Plugins wird zusätzlich in der Plugin-Verwaltung mit ausgegeben, damit Sie mehrere HTML-Klötze voneinander unterscheiden können.

Zusätzlicher Informationstext, der auf der Plugin-Oberfläche dargestellt wird In diesem Eingabefeld können Sie eine kleine Beschreibung angeben, die in der Plugin-Verwaltung neben jedem HTML-Klotz angezeigt wird. Dies ist besonders hilfreich in Fällen, bei denen ein HTML-Klotz ohne Titel angelegt wurde.

Inhalt In diesem großen Eingabefeld tragen Sie den HTML-Code oder das JavaScript ein, das Sie in der Seitenleiste darstellen wollen. Wenn Sie den WYSIWYG-Editor in den Eigenen Einstellungen aktiviert haben, wird hier die vom Eintrags-Editor bekannte Oberfläche angezeigt. Beachten Sie, dass der WYSIWYG-Editor intern bereits HTML-Code speichert. Würden Sie in ein WYSIWYG-Editor-Fenster HTML-Code eintragen, würde dies später im Frontend "gedoppelt" angezeigt werden. Für eigenes HTML oder JavaScript gilt daher, entweder den WYSIWYG-Editor vorübergehend zu deaktivieren oder im Quelltext-Modus des Editors zu arbeiten.

Textformatierung(en) durchführen Die Ausgabe des Seitenleisten-Plugins wird auch stark von der Option Textformatierung(en) durchführen beeinflusst. Ist diese Option aktiviert, wird alles, was Sie im HTML-Klotz eingetragen haben, mit denselben Textformatierungs-Plugins (siehe Seite Textformatierungs-Plugins) verarbeitet, wie Sie es von ihren Artikeln kennen. Besonders wenn Sie JavaScript oder eigenen HTML-Code in einem HTML-Klotz einbinden wollen, müssen Sie unbedingt darauf achten, diese Option auf Nein zu setzen. Andernfalls könnten destruktive Textformatierungen auf Ihren Code angewendet werden, was dann zu einer Fehldarstellung führen würde.

Wo soll dieses Plugin angezeigt werden Mit diesem Auswahlfeld legen Sie fest, an welcher Stelle ein HTML-Klotz angezeigt werden soll: Überall, Nur Artikelübersicht oder Nur Artikel-Detailansicht. Speziellere Möglichkeiten, ein Seitenleisten-Plugin vor bestimmten Benutzern zu verstecken, bietet das Plugin Seitenleisten verstecken (siehe Seite sidebarhider).

5.2.8 - Suche: serendipity_plugin_quicksearch

Suche
serendipity_plugin_quicksearch

Das Plugin Suche ist ein simples Seitenleisten-Plugin, das eine Sucheingabe-Box anzeigt. Dort können Besucher Suchwörter eintragen, um Artikel zu durchsuchen. Weitere Hinweise zur Volltextsuche finden Sie auf Seite Suche.

Dieses Plugin bietet keine Konfigurationsmöglichkeiten an. Es unterscheidet sich nicht vom Suchformular das einige themes per se schon selbst eingebaut haben.

5.2.9 - Aktuelle Einträge: serendipity_plugin_recententries

Aktuelle Einträge
serendipity_plugin_recententries

Das Plugin Aktuelle Einträge zeigt in der Seitenleiste eine kurze Übersicht der neuesten Artikel in Ihrem Blog an. Dies ermöglicht eine konzentrierte Übersicht der Artikel an zentraler Stelle, die ein Besucher auch dann sieht, wenn er gerade die Detailseite eines Artikels anschaut.

Neben dem üblichen Seitenleisten-Titel und der Anzahl an Artikeln, die eingebettet werden sollen, bietet das Plugin folgende besonderen Optionen:

Angezeigte Einträge überspringen Wenn Sie die Option Angezeigte Einträge überspringen auf Alle Anzeigen stellen, zeigt die Seitenleiste stets die letzten aktuellen Einträge. Dies kann jedoch zu einer Dopplung führen, da Sie ja auf der Startseite des Frontends bereits die letzten 15 Artikel anzeigen. Wenn Sie also nur die aktuellsten Artikel anzeigen wollen und dabei die auf der Startseite bereits angezeigten Einträge überspringen wollen, wählen Sie die Option Einträge auf der Hauptseite überspringen.

Datumsformat Zu jedem Artikel wird das Erstellungsdatum angezeigt. Wie dieses formatiert wird, tragen Sie im Feld Datumsformat ein. Die zur Verfügung stehenden Variablen finden Sie auf https://www.php.net/manual/de/function.strftime.php, auch wenn die Funktion an sich inzwischen als Deprecated markiert ist.

Kategorie Standardmäßig zeigt das Plugin die Artikel aller Kategorien chronologisch sortiert an. Wenn Sie jedoch in der Seitenleiste nur die letzten Einträge in einer speziellen Kategorie darstellen wollen, können Sie diese spezielle Kategorie in dem Mehrfach-Auswahlfeld angeben. Mehrere Kategorien können Sie hier auch wählen, indem Sie mit gedrückter (Strg/Apfel)-Taste auf die Kategorien klicken. Die Sonderoption Übergeordnete Kategorie bedeutet, dass als Quelle für die Liste der aktuellen Einträge die Kategorie verwendet wird, die der Besucher im Blog gerade aufgerufen hat.

Zeige zufälligen Artikel Wenn Sie eine zufällige Auswahl von Artikeln darstellen wollen, können Sie die Option Show Random Articles aktivieren. Bei jedem Seitenaufruf werden dann zufällig andere Artikel in der Seitenleiste angezeigt.

Wo soll dieses Plugin angezeigt werden? Hier können Sie auswählen, ob die Plugin Ausgabe nur in der Artikelübersicht, nur in der Artikel-Detailansicht oder Immer (Überall), gezeigt werden soll.

5.2.10 - Fremder RSS/OPML-Blogroll Feed: serendipity_plugin_remoterss

Fremder RSS/OPML-Blogroll Feed
serendipity_plugin_remoterss

Dieses leicht kryptisch klingende Plugin bietet eine recht einfache Möglichkeit, die RSS-Feeds fremder Seiten einzubinden.

So können Sie in Ihrer Seitenleiste beispielsweise RSS-Feeds von Newstickern einbinden oder auch die RSS-Feeds von diversen Webservices wie del.icio.us oder last.fm einbinden, die Daten von diesem Webserver anzeigen können.

Das Plugin lässt sich auch mehrfach installieren, so dass Sie beliebig viele RSS-Feeds einbinden können.

Abgesehen von RSS-Feeds sind auch sogenannte OPML-Blogrolls möglich. OPML-Dateien werden von vielen RSS-Readern erstellt und können Linklisten enthalten, welche Blogs Sie lesen. Wenn diese OPML-Datei dann in Ihrer Seitenleiste eingebunden wird, können Sie so relativ leicht automatisch Ihre Lieblingsblogs auflisten.

Das RSS-Seitenleisten-Plugin agiert grundsätzlich wie ein eigenständiger RSS-Reader: Ihr Blog wird in einem definierten Zeitraum die RSS-Feeds selbständig abholen, einbinden und für einen gewissen Zeitraum zwischenspeichern, um Bandbreite zu sparen. Damit das Plugin funktionieren kann, gelten dieselben Rahmenbedingungen wie für Spartacus (siehe Seite Spartacus): Ihr Server darf nicht von einer Firewall für ausgehende Verbindungen blockiert werden.

Pro installiertem RSS-Feed-Plugin kann eine Vielzahl an Optionen eingestellt werden:

Feed-Titel Im Feld Feed-Titel stellen Sie ein, wie die Überschrift des RSS-Feeds innerhalb der Seitenleiste lauten soll.

Typ des Feeds In diesem Auswahlfeld legen Sie das Format des fremden Feeds fest. Sie können zwischen RSS und OPML wählen, wobei für RSS-Feeds alle Versionen von 0.91 bis 2.0 unterstützt werden, und von OPML die (einzig existierende) Version 1.0.

RSS/OPML-URI Die Quell-URL des RSS-Feeds (oder des OPML-Feeds) müssen Sie in das Feld RSS-OPML-URI eintragen. Geben Sie dort eine vollständige URL an, also beispielsweise http://www.example.com/serendipity/rss.php?version=2.0.

RSS-Zielelement In einem RSS-Feed stehen mehrere Felder zur Verfügung, die das Seitenleisten-Plugin darstellen kann. Im Feld title wird beispielsweise der Titel eingebunden, das Feld content enthält den Artikelinhalt. Manchmal kann es jedoch sein, dass die Felder für den Inhalt content:encoded oder body lauten. Damit das Seitenleisten-Plugin flexibel eingesetzt werden kann, müssen Sie den Namen des Feldes angeben, das Serendipity in der Seitenleiste darstellen soll. Die Liste der verfügbaren Felder können Sie in der Spezifikation des jeweiligen RSS-Formats nachlesen [*] https://www.rssboard.org/rss-2-0 für RSS 2.0; weitere Links finden Sie auf https://de.wikipedia.org/wiki/RSS_(Web-Feed). Sie können beliebig viele Feldinhalte anzeigen lassen, indem Sie mehrere Felder mittels , voneinander trennen. Damit nicht zu viel Platz verschwendet wird, gibt Serendipity üblicherweise nur den Titel (title) eines RSS-Feeds an.

Smarty-Templating aktivieren Die Darstellung des Feeds in der Seitenleiste kann über die Smarty-Template-Datei plugin_remoterss.tpl gesteuert werden, wenn die Option Smarty-Templating aktivieren gewählt wurde. Andernfalls benutzt das Plugin für seine Ausgaben die integrierte HTML-Darstellung. Ein Beispiel für eine Template-Datei liegt im Verzeichnis plugins/serendipity_plugin_remoterss/plugin_remoterss.tpl. Die dort verfügbaren Variablen sind auf Seite plugin-remoterss.tpl dokumentiert. Grundsätzlich sollten Sie die Templating-Option nur dann benutzen, wenn Sie an der Standardausgabe Anpassungen vornehmen wollen, die Sie nicht bereits mittels CSS-Anpassung oder Konfiguration des Plugins beeinflussen können.

Anzahl der Einträge Standardmäßig zeigt das Seitenleisten-Plugin alle Einträge/Artikel eines RSS-Feeds. Wenn Sie aber die Anzahl auf eine gewisse Zahl begrenzen möchten, können Sie diese hier eintragen.

RSS-Link verwenden Jeder Artikel eines RSS-Feeds besitzt üblicherweise einen Link, der zu der Quellseite des Artikels im Original-Blog (oder Webservice) führt. Falls die Option RSS-Link verwenden aktiviert ist, wird dieser Link in der Ausgabe des Plugins dargestellt.

HTML-Ausgabe escapen Es ist möglich (und erlaubt), dass ein Artikel eines (fremden) RSS-Feeds HTML-Code enthält. Dies ermöglicht zB. Fettungen und eigene HTML-Links in den dargestellten Artikeln. Bei der Darstellung fremder RSS-Feeds könnte dies jedoch zu Sicherheitsproblemen führen, denn immerhin kann so auch möglicherweise bösartiges JavaScript in Ihrem Blog ausgeführt werden, das bei Ihren Besuchern Logindaten oder anderes ausspäht (dies nennt man XSS-Angriff). Bei RSS-Feeds, deren Quelle Sie nicht absolut vertrauen, sollten Sie die Option HTML-Ausgabe escapen unbedingt aktivieren. Wenn Sie jedoch RSS-Feeds von vertrauenswürdigen Webservices einbinden (wie etwa Ihre Bilderliste von Flickr), dann werden Sie diese Option deaktivieren müssen, weil sonst keine Bilder angezeigt würden.

Display Date, Datumsformat Jeder Artikel eines RSS-Feeds besitzt üblicherweise ein Veröffentlichungsdatum. Wenn Sie dieses zusätzlich unterhalb des RSS-Artikels anzeigen wollen, stellen Sie die Option Display Date auf Ja. Die Option Datumsformat bezieht sich auf die Formatierung des Veröffentlichungsdatums. Die Variablen, die Sie hier benutzen können, sind auf https://www.php.net/manual/de/function.strftime.php zusammengefasst. Die Benutzung ist nur noch eine Weile möglich, da strftime mit PHP 8.1 als deprecated markiert wurde und mit PHP 9 dann entfernt wird.

Zeichensatz Jeder RSS-Feed enthält Artikel in einem speziellen Zeichensatz. Ein Großteil der RSS-Feeds ist im UTF-8-Zeichensatz verfasst, aber einige Feeds (gerade deutsche) enthalten die Artikel im ISO-8859-1-Zeichensatz. Damit Serendipity fremde Artikel später im Blog mit korrekten Sonderzeichen darstellen kann, müssen Sie Serendipity über die Option Zeichensatz mitteilen, welchen Zeichensatz der RSS/OPML-Feed benutzt. Sie können dies manuell relativ leicht herausfinden, indem Sie die fremde URL aufrufen und in der XML-Ausgabe nach einer Angabe mit dem Titel charset in der ersten Zeile der Datei suchen. Leider benutzt Serendipity eine ältere RSS-Bibliothek zum Einlesen der RSS-Feeds, daher wird Ihnen diese Aufgabe derzeit noch nicht vom System abgenommen.

Link-Target Wenn Sie bei einem Artikel Hyperlinks zulassen (Option RSS-Link verwenden), wird ein Link standardmäßig im selben Browser-Fenster wie Ihr Blog geöffnet. Über das HTML-Attribut namens target kann man jedoch auch ein neues Browser-Fenster öffnen, wenn man bei der Option Link-Target ein _blank einträgt. Bitte beachten Sie, dass ein solches target=_blank dazu führt, dass ein Besucher einen Link nicht so einfach nicht in einem neuen Fenster öffnen kann und dass ihn dies möglicherweise stört. Neue XHTML-Standards empfehlen daher, auf die Benutzung von target im Optimalfall zu verzichten und dem Besucher die volle Kontrolle zu überlassen, wie er einen Link in seinem Browser öffnen möchte.

Wann wird der Feed aktualisiert Theoretisch würde bei jedem Besuch Ihres Blogs der fremde RSS-Feed neu aufgerufen und angezeigt. Da dies viel Bandbreite und auch viel Zeit kosten würde, speichert das Plugin die Ausgaben des fremden Feeds für einen gewissen Zeitraum. Diesen Zeitraum können Sie über die Option Wann wird der Feed aktualisiert selber vorgeben, indem Sie hier eine Dauer (in Sekunden) eintragen. Standardmäßig wird ein Feed für drei Stunden gecached, bevor ein neuer Besucher Ihrer Webseite ihn neu erzeugt. Bei besonders häufig aktualisierenden RSS-Feeds können Sie dieses Limit natürlich heruntersetzen.

Bullet Image Falls Sie gerne die einzelnen Artikel eines fremden RSS-Feeds voneinander trennen wollen, können Sie in dem Feld Bullet Image eine beliebige vollständige URL einer Grafikdatei eintragen. Diese Grafik wird dann nach jedem Artikel angezeigt.

Textformatierung(en) durchführen Wenn die Option Textformatierung(en) durchführen aktiviert ist, wird die Ausgabe des RSS-Feeds an alle bei Ihnen installierten Textformatierungs-Plugins weitergereicht (siehe Seite Textformatierungs-Plugins). Diese können beliebige Umwandlungen vornehmen, die dann auch die Darstellung des RSS-Feeds beeinflussen.

5.3 - Auswahl externer Plugins

Auswahl externer Plugins

Über die mitgelieferten Plugins hinaus finden Sie auch eine große Auswahl an Plugins über https://ophian.github.io/plugins/. Eine Auswahl an häufig genutzten Seitenleisten-Plugins finden Sie auf den folgenden Seiten.

 

5.3.1 - Category Tree Menu: serendipity_plugin_category_dhtml_menu

Category Tree Menu
serendipity_plugin_category_dhtml_menu

Das Standard-Seitenleisten-Plugin zur Darstellung von Kategorien zeigt diese einfach untereinander aufgelistet an. Da vielfach die Kategorie-Übersicht als eine Art Menüstruktur des Blogs benutzt wird, ist diese Darstellung möglicherweise nicht immer die beste.

Das Plugin Category Tree Menu bietet daher eine dynamische Kategorieansicht an. Auf oberster Ebene werden nur alle Hauptkategorien angezeigt, alle Unterkategorien werden ausgeblendet und nur durch Klick auf eine Hauptkategorie wieder angezeigt. So kann man, wie von Dateimanagern gewohnt, Kategorien platzsparend ein- und ausklappen.

Dieses Plugin benötigt die externe PEAR::HTML_TreeMenu-Bibliothek. Diese müssen Sie entweder als zentrale PEAR-Bibliothek über den Server-Provider installieren oder manuell installieren. Dazu müssen Sie das PEAR-Paket herunterladen [*] https://pear.php.net/package/HTML_TreeMenu und entpacken. Laden Sie die Datei HTML_TreeMenu-1.2.2/TreeMenu.php anschließend ins Serendipity-Verzeichnis bundled-libs/HTML/ hoch. Kopieren Sie dann noch die Datei TreeMenu.js und das ganze Verzeichnis images in Ihr Plugin-Verzeichnis plugins/serendipity_plugin_category_dhtml_menu.

In den Konfigurationsoptionen des Plugins müssen Sie nun den vollständigen Pfad zu TreeMenu.js wie auch zum images-Unterverzeichnis eintragen. Bei der Standardkonfiguration im Beispiel dieses Buches wäre das also


    /serendipity/plugins/serendipity_plugin_dategory_dhtml_menu/images/

und


    /serendipity/plugins/serendipity_plugin_dategory_dhtml_menu/TreeMenu.js

Nur wenn diese beiden Pfade korrekt eingetragen sind, werden Sie später im Frontend eine Darstellung der Kategorien sehen. Bei einer Fehlkonfiguration ist das Seitenleisten-Plugin leer, und Ihr Browser zeigt möglicherweise eine JavaScript-Fehlermeldung an.

Die Verwendung des Category Tree Menu hat einen großen Nachteil gegenüber dem vorhandenen Kategorien-Plugin: Es zeigt immer pauschal alle Kategorien und Unterkategorien an und kann auch keine Leserechte zu einer Kategorie auswerten. Auch die Darstellung mehrerer Kategorien ist mit dem Plugin nicht möglich. Daher müssen Sie sich entscheiden, ob diese Möglichkeiten für Sie kritisch sind. Vielleicht findet sich in zukünftigen Versionen dieses Plugins ein Entwickler, der beide Plugins miteinander kombiniert?

5.3.2 - Externe PHP-Anwendung: serendipity_plugin_externalphp

Externe PHP-Anwendung
serendipity_plugin_externalphp

Oft kann es vorkommen, dass Sie eine bestehende kleine PHP-Anwendung in Ihrer Seitenleiste einbinden wollen, also beispielsweise einen Shoutbox-Ersatz, ein Zufallszitat oder auch eigenen Counter-Code.

Grundsätzlich ist es empfehlenswert, solche Anwendungen mit einem eigenen Seitenleisten-Plugin einzubinden (siehe Seite pluginapi ff.).

Für Fälle, in denen Ihnen das zu kompliziert erscheint, können Sie das Plugin Externe PHP-Anwendung installieren. Dieses ermöglicht Ihnen, mit einem PHP-include-Befehl ein anderes PHP-Script auf Ihrem Server aufzurufen.

Bitte beachten Sie, dass dieses Plugin ein großes Sicherheitsrisiko darstellt. Daher dürfen nur Administratoren (entsprechend dem Benutzerrang eines Redakteurs) ein derartiges Plugin einbinden und konfigurieren.

Eine Einbindung mittels dieses Plugins muss nicht unbedingt bei jedem beliebigen PHP-Script funktionieren. Wenn das fremde PHP-Script zB. Datenbankverbindungen kappt, globale Namensräume überschreibt oder mit von Serendipity genutzten Funktionsnamen kollidiert, kann es zu Problemen kommen. In einem solchen Fall müssen Sie sich leider an den Autor des fremden Scripts wenden.

Für Programmierer gilt: Das Plugin setzt den include-Befehl innerhalb einer Klassenmethode (generate_content()) ein. Globale Variablen können daher nicht auf die übliche Weise angesprochen werden, sondern müssen entweder vorher mittels global $variable in den Namensraum importiert oder zentral via $GLOBALS['variable'] angesprochen werden.

In der Konfiguration des Plugins tragen Sie den vollständigen Pfad zu einer Datei ein. Benutzen Sie dafür die Verzeichnisstruktur der Datei auf dem Server, also beispielsweise /var/www/example.com/andereScripts/meinScript.php. Wenn Ihr Server die PHP-Option allow_url_fopen aktiviert hat, können Sie anstelle eines Dateisystem-Pfades auch eine URL eintragen. Wenn Sie eine URL einbinden, wird lediglich die Ausgabe dieser URL im Plugin dargestellt - das Script muss also für eine derartige Verwendung vorgesehen sein.

Die Konfigurationsoption Textformatierung(en) durchführen gibt an, ob die Ausgabe des fremden PHP-Scripts an Textformatierungs-Plugins von Serendipity weitergereicht werden soll, um die Ausgabe genauso zu formatieren wie einen redaktionellen Artikel. Die Textformatierungen richten sich dabei nach den von Ihnen installierten Plugins, also zB. der Umwandlung von Smiley-Zeichen in echte Grafiken und weitere (siehe Seite Textformatierungs-Plugins).

5.3.3 - Flickr badge: serendipity_plugin_flickrbadge,
FLICKR Sidebar-Plugin: serendipity_plugin_flickr

Flickr badge, FLICKR Sidebar-Plugin
serendipity_plugin_flickrbadge, serendipity_plugin_flickr

Der Webservice https://www.flickr.com/ ermöglicht es seinen Benutzern, eigene Bildergalerien komfortabel zu verwalten. Zudem bietet Flickr dabei zahlreiche Einbindungsmöglichkeiten über eine Schnittstelle an.

Serendipity besitzt zwei Seitenleisten-Plugins, mit denen man seine eigenen Bilder bei Flickr in der Seitenleiste anzeigen kann. Dafür muss Ihr Webserver natürlich ausgehende Verbindungen zum Flickr-Webserver erlauben, darf also nicht durch eine Firewall blockiert werden.

Flickr badge ist ein aktuelleres Plugin, das PHP5 auf Ihrem Webserver benötigt und sonst keine weiteren Voraussetzungen besitzt.

Das FLICKR Sidebar-Plugin ist auch auf PHP4-Webservern benutzbar, dafür müssen Sie aber selbständig eine fremde Bibliothek herunterladen. Diese Bibliothek nennt sich PEAR::Flickr_API [*] https://code.iamcal.com/php/flickr/readme.htm. Laden Sie sich das ZIP-Paket der Bibliothek herunter, entpacken Sie die Datei API.php aus dem Unterverzeichnis pear/Flickr/ und laden Sie sie in Ihr Serendipity-Verzeichnis bundled-libs hoch. Danach muss sich also auf Ihrem Server eine Datei bundled-libs/Flickr/API.php in Ihrem Serendipity-Stammverzeichnis befinden. Diese wird dann von Ihrem Plugin später eingebunden und verwendet, um mit Flickr zusammenzuarbeiten. Wenn Ihnen diese Datei fehlt oder Sie sie in ein falsches Verzeichnis hochgeladen haben, erhalten Sie eine Fehlermeldung in der Seitenleiste, und das Plugin wird nicht funktionieren.

In den Konfigurationsoptionen beider Plugins müssen Sie den Flickr-API-Schlüssel eintragen. Wenn Sie bei Flickr eingeloggt sind, können Sie diesen einfach beantragen und später in der Konfigurationsoberfläche eintragen.

Das Flickr badge-Plugin ermöglicht weiterhin, die Anzahl der Bilder insgesamt und die Anzahl der dargestellten Bilder pro Zeile festzulegen. Dabei werden die chronologisch aktuellsten Bilder ausgewählt. Das Plugin erstellt selbständig einen Zwischenspeicher (Cache) der letzten Bilder, der stündlich aktualisiert wird.

Im FLICKR Sidebar-Plugin können Sie einige weiterreichende Optionen einstellen, die die Größe und das Format der Vorschaubilder regeln sowie die Möglichkeit geben, die Dauer der Zwischenspeicherung selbst zu bestimmen.

Welches Plugin Sie wählen, ist hauptsächlich von den Rahmenbedingungen Ihres Webservers abhängig: Wer über PHP5 verfügt und keine externen Bibliotheken herunterladen möchte, sollte das Flickr badge-Plugin verwenden. Wer etwas mehr Flexibilität bei der Bildgröße benötigt, über kein PHP5 verfügt oder den höheren Installationsaufwand nicht scheut, dem sei das FLICKR Sidebar-Plugin ans Herz gelegt.

Zuletzt bietet Flickr aber auch noch einen RSS-Feed oder einen JavaScript-Schnipsel an, die Sie auch mittels des Plugins Fremder RSS/OPML-Blogroll Feed (Seite remoterss) oder des HTML-Klotzes (Seite htmlnugget) anzeigen können. Weitere Hinweise zu den Einbindungsmöglichkeiten finden Sie auf der Flickr-Seite unter https://www.flickr.com/services/feeds/.

5.3.4 - AdSense: serendipity_plugin_google_adsense

AdSense
serendipity_plugin_google_adsense

Google AdSense [*] https://www.google.com/adsense ist ein Angebot von Google, mit dem Sie Werbeanzeigen von Googles Werbepartnern auf Ihrer eigenen Seite einbinden können.

Dabei ruft der Besucher (also NICHT Ihr Server selbst!) ein JavaScript auf, das eine Liste von Werbeanzeigen (meist abhängig vom Inhalt Ihres Blogs) darstellt.

Für jeden Klick Ihrer Besucher auf eine solche Werbung erhalten Sie von Google etwas Geld, das Ihnen ab Erreichen eines Mindestbetrags überwiesen wird.

Google wählt dabei die Anzeigen der Werbepartner nach meist seriösen Kriterien aus. Sie sollten sich jedoch gut überlegen, ob Sie auf Ihrem Blog tatsächlich Werbung einbinden wollen. Bei deutschen Blogs führt dies zum einen oft dazu, dass Ihr Blog dadurch als kommerzielles Angebot eingestuft wird und Sie unter diesem Gesichtspunkt für die Inhalte Ihres Blogs verantwortlich sind. Etwaige Verstöße gegen das Urheberrecht werden bei kommerziellen Angeboten weitaus härter geahndet, als es bei privaten Blogs der Fall ist.

Wenn Ihr Blog tatsächlich kommerzieller Natur ist, ist auch hier der Einsatz von Werbung mit Vorsicht zu genießen. Da Sie nur eingeschränkte Kontrolle über die angezeigte Werbung haben, könnte es leicht passieren, dass Werbung der Konkurrenz auf Ihren Seiten eingebunden wird.

Für die Einbindung von Werbung spricht natürlich die finanzielle Verdienstmöglichkeit - wägen Sie jedoch stets die Nachteile ab und informieren Sie sich am besten vorher ausführlich über Google AdSense.

Um das JavaScript von Google AdSense einzubinden, bietet Google selbst bereits ein Tool zur Erzeugung des Codes an. Diesen Code könnten Sie dann per Kopieren & Einfügen in einen HTML-Klotz (siehe Seite htmlnugget) übernehmen. Der Vorteil des Google-Tools ist, dass Sie dort die Farbe und andere Optionen zum Aussehen der Werbung einstellen können.

Das Google AdSense-Seitenleisten-Plugin vereinfacht die Einbindung etwas, indem Sie keinen Code selbst einfügen müssen. Stattdessen tragen Sie bei der Konfiguration des Plugins lediglich Ihre AdSense-ID ein und wählen das grobe Anzeigenformat sowie die Anzahl der gewünschten Werbeanzeigen. Leider ist es aufgrund der Lizenzbedingungen von Google nicht erlaubt, dass das Plugin Ihnen dieselben Formatierungsmöglichkeiten wie das Google-Tool anbietet.

Auch vom Google AdSense-Plugin können Sie mehrere verschiedenartig konfigurierte Plugins installieren und frei in der Seitenleiste verteilen. Bei der Verwendung mehrerer Werbeblöcke können Sie die Konfigurationsoption Kanal (Channel) dafür benutzen, unterschiedlich bei Google konfigurierte Werbe-Themenkanäle anzuzeigen. So könnten Sie in der linken Seitenleiste nur Werbung zu Lifestyle-Produkten anzeigen und in der rechten Seitenleiste ein anders konfiguriertes Plugin nur mit Technikprodukten. Gehen Sie jedoch sparsam mit Werbeblöcken um, da Sie sonst Ihre Besucher vergraulen.

5.3.5 - Unified Sidebar Image Display: serendipity_plugin_imagesidebar

Unified Sidebar Image Display
serendipity_plugin_imagesidebar

Zahlreiche Plugins im Serendipity-Plugin-Archiv ermöglichen die Einbindung von Bildern in der Seitenleiste.

Das Plugin Unified Sidebar Image Display versucht diese verschiedenen Plugins unter einem Dach zu vereinen. Anstatt für jede einzelne Galerie-Software ein eigenständiges Plugin zu installieren, können Sie mit diesem Plugin direkt mehrere mögliche Bildquellen auswählen. Davon verblieben ist nur noch die integrierte Serendipity-Mediathek.

Inzwischen hat die Realität dieses Plugin in weiten Teilen überholt. Die einst hervorragende Menalto Galerie zum Beispiel wird schon seit längerem nicht mehr weiterentwickelt und bei den anderen (Coppermine, ...) Galerien müsste wahrscheinlich auch ein Plugin Maintainer oder interessierter User erst einmal schauen wie es damit wirklich heutzutage steht. Trotzdem lassen wir die Pluginbeschreibung erst einmal wie sie ist, damit sie zum Vorbild für weitere Additionen werden kann.

So gilt, dass nur noch die Serendipity Mediathek wirklich unterstützt wird.

Nachdem das Plugin installiert wurde, müssen Sie in der Konfiguration erst festlegen, welche Software als Quelle für Ihre Bilder herangezogen werden soll. Abhängig von der gewählten Option werden dann weitere Konfigurationsmöglichkeiten angezeigt, sobald Sie auf den Button Speichern klicken.

Die Menalto Gallery bietet in ihrer Installation bereits ein kleines PHP-Script namens block-random.php an, mit dem Sie ein Bild der Galerie anzeigen können. Je nach Version der Menalto Gallery (1.x oder 2.x) heißt dieses Script anders, daher müssen Sie vor allem darauf achten, dem Serendipity-Plugin die richtige Gallery-Version mitzuteilen.

Wenn Sie die Menalto Gallery in ein Unterverzeichnis von Serendipity installiert haben, kann es möglicherweise zu Problemen mit der URL-Umformung von Serendipity kommen. Wenn Sie die Option mod_rewrite in der Serendipity-Konfiguration gewählt haben, sollten Sie eine .htaccess-Datei im Gallery-Unterverzeichnis erstellen. Diese sollte den Inhalt


    RewriteEngine Off

haben. Mit einer solchen Datei können Sie Serendipity dazu bringen, seine eigene URL-Formung im Gallery-Unterverzeichnis nicht anzuwenden. Sicherlich sinnvoller ist in den meisten Fällen jedoch, wenn Sie Gallery in ein eigenständiges Verzeichnis oberhalb des Serendipity-Verzeichnisses installieren.

URL oder Pfad zur Gallery-Installation Hier müssen Sie die vollständige URL eintragen, die zu Ihrer Gallery-Installation führt. Das Plugin fügt hier standardmäßig eine URL zum Blog ein, die Ihnen aber nur als Anhaltspunkt dienen soll.

Anzahl der Zufallsfotos Mit der Option Anzahl der Zufallsfotos legen Sie fest, wie viele Bilder Ihrer Galerie angezeigt werden sollen. Die Bilder werden dabei vom Gallery-Script zufällig ausgewählt.

Rotate image time Jede Darstellung eines Zufallsbildes aus der Galerie wird für einen gewissen Zeitraum zwischengespeichert, damit in diesem Zeitraum alle Besucher dasselbe Zufallsbild angezeigt bekommen. Wie lange dieser Zeitraum (in Minuten) ist, stellen Sie über die Option Rotate image time ein. Die Zahl 30 würde also bewirken, dass jeweils eine halbe Stunde lang dasselbe Zufallsbild angezeigt wird.

Welche Version der Gallery-Software benutzen Sie? In diesem Auswahlfeld müssen Sie die Versionsnummer der installierten Gallery-Anwendung eintragen, da sich die Art der Einbindung danach richtet. Wenn Sie über eine Version höher als 2.0 verfügen, können Sie die folgenden Konfigurationsoptionen nutzen:

Picture to display Gallery 2.x ermöglicht es Ihnen, nicht nur ein Zufallsbild anzuzeigen, sondern auch ein Bild der zuletzt hochgeladenen Dateien (Recent), der meistangesehenen Bilder (Most viewed) oder auch eines gezielten Bildes (Specific).

Album ID to show Standardmäßig zeigt das Plugin die Bilder egal welcher Unteralben an. Wenn Sie in dieses Eingabefeld die ID eines Albums eintragen, wird nur dieses Unteralbum berücksichtigt. Die ID eines Albums können Sie in der Gallery-Oberfläche herausfinden.

Maximum Width of Image Das Plugin zeigt das gewünschte Bild als Vorschaugrafik direkt so an, wie es die Gallery-Software ausgibt. Wenn Sie eine andere Bildgröße benötigen, können Sie die maximale Breite dieses Bildes im Feld Maximum Width of Image eintragen. Dies bewirkt, dass das jeweilige Bild von Ihrem Browser auf diese Größe umgerechnet wird. Der Browser lädt dabei das große Bild herunter, daher kann diese Option dazu führen, dass das Bild zum einen vom Browser qualitativ minderwertig verkleinert wird und zum anderen auch mehr Bandbreite verbraucht. Kurzum: Sie sollten lieber mit der Standardgröße der Gallery-Vorschaubilder vorlieb nehmen.

Link Target Ein Klick auf das dargestellte Bild führt direkt in die Gallery-Anwendung und öffnet sie im gleichen Browser-Fenster wie Ihr Blog. Wenn Sie dafür gerne ein neues Browser-Fenster öffnen wollen, können Sie im Feld Link Target das Schlüsselwort _blank eintragen.

Which details should be displayed Zu jedem dargestellten Bild kann Gallery von sich aus Meta-Informationen anzeigen. Welche dieser Felder dargestellt werden, können Sie über das Eingabefeld Which details should be displayed regeln. Tragen Sie dort eine Liste aller gewünschten Schlüsselwörter ein, mit einem Komma voneinander getrennt. Alle verfügbaren Felder werden neben dem Eingabefeld erwähnt: title (Bildtitel), date (Veröffentlichungsdatum), views (Anzahl der Besucher des Bildes), owner (Eigentümer des Bildes), heading (Bildüberschrift).

Coppermine Database

Wenn Sie als Image Source die Quelle Coppermine Database auswählen, kann das Plugin direkt auf die MySQL-Datenbank der Coppermine-Gallery zugreifen und deren Bilder anzeigen.

Die Konfigurationsoptionen sind:

Server, Prefix, Database, Username, Password Diese Optionen müssen die Datenbank-Zugangsdaten zu der Coppermine-Datenbank enthalten.

URL In der Variable URL müssen Sie die volle URL zu Ihrer Coppermine-Installation eintragen.

Gallery Name Das Seitenleisten-Plugin bindet einen Link zu Ihrer Coppermine-Installation ein. Die Beschreibung dieses Links geben Sie über die Option Gallery Name ein.

Usergroup Die Coppermine-Galerie kann Zugriffsrechte zu Bildern abhängig von Benutzergruppen setzen. So können Sie private und öffentliche Bilder voneinander abgrenzen. Das Coppermine-Plugin muss sich also einer bestehenden Coppermine-Benutzergruppe zuordnen, damit es weiß, welche Bilder es darstellen darf. Wenn Sie im Feld Usergroup den Namen einer Gruppe eintragen, die Sie bei Coppermine für Mitglieder Ihrer Familie vergeben haben, dann könnte das Plugin auch solche Bilder anzeigen. Wenn Sie dem Plugin den Namen einer Gastgruppe mitgeben, würden diese Bilder fehlen. Standardmäßig gibt das Plugin einfach alle Bilder aus, daher ist die Benutzergruppe Everybody voreingestellt.

Size Die Konfigurationsoption Size legt fest, wie groß das Vorschaubild (in Pixel, egal ob Höhe oder Breite) sein soll, das vom Plugin in der Seitenleiste angezeigt wird.

Thumbnails Diese Option gibt an, wie viele Bilder angezeigt werden sollen.

Type Standardmäßig zeigt das Plugin die aktuellsten Bilder (Most Recent). Über die Auswahlfelder der Konfigurationsoption Type können Sie jedoch auch die beliebtesten Bilder (Most Viewed) oder zufällige Bilder (Random Images) anzeigen.

Album Link Wenn Sie diese Option aktivieren, wird unter jedem Bild ein Link zur Coppermine-Galerie eingebunden.

Gallery Link URL Am Ende der Bilderübersicht können Sie einen Link einfügen, den Sie mit diesem Parameter angeben. Der Link zeigt üblicherweise direkt zu Ihrer Galerie, jedoch können Sie auch zu anderen Stellen verweisen.

Resolve Non-Images Coppermine ermöglicht es Ihnen, auch Videos oder andere Dateien anstelle von Bildern zu verwalten. Wenn Sie die Option Resolve Non-Images aktiviert haben, versucht das Plugin solche Dateien ebenfalls in der Seitenleiste anzuzeigen.

Zooomr Plugin

Im Gegensatz zu den beiden eingangs erwähnten Mediatheken werden die Bilder bei dieser Datenquelle nicht von Ihrem eigenen Server bezogen, sondern vom zentralen Zooomr-Server aus eingebunden.

Zooomr stellt dabei einen RSS-Feed zur Verfügung, der Ihre aktuellen Bilder enthält. Diesem RSS-Feed können Sie eine Reihe von Optionen mitgeben, die Sie auf der Zooomr-Homepage erfahren können.

In den Konfigurationsoptionen dieses Plugin-Bereichs können Sie ebenfalls die Größe der Vorschaubilder, die Anzahl der gezeigten Bilder und die Verlinkungs-Art verändern.

Mediathek (Serendipity)

Natürlich ist es auch möglich, Bilder Ihrer Serendipity-Mediathek in der Seitenleiste anzuzeigen. Hierfür dient die Option Media Library in den Einstellungen des Plugins. Folgende Konfigurationsoptionen sind dabei möglich:

mediasidebar_dm_de.png
Abbildung 5.3: Einstellungen für Mediathek

Limit output to only hotlinked images Wenn Sie diese Option aktivieren, werden nur die Bilder der Mediathek angezeigt, die von fremden Servern stammen. Zur Erinnerung: Serendipity kann Dateien auf Ihren Server hochladen, aber auch auf Dateien fremder Server verweisen und diese Grafiken oder Dateien trotzdem in der Datenbank vorhalten (Hotlinking).

Hotlink limiting keyword Wenn Sie die Option Limit output to only hotlinked images aktivieren, können Sie über das Eingabefeld Hotlink limiting keyword ein spezielles Schlüsselwort vergeben. Daraufhin zeigt das Plugin nur die Bilder, bei denen das Schlüsselwort in der URL der Datei vorkommt. Wenn Sie also einen Hotlink auf die Dateien http://google.com/logo.jpg und http://yahoo.com/logo.jpg in der Mediathek gespeichert haben und als Schlüsselwort google.com eintragen, werden nur Bilder vom Google.com-Server angezeigt. Würden Sie stattdessen logo.jpg eintragen, könnten Sie beide Bilder sehen.

Pick a default directory Mit diesem Auswahlfeld können Sie ein Stammverzeichnis der Mediathek auswählen, von dem Sie Bilder darstellen wollen.

Output images strictly Wenn Sie diese Option aktivieren, zeigt das Plugin nur die Bilder an, die in dem oben konfigurierten Verzeichnis abgespeichert worden sind. Nur wenn Sie die Option Output images strictly deaktiviert haben, werden auch die Bilder in möglichen Unterverzeichnissen des gewählten Verzeichnisses dargestellt.

Rotate image time Jede Darstellung eines Zufallsbildes aus der Mediendatenkbank wird für einen gewissen Zeitraum zwischengespeichert, damit in diesem Zeitraum alle Besucher dasselbe Zufallsbild angezeigt bekommen. Über die Option Rotate image time stellen Sie diesen Zeitraum (in Minuten) ein. Die Zahl 30 würde also bewirken, dass jeweils eine halbe Stunde lang dasselbe Zufallsbild angezeigt wird.

Number of images to display Hiermit steuern Sie die Anzahl der angezeigten Bilder.

Image width Serendipity erzeugt Vorschaubilder in der konfigurierten Breite/Höhe (siehe Serendipity-Konfiguration auf Seite Vorschaubildgröße). Daher zeigt auch das Seitenleisten-Plugin standardmäßig die Bilder in genau dieser Breite an. Wenn Sie größere Vorschaubilder in der Seitenleiste sehen wollen, können Sie den Browser anweisen, die Bilder selbständig zu vergrößern (oder zu verkleinern). Dies führt jedoch immer zu einem Qualitätsverlust, da die Datei nicht aufgrund der Originalgröße reduziert wird, sondern immer nur das Vorschaubild gestaucht oder gestreckt werden kann. Wenn Sie hier die Zahl 0 eintragen, zeigt das Plugin ein Bild mit der vollen zur Verfügung stehenden Breite in der Seitenleiste an.

Behavior of image link Mit der Option Behavior of image link können Sie einstellen, was bei einem Klick des Besuchers auf ein Bild passieren soll. Entweder kann dann das große Bild auf derselben Seite angezeigt werden (In Page), oder das Bild kann in einem Popup-Fenster erscheinen (Pop Up). Eine weitere Möglichkeit ist, bei einem Klick auf ein Bild eine fest vorgegebene URL aufzurufen (die beispielsweise zu einer statischen Seite oder anderem führt). Wenn Sie die Option URL auswählen, müssen Sie erst die Plugin-Konfiguration speichern (über den Button Speichern) und können dann im Eingabefeld unter diesem Auswahlfeld die URL eintragen. Eine besondere Option stellt die Variante Try to link to related entry dar. Wenn Sie diese Variante wählen, versucht das Plugin, zu jedem Bild einen Blog-Artikel zu finden, in dem das Bild eingesetzt wurde. Wenn ein Blog-Artikel gefunden wird, führt der Link dann zu diesem Beitrag. Eine weitere Option namens User-Galerie steht hier zur Verfügung, wenn Sie das Serendipity-Plugin serendipity_event_usergallery (siehe Seite usergallery) installiert haben. Bei der Auswahl dieser Variante können Sie nach dem Speichern des Plugins den Permalink der User-Galerie eintragen.

Use with installed Lightbox plugin Wenn Sie hier ein HTML-Attribut eintragen, z.B. <rel="lightbox"> für einzelne, oder <rel="lightbox[]"> für gruppierte Lightbox-Ansichten (beide ohne <>) für die Lightbox-Nutzung mit dem Lightbox-Event-Plugin, werden auch die Bilder der Seitenleiste über jene Lightbox gesteuert, bzw bei Klick angezeigt. Dieses Attribut wird in den Bildanker aufgenommen. Es funktioniert nur für die "Mediathek" mit der Option "Behavior of image link" : "In Page".

Enter any text (or html) you would like placed before/after the picture Am Ende der Konfigurationsoptionen finden Sie zwei große Texteingabebereiche. Hier können Sie einen Text eintragen, der vor und nach der Bilderübersicht in der Seitenleiste angezeigt wird.

5.3.6 - Shoutbox: serendipity_plugin_shoutbox

Shoutbox
serendipity_plugin_shoutbox

Besucher können zu Artikeln Ihres Blogs relativ leicht kommentieren. Wenn sie aber eher abstrakt und Artikel-ungebunden ihre Meinung über Ihr Blog äußern wollen, ist dies meist nur über ein Kontaktformular oder Gästebuch möglich.

Eine einfache Alternative dazu bietet das Shoutbox [*] Eine Shoutbox ist die sprichwörtliche Seifenkiste, auf die man sich gerne einmal stellt, wenn man seine Meinung in die Welt hinausposaunen möchte.-Seitenleisten-Plugin. Es zeigt in der Seitenleiste eine Eingabebox an, in der Besucher direkt Text eingeben können, der danach unterhalb der Shoutbox für alle Besucher angezeigt wird.

Als Administrator können Sie direkt im Frontend unpassende Kommentare löschen. Die Shoutbox zeigt kein Archiv von vergangenen Einträgen an, sondern immer nur eine konfigurierbare Anzahl von Kommentaren Ihrer Benutzer. Daher kann dies auch oft als eine Art Echtzeit-Chatbox zweckentfremdet werden.

Beachten Sie, dass dieses Plugin keinen besonderen Schutz gegen Spam bietet.

Für die Konfigurationsoptionen gelten dieselben Möglichkeiten wie bei dem Kommentar-Plugin (Seite Plugin-Kommentare).

Das Plugin erstellt die Datenbanktabelle serendipity_shoutbox mit den Feldern id (fortlaufender Primärschlüssel), timestamp (Datum des Kommentars), ip (IP des Kommentators) und body (Text).

5.3.7 - Show Entries in sidebar: serendipity_plugin_showentries

Show Entries in sidebar
serendipity_plugin_showentries

Bereits mittels der Plugins Geschichte (Seite serendipity_plugin_history) und Aktuelle Einträge (Seite serendipity_plugin_recententries) können Sie in der Seitenleiste auf ältere Artikel verweisen.

Mit beiden Plugins ist es jedoch nicht möglich, individuelle Formatierungen durchzuführen oder die Artikel komplett anzuzeigen. Hier schafft das Plugin Show Entries in sidebar Abhilfe.

Es ist besonders dann sinnvoll, wenn Sie eine Artikelliste nach eigenen Vorgaben gestalten wollen oder wenn Sie kurze Einträge einer speziellen Kategorie anzeigen wollen. Stellen Sie sich vor, Sie schreiben Artikel in der Kategorie Meine Einkäufe und fassen dort in kurzen Sätzen zusammen, welche Lebensmittel Sie heute gekauft haben. In der normalen Artikelübersicht würden solche Einträge womöglich ziemlich leicht übersehen werden, daher möchten Sie diese Einkäufe in der Seitenleiste einbinden.

Ein weiterer Einsatzzweck des Plugins wird in der Plugin-Beschreibung erwähnt: Good for Sidebar Moblogging. Moblogging bezeichnet dabei die Möglichkeit, einen Blog-Artikel via E-Mail zu verfassen und unterwegs an das eigene Blog zu schicken. Das Blog kann dann mittels Popfetcher-Plugin (siehe Seite serendipity_event_popfetcher) die E-Mails von einem Server abrufen und automatisch importieren und erspart es Ihnen dadurch, einen Artikel mittels eines Browsers erstellen zu müssen. Derart erstellte Artikel könnten Sie mit dem hier beschriebenen Plugin Show Entries in sidebar komfortabel und abgesetzt in der Seitenleiste anzeigen.

Auch dieses Plugin ist beliebig oft installierbar und kann daher für mehrere Seitenleisten-Positionen eingebunden werden.

Das Plugin formatiert die Ausgabe mittels Smarty-Template-Datei plugin_showentries.tpl. In dieser Datei können Sie auf alle Eintrags-Variablen (array $entries array $entry.*) zugreifen und so mit HTML beliebige Layouts umsetzen. Details zu Smarty-Templates finden Sie ab Seite Smarty-Templates.

Das Plugin bietet folgende Konfigurationsoptionen:

Show how many entries Diese Einstellung legt fest, wie viele Artikel in der Seitenleiste angezeigt werden sollen.

Hide entries already displayed on frontpage Je nachdem, welche Einträge das Plugin darstellt, kann es passieren, dass diese Einträge auch bereits in der Artikel-Übersichtsseite aufgeführt sind. Wenn Sie die Option Hide entries already displayed on frontpage aktivieren, werden solche Einträge nicht nochmal in der Seitenleiste angezeigt.

Enter category ID to show Im Gegensatz zu vielen anderen Plugins können Sie die Quellkategorie für die darzustellenden Einträge nicht aus einem Auswahlfeld wählen, sondern müssen die ID/Nummer einer Kategorie manuell in ein Feld eingeben. Für das Plugin ist diese Eingabemethode um einiges flexibler, da Sie mehrere Kategorie-IDs einfach mittels Semikolon trennen können, um so die Einträge mehrerer Kategorien einzubinden. Die ID einer Kategorie können Sie über die Administrationsoberfläche Kategorien ermitteln (siehe Seite Kategorie-ID ermitteln).

Show entry title, Show extended entry Mit diesen beiden Optionen stellen Sie ein, ob der Titel und/oder der erweiterte Eintrag eines Artikels in der Seitenleiste angezeigt werden sollen. Das Smarty-Template plugin_showentries.tpl wertet diese Optionen (bool $showext, bool $showtitle) aus, daher können Sie eine Einstellung auch direkt in der Smarty-Template-Datei vornehmen.

5.3.8 - Top Exits: serendipity_plugin_topexits

Top Exits
serendipity_plugin_topexits

Mittels des Ereignis-Plugins Links verfolgen (siehe Seite trackexits) können Sie dafür sorgen, dass alle Links in Beiträgen speziell maskiert werden. Wenn ein Besucher dann auf einen solchen Link klickt, kann Serendipity dies statistisch erfassen.

Einen Link, der auf eine fremde Seite führt und damit das Blog verlässt, nennt man Exit-Link. Diese formatiert Serendipity dann wie http://www.example.com/serendipity/exit.php?url_id=17&entry_id=18.

Anhand der Statistik können Sie also leicht herausfinden, welche Links besonders beliebt bei Ihren Besuchern sind. Eben diese Statistik der beliebtesten Links kann das Seitenleisten-Plugin Top Exits anzeigen.

Bitte beachten Sie, dass, falls Sie das oben genannte Ereignis-Plugin nicht installiert haben, Serendipity keine Statistik führt und daher das Plugin auch keine Daten anzeigen kann.

Die Konfigurationsoptionen sind:

Wie viele Elemente sollen angezeigt werden Üblicherweise werden nur die zehn beliebtesten Links in der Seitenleiste angezeigt. Mit dieser Option können Sie die Vorgabe verändern.

Top Exits/Referrers als Link anzeigen Wenn Sie diese Option auf Ja setzen, werden die beliebtesten Links in der Seitenleiste so angezeigt, dass die Besucher direkt darauf klicken können, um zu der jeweiligen genannten Seite zu gelangen. Ist die Option auf Nein gestellt, werden die Seiten nur textlich aufgeführt, und ein Besucher müsste die URL manuell eingeben. Auch in der globalen Serendipity-Konfiguration (siehe Seite trackreferrer) können Sie dieses Verhalten beeinflussen - wenn diese Vorauswahl genutzt werden soll, müssen Sie Standard als Option einstellen. Diese Option ist sehr hilfreich, weil Top-Exits seltener von Spammern genutzt werden können - denn schließlich sind die hinterlegten Links meist nur von Redakteuren in das System eingetragen. Trickreiche Spammer können jedoch die Statistik-Routine von Serendipity missbrauchen, so dass ihre Seiten auch in die Statistik aufgenommen werden, ohne dass Sie in einem Ihrer Artikel darauf verweisen.

Kalenderintervall Meist macht die Statistik der beliebtesten Links nur Sinn, wenn sie sich auf einen gewissen Zeitraum beschränkt. Besucher interessiert womöglich nicht, welche Seiten seit Eröffnung Ihres Blogs am häufigsten besucht wurden, sondern eher, welche Links der letzten Zeit interessant waren. Dafür dient die Option Kalenderintervall. Hier tragen Sie den Zeitraum (in Tagen) ein, der vom aktuellen Besuchsdatum aus gerechnet für die Datenbasis der Links herangezogen wird.

5.3.9 - Top Referrer: serendipity_plugin_topreferrers

Top Referrer
serendipity_plugin_topreferrers

Ähnlich wie das Top Exits-Plugin zeigt Ihnen das Top Referrer-Plugin eine Liste an URLs an. Diesmal sind es jedoch nicht die Links, die Ihre Besucher angeklickt haben, sondern die Webseiten, von denen aus Besucher zu Ihrem Blog gekommen sind.

Um dies auszuwerten, bietet jeder Browser die Möglichkeit, die zuletzt besuchte Seite im Webseitenaufruf mit zu übertragen. Manche Browser oder auch Proxies Ihrer Besucher verschleiern oder entfernen diese Angabe aus Datenschutzgründen. Genauso ist es für Spammer möglich, beliebige URLs als Quellseite vorzutäuschen, daher hat in heutigen Zeiten diese Statistik oft nur noch ideellen Wert.

Für die Darstellung der Referrer gelten dieselben Optionen wie für das Top-Exits-Plugin, beziehen sich dabei jedoch auf die Ausgabe der verweisenden URLs und nicht der beliebtesten Links.

Kapitel 6: Ereignis-Plugins

Ereignis-Plugins dienen der Erweiterung von Funktionen im Frontend wie auch im Backend. Serendipity setzt innerhalb seines Quellcodes an zahlreichen strategisch wichtigen Stellen sogenannte Event-Callbacks bzw. Event-Hooks. An dieser Stelle des Codes führt Serendipity also nacheinander alle installierten Ereignis-Plugins aus, so dass jedes Plugin an dieser Stelle die Möglichkeit erhält, seine eigenen Funktionen auszuführen. Die Reihenfolge, in der die Ereignis-Plugins in der Plugin-Verwaltung aufgeführt sind, bestimmt dabei auch die Ausführungsreihenfolge.

Bei den Textformatierungs-Plugins ist die Ausführungsreihenfolge besonders wichtig. Ein Textformatierungs-Plugin kann bei Artikeltexten und auch Kommentartexten dazu benutzt werden, Text- oder Formatierungsänderungen durchzuführen. Daher reichen solche Plugins von einfachen Wortersetzungen (s9y könnte zB. überall durch Serendipity ersetzt werden) über Smiley-Ersetzungen (:-) wird zu einem grinsenden Gesicht) bis zu speziellen Plugins, die Quelltexte in beliebigen Programmiersprachen korrekt einrücken und darstellen.

Stellen Sie sich ein Textformatierungs-Plugin vor (Plugin A), das das Wort *doof* in eine besondere Grafik verwandelt. Ein zweites Plugin B kümmert sich darum, dass alle Wörter, die von Sternchen * umgeben sind, im Artikel später fett geschrieben werden. Wenn Plugin A vor Plugin B platziert wird, sehen Sie nach der Umwandlung des Wortes *doof* wie gewünscht eine schöne Grafik. Wäre Plugin B jedoch das zuerst ausgeführte Plugin, würden Sie in der Ausgabe nur ein fettes Wort doof sehen. Denn nachdem Plugin B alle Wörter mit umgebenden Sternchen umgewandelt hat, kann das Smiley-Plugin das Wort *doof* nicht mehr finden.

Die Plugin-Reihenfolge ergibt sich also meist abhängig von Ihrem persönlichen Einsatz des Plugins, daher können keine allgemeinen Aussagen getroffen werden, welches Plugin an welcher Stelle stehen muss.

Textformatierungs-Plugins werden also immer erst bei der Ausgabe angewendet und bieten Ihnen den Komfort der einfacheren Eingabe. Wer möchte schon jedesmal den kompletten HTML-Code für eine Smiley-Grafik einfügen?

Ihre Eingaben werden ganz unabhängig von der späteren Formatierung in der Datenbank gespeichert - wenn Sie also einen Artikel später überarbeiten, werden sämtliche Formatierungsänderungen dort noch nicht angezeigt, da sie nur bei der Anzeige angewendet werden und nicht beim Speichern der Rohdaten. Das bedeutet auch, dass sämtliche von einem Textformatierungs-Plugin vorgenommenen Änderungen nicht mehr ausgeführt werden, wenn Sie dieses Plugin löschen. Seien Sie also vorsichtig beim Löschen von Plugins und prüfen Sie, ob dadurch möglicherweise alte Artikel nicht mehr so dargestellt werden, wie Sie es erwarten.

Eine weitere Besonderheit von Textformatierungs-Plugins ist, dass alle diese Plugins eine Konfigurationsoption anbieten, um einzustellen, auf welche Ausgabefelder eine Formatierung angewendet wird. So können Sie einstellen, ob eine Formatierung nur auf normale Artikeltexte, erweiterte Artikeltexte, Kommentare von Besuchern oder HTML-Klötze (siehe Seite htmlnugget) angewendet wird. Im Eingabefeld für Kommentare von Besuchern kann jedes Textformatierungs-Plugin eigene Hinweise einblenden, wie deren Syntax zu benutzen ist.

Mehrere Ereignis-Plugins bieten die Möglichkeit, beliebige Inhalte innerhalb Ihres Blogs einzubinden: eigenständige HTML-Seiten (statische Seiten), Gästebücher, Kontaktformulare und weitere. Alle diese Plugins haben einen Satz an Konfigurationsoptionen gemeinsam, auf die Sie immer wieder stoßen werden. Damit diese nicht immer für jedes Plugin wiederholt werden müssen, werden Sie hier erklärt:

Permalink In das Feld Permalink tragen Sie die URL ein, unter der Sie später die Ausgaben des jeweiligen Plugins wollen. Hier müssen Sie den vollständigen HTTP-Pfad eintragen, der zu dieser URL führt. Standardmäßig wird das Feld vorausgefüllt mit /serendipity/pages/pluginname.html, was Ihrem Pfadnamen und einem virtuellen Pfad entspricht. Im virtuellen Pfadnamen können Sie eine beliebige Struktur einsetzen. Dabei müssen Sie lediglich darauf achten, dass die URL mit .html endet, keine Sonderzeichen enthält und keinem bereits vorhandenen Permalink entspricht. Wichtig ist, dass diese Variable immer nur eine Pfadangabe enthalten darf, niemals eine vollständige URL wie http://www.example.com/.... Auch muss der Stammpfad zum Serendipity-Blog beibehalten bleiben, eine Eingabe wie /anderes_blog/pages/pluginname.html wäre ungültig.[*] Eine derartige URL wäre ungültig, da der Aufruf dieser URL außerhalb der Serendipity-Installation läge. Serendipity kann nur virtuelle Verzeichnisse unterhalb seiner eigenen Verzeichnisstruktur verwalten. Wenn Sie in Ihrem Blog einmal die URL-Umformung (siehe Seite urlformung) (de-)aktivieren oder Ihr Blog in ein Unterverzeichnis verschieben, kann es sein, dass Sie die konfigurierten Permalinks aller Plugins ebenfalls anpassen müssen. Bei deaktivierter URL-Umformung muss ein Permalink einen Wert wie /serendipity/index.php?/pages/pluginname.html enthalten. Erst bei der Pfadangabe hinter index.php? dürfen Sie eine beliebige URL eintragen, der Pfad davor muss der Konfiguration Ihres Servers entsprechen.

URL-Titel der Seite, Seitentitel, Pagetitle oder URL shorthand name Alternativ zu der Konfiguration eines Permalinks bieten alle Plugins auch einen URL-Titel der Seite oder URL shorthand name an. Mithilfe dieser Variable kann man die Ausgaben eines Plugins auch ohne Permalink ansehen, indem man http://www.example.com/serendipity/index.php?serendipity[subpage]=Seitentitel aufruft. Dies ist wichtig, da in manchen Webserver-Konfigurationen ein Permalink nicht mit Formulardaten beschickt werden kann.[*] Konkret ist dies bei der Nutzung der URL-Umformungsmethode Apache ErrorHandling nicht möglich. Eine URL wie /serendipity/pages/seite.html?variable=inhalt würde keine GET-Variable $_GET['variable'] erzeugen, die die Plugins teilweise jedoch benötigen, um abhängig von der Anfrage des Besuchers bestimmte Inhalte anzuzeigen. Tragen Sie für den URL-Titel einer Seite ausschließlich Namen ohne Sonderzeichen, Umlaute und Leerzeichen ein. Beinahe alle Plugins weisen den Wert der serendipity[subpage]-Variable der Smarty-Variablen $staticpage_pagetitle zu. Über diese Variable kann man individuell in den Templates bei speziellen Plugins unterschiedliche Template-Ausgaben erreichen (siehe Seite Smarty-Templates).

Als Artikel formatieren Wenn Sie die Option Als Artikel formatieren aktivieren, wird Serendipity die Ausgabe eines Plugins so darstellen, als sei dies ein normaler Blog-Artikel. Um die Ausgabe herum wird also das übliche HTML-Konstrukt erzeugt, das Serendipity standardmäßig ausgibt (mit Seitenüberschrift und Datum). Wenn Sie diese Option deaktivieren, werden die Ausgaben 1:1 weitergereicht und in den Inhaltsbereich von Serendipity eingefügt. Das heißt, dass Serendipity sich in jedem Fall um die Ausgabe des HTML-Kopf- und -Fußkonstruktes sowie der Seitenleisten-Plugins kümmert, aber sonstige Überschriften nicht ausgibt.

Die Plugins der folgenden Zusammenstellungen sind aber nach Alphabet, im Sinne von serendipity_event_A-Z geordnet.

 

6.1 Standardmäßig aktivierte Plugins

Standardmäßig aktivierte Plugins

Die im Folgenden behandelten Ereignis-Plugins werden bei Serendipity mitgeliefert und sind standardmäßig aktiviert.

 

6.1.1 - Logdatei Betrachter: Liest Serendipity Logdateien - serendipity_event_changelog

Liest Serendipity Logdateien
serendipity_event_changelog

Dieses Plugin gewährt über die Wartungsseite des Backends leichten Zugang zum Serendipity ChangeLog und optional aktivierten Error/Debug-Log Dateien. Siehe: Generelle Einstellungen [Log Level] Konfigurations-Option.

Dies ist ein Beispiel eines stillen, optionslosen Plugins. Im Wartungsbereich des Backend finden Sie einen Abschnittsblock mit dem Titel: Zeige Serendipity Logfiles. Dort können Sie das Serendipity Styx ChangeLog aufrufen und lesen, was sich in den letzten Versionen alles verändert hat. Ein weiterer Button öffnet die letzte Logdatei für die Debugging-Session, welches in der Konfiguration: "Generelle Einstellung" gesetzt wurde. Löschen löscht alle alten Log-Dateien. Diese Debug-oder-Fehler Dateien, die, wenn aktiviert, im Hintergrund still in einigen Bereichen, wie zB. bei verschiedenen Operationen der Mediathek, geschrieben werden, können hier ausgelesen und alte Dateien auch wieder gelöscht werden. Auch wenn jemand erraten sollte wie eine solche Debug Datei genau heißt und versucht auf sie zuzugreifen, da sie ja in einem schreib- und lesbaren Ordner innerhalb des templates_c-Ordners liegt, so ist sie dort für unautorisierte Nutzer nicht einsehbar. Zugriff wird nur über die Wartungsseite für den Administrator der Seite gewährt. Trotzdem sollten sie fragile Debug-Ausgaben nicht unnötig herumliegen lassen, wenn Sie sie nicht mehr benötigen, denn Hacker sind findige Leute.

6.1.2 - Textformatierung: Smilies: serendipity_event_emoticate

Textformatierung: Smilies
serendipity_event_emoticate

Das wohl gebräuchlichste Textformatierungs-Plugin nennt sich Smilies. Es ersetzt typische Smiley-Zeichenketten wie :-) durch einen grafischen Smiley.

Wenn Sie die Konfigurationsoptionen des Plugins aufrufen, sehen Sie eine Liste aller verfügbaren Smiley-Umwandlungen. Auch Besucher können, falls gewünscht, in ihren Kommentaren auf die Smiley-Grafiken zurückgreifen.

Vielfach wird den Serendipity-Smileys vorgeworfen, dass sie ziemlich hässlich aussähen. Zum einen ist das natürlich Geschmackssache, aber zum Teil kann man das auch nicht ganz von der Hand weisen. Da Serendipity so freizügig wie möglich lizensiert wurde, können nur Smiley-Grafiken mit Serendipity ausgeliefert werden, die derselben Lizens unterliegen. Die meisten Smileys, die im Internet zu haben sind, sind jedoch entweder nur kommerziell oder inkompatibel lizensiert oder von den Seiten ohne Befugnis eingebaut. Da die Smiley-Grafiken auch mit einem Serendipity-Template zusammen gebündelt werden können, gibt es auch einige (wenige) Templates mit eigenen Grafikdateien: GreenMile, kamouflage und truth.

Als Betreiber des Blogs können Sie aber glücklicherweise die Grafiken einfach ersetzen. Das Plugin versucht Ihnen das so einfach wie möglich zu machen, daher gibt es mehrere Möglichkeiten, eigene Smileys einzubinden.

Variante 1: Grafikdateien ersetzen Die einfachste Methode ist, die Smiley-Grafikdateien von Serendipity durch eigene zu ersetzen. Diese Dateien befinden sich standardmäßig im Verzeichnis templates/default/emoticons/. Die Dateien haben eine .png-Dateiendung, Sie können aber auch die Smiley-üblichen .gif-Dateien hochladen, wenn Sie in der Konfiguration des Smilie-Plugins danach als Dateiendung für Smileys auch .gif eintragen. Sie können die eigenen Smiley-Dateien entweder direkt in das genannte Verzeichnis hochladen oder auch in ein gleichnamiges Unterverzeichnis eines eigenen Templates. Wenn Sie die Dateien in ein eigenes Template-Verzeichnis hochladen, werden die Grafiken automatisch von dort eingebunden und Sie haben den Vorteil, später die Grafiken zusammenhängend mit Ihrem Template archivieren oder verteilen zu können.

Variante 2: Smileys erweitern Beim Ersetzen von Smileys können Sie natürlich keine neuartigen Smileys hinzufügen, sondern nur die bestehenden überarbeiten. Um eigene zu erstellen, kann das Plugin eine Datei emoticons.inc.php auswerten. Diese Datei muss ein Array enthalten, in dem Smileys beschrieben und einer Grafik zugewiesen werden. Standardmäßig würde eine Datei so aussehen: <?php

$serendipity['custom_emoticons'] = array(
 ":'("  => serendipity_getTemplateFile('img/emoticons/cry.png'),
 ':-)'  => serendipity_getTemplateFile('img/emoticons/smile.png'),
 ':-|'  => serendipity_getTemplateFile('img/emoticons/normal.png'),
 ':-O'  => serendipity_getTemplateFile('img/emoticons/eek.png'),
 ':-('  => serendipity_getTemplateFile('img/emoticons/sad.png'),
 '8-)'  => serendipity_getTemplateFile('img/emoticons/cool.png'),
 ':-D'  => serendipity_getTemplateFile('img/emoticons/laugh.png'),
 ':-P'  => serendipity_getTemplateFile('img/emoticons/tongue.png'),
 ';-)'  => serendipity_getTemplateFile('img/emoticons/wink.png'),
);

?>
Pro Zeile sehen Sie jeweils den Text, der durch eine Grafik ersetzt werden soll, und danach auf der rechten Seite einen Aufruf, der auf die entsprechende Grafikdatei verweist. Wenn Sie sich mit regulären Ausdrücken (siehe Seite regexp) auskennen, können Sie auch Smileys mit solchen Ausdrücken definieren. Damit ist es leichter, diverse Plugin-Alternativen zu beschreiben, zB. dass sowohl :-) als auch :) zur selben Grafik umgewandelt werden. Damit das Array $serendipity['custom_emoticons'] diese regulären Ausdrücke nutzen kann, müssen Sie eine weitere Variable $serendipity['custom_emoticons_regexp'] = true; innerhalb der emoticons.inc.php definieren.

6.1.3 - Erweiterte Eigenschaften von Artikeln: serendipity_event_entryproperties

Erweiterte Eigenschaften von Artikeln
serendipity_event_entryproperties

Mit Serendipity 2.0 wurde das entryproperties-Plugin in die Liste der aktiven Plugins gesetzt, da die Jahre inzwischen eine Verbesserung der Lage auf den verwendeten Webservern erbrachte, so dass dieses mächtige Plugin als gesetzt gegeben werden konnte.

Das Plugin Erweiterte Eigenschaften von Artikeln ist ein sehr mächtiges Ereignis-Plugin, das Ihnen eine große Vielfalt an Möglichkeiten eröffnet. Zum einen bietet dieses Plugin mehrere Optionen bei der Erstellung von Einträgen an, und zum anderen kann es dafür sorgen, Artikel zu cachen und somit schneller darzustellen.

Die Konfigurationsoptionen des Plugins sind:

Artikel cachen? Wenn Sie mehrere Textformatierungs-Plugins benutzen, werden diese nacheinander bei jeder Darstellung eines Artikels erneut durchgeführt. Meistens verschwendet Serendipity bei dieser erneuten Ausführung einiges an Ressourcen, die Sie aber mit diesem Plugin einsparen können. Wenn Sie die Caching-Option aktivieren, wird das Plugin beim Speichern eines Artikels die Ausgabe aller Textformatierungs-Plugins auswerten und speichern. Bei der Anzeige eines Artikels wird dann nur diese Version geholt - alle Textformatierungs-Plugins werden übersprungen. Wenn Sie einen Artikel überarbeiten, wird der Cache automatisch neu gefüllt. Jedoch kann das Aktivieren des Cachings auch Probleme mit sich bringen. Wenn Sie den Inhalt eines Artikels direkt über die Datenbank bearbeiten oder einmal ein neues Textformatierungs-Plugin installieren, kann der Cache vom aktuellen Stand abweichen. Daher können Sie den Cache über den Menüpunkt Inhalt Cachen aller Artikel neu aufbauen lassen. Dies sollten Sie immer dann tun, wenn Sie ein Textformatierungs-Plugin entfernen oder hinzufügen. Auch für das Caching ist die Reihenfolge der Ereignis-Plugins von entscheidender Bedeutung. Das Plugin kann nur die Ausgaben der Textformatierungs-Plugins cachen, die in der Reihenfolge vor diesem Plugin stehen. Alle danach aufgeführten Plugins werden weiterhin ausgeführt und nicht gecached. Diese Tatsache können Sie ausnutzen, um Textformatierungs-Plugins hinter diesem Plugin zu positionieren, wenn sie ohne Caching ausgeführt werden sollen. Derartige Textformatierungs-Plugins gibt es jedoch wenige. Als Faustregel gilt, dass man ein Plugin nicht cachen sollte, wenn es die Ausgabe eines Artikels abhängig von anderen Daten macht. Wenn ein Plugin also beispielsweise die Farbe eines Links abhängig von der aktuellen Tageszeit verändert, wäre ein Caching denkbar ungeeignet. Denken Sie also vor allem bei der Erstellung eines eigenen Plugins an diese Caching-Option, falls dessen Ausgaben Ihnen nicht korrekt vorkommen. Bei Benutzung des Rich-Text-Editors macht dieser Cache keinen Sinn, da die Ausgabe bereits HTML-fertig in der entries Tabelle vorliegt.

Reihenfolge der Optionen Hier kann ausgewählt werden, welche Optionen in welcher Reihenfolge im Editiermodus des Artikels angezeigt werden. Diese über flexible Boxen steuerbare Sortierung ihrer Pluginoption für die Anzeige im Artikelformular erlaubt Gruppen nach Vorlieben zu setzen. Serendipity Styx hat versucht dies insoweit zu optimieren, als das Felder auf Desktops in einem 2-Spalten Muster angeordnet werden, wenn sie kurz genug sind. Dies spart Platz und ist besser lesbar. Für einzelne solcher Felder wurde eine funktionslos leere Spacebox als Partner eingefügt. Die Standardeinstellung lautet: Dauerhafte ArtikelFunktionslose (Geschwister-)Leer-Box AutorPasswort Nicht in Artikelübersicht zeigenEintragsinhalt im RSS-Feed verstecken Artikel können gelesen werden vonFormatierungs-PlugIns für diesen Eintrag deaktivieren Leserechte: GruppeLeserechte: Autor Mehrere AutorenFreie Felder Freie Felder

Leserechte auf Gruppen/Benutzer beschränken Bevor Serendipity es ermöglichte, Leserechte auf Kategorie-Ebene zu vergeben, konnte man mit diesem Plugin pro Eintrag bestimmen, von wem er gelesen werden darf. Diese besonders flexible Leserecht-Setzung bietet das Plugin nach wie vor an, wenn Sie die Option Leserechte auf Gruppen beschränken und/oder Leserechte auf Benutzer beschränken auswählen. Der Ressourcenbedarf bei der Datenbankabfrage ist relativ hoch, daher sollten Sie diese Optionen nur aktivieren, wenn Sie individuelle Leserechte tatsächlich benötigen.

Verwende erweiterte Datenbankabfragen Erlaubt, zusätzliche Datenbankabfragen auszuführen. Damit wird es möglich, "dauerhafte", nicht in der "Artikelübersicht aufgeführte", und im RSS-Feed "versteckte Artikel" zu verwenden. Wenn diese Funktionen nicht benötigt werden, kann das Abschalten der Abfragen die Geschwindigkeit verbessern.

Standard: Artikel können gelesen werden von Wenn Sie die Beschränkung der Leserechte aktivieren, können Sie mit dieser Option festlegen, welche Leserechte ein neu erstellter Artikel standardmäßig besitzt. Co-Autoren bedeutet, dass jeder eingeloggte Besucher einen Artikel lesen darf, ansonsten beschränkt sich der Zugriff entweder nur auf sie selbst oder erlaubt es allen.

Freie Felder Die sogenannten Freien Felder (oder Custom Fields) bieten eine sehr praktische Möglichkeit, um beliebige weitere Eingabefelder zu einem Artikel auszufüllen. In das große Eingabefeld Freie Felder können Sie eine Liste von kommaseparierten Feldnamen eintragen. Die Groß- und Kleinschreibung dieser Feldnamen ist später von Bedeutung, außerdem sollten Sie bei einem Feldnamen auf Leer- und Sonderzeichen verzichten. Für jedes hier eingetragene Feld wird später beim Erstellen eines Artikels ein eigenständiges Eingabefeld eingebunden. Dort können Sie dann genauso wie beim Artikeltext oder Erweiterten Eintrag beliebigen Text eintragen. Später können Sie die eingetragenen Felder an beliebigen Stellen in der Artikelausgabe des Frontends einbinden, indem Sie die Template-Datei entries.tpl bearbeiten. Weitere Informationen zum Einbau von Freien Feldern können Sie auf Seite entryproperties-customprop nachschlagen. Um Artikel mit bestimmten Eigenschaften innerhalb eines Templates darzustellen, können Sie den Parameter entryprops der Smarty-Funktion serendipity_fetchPrintEntries nutzen, wie auf Seite entryproperties-customprop-fetch beschrieben.

 

Wenn das Plugin konfiguriert und aktiviert ist, können Sie im Bereich Erweiterte Optionen beim Erstellen oder Bearbeiten eines Blog-Artikels einige neue Einstellungen tätigen:

Dauerhafte Artikel Wenn ein Artikel als Dauerhafter Artikel (Sticky) markiert ist, wird er im Frontend immer als erster Artikel angezeigt. Ein Blog-Beitrag kann durch diese Markierung hervorgehoben werden und erscheint so außerhalb der üblichen chronologischen Übersicht. Oft wird dies für besonders wichtige Artikel verwendet, oder als eine Art Einführung zum Blog. Benötigt die Option für erweiterte Datenbankabfragen.

Nicht in Artikelübersicht zeigen Die Aktivierung dieser Option bewirkt, dass ein Artikel nicht in der Artikelübersicht dargestellt wird. Er kann dann von einem Besucher nur gefunden werden, wenn er sich in der Ansicht der zugehörigen Kategorie des Eintrages befindet oder nach einem Artikel sucht.

Eintragsinhalt im RSS-Feed verstecken Wenn Sie nicht wollen, dass ein Blog-Beitrag mit im RSS-Feed ausgeliefert werden soll, können Sie diese Option aktivieren.

Artikel können gelesen werden von: Mit diesem Auswahlfeld können Sie festlegen, ob ein Artikel nur von eingeloggten Benutzern gelesen werden kann, nur von Ihnen selbst oder von allen Besuchern. Diese Option wird nur dann angezeigt, wenn Sie in den Optionen des Plugins die Beschränkung der Leserechte aktiviert haben.

Passwort Sie können einen Artikel vor unbefugten Lesern schützen, indem Sie ein Passwort für einen Artikel vergeben. Der Besucher kann dann in der Artikelübersicht zwar den normalen Artikeltext wie gewöhnlich lesen, aber der Erweiterte Eintrag und die Detailansicht des Artikels können nur aufgerufen werden, wenn der Besucher das richtige Passwort in einer dargestellten Box einträgt.

Autor Wenn ein Redakteur einen Beitrag erstellt, wird er als der Eigentümer des Artikels festgelegt. Der Artikel kann danach nur noch vom Eigentümer oder berechtigten Benutzergruppen gelesen werden. In manchen Fällen möchten Sie den Eigentümer eines Artikels gerne ändern. Das können Sie mithilfe dieses Plugins tun. Nur Chefredakteure bzw. Administratoren haben (abgesehen vom derzeit eingetragenen Besitzer) die Befugnis, den Autoren zu verändern. Der hier eingestellte Autor ist auch derjenige, der in der Artikelübersicht als Autor aufgeführt wird.

Formatierungs-PlugIns für diesen Eintrag deaktivieren Standardmäßig werden alle installierten Textformatierungs-Plugins auf einen Artikel angewendet. In manchen Fällen kann es jedoch erforderlich sein, dass gewisse Textformatierungen nicht ausgeführt werden, beispielsweise wenn Sie HTML-Quellcode oder JavaScript in einem Beitrag verwenden wollen und es durch ein möglicherweise installiertes Wiki-Formatierungs-Plugin zu Veränderungen darin käme. Über das Auswahlfeld können Sie bestimmen, welche Textformatierungen auf den aktuellen Artikel nicht angewendet werden sollen. Alle nicht ausgewählten Plugins werden weiterhin ausgeführt.

Freie Felder Abschließend folgt eine Liste aller in der Plugin-Konfiguration eingerichteten Freien Felder. Für jedes festgelegte Feld können Sie hier einen beliebigen Inhalt hinterlegen: HTML-Text, kurze Sätze -- die Einsatzzwecke sind nur durch Ihre Fantasie begrenzt. Auch ist es möglich, einen Verweis auf eine Datei in der Mediathek einzutragen -- so könnten Sie beispielsweise einfach eine MP3-Datei mit einem Artikel verketten. Um eine Mediendatei leicht einzufügen, befindet sich hinter jedem freien Feld direkt ein Link zum Aufruf der Mediathek. In diesem Popup können Sie wie beim Artikeltext gewohnt eine Datei zum Einfügen auswählen.

6.1.4 - Wartungs Modus: Temporärer 503 Wartungsmodus - serendipity_event_modemaintain

Temporärer 503 Wartungsmodus
serendipity_event_modemaintain

Dieses Plugin erlaubt das öffentliche Blog - das Frontend - in einen “503 - Service Temporarily Unavailable” Modus zu versetzen. Siehe: Wartung: Service Wartungs Modus.

Öffentlicher Wartungs Modus Text Informationstext der erscheint, wenn sich ihr Blog zur Zeit im Wartungsmodus befindet. Empfohlene Einstellung: Je nachdem. Geben Sie ihrem Blog für die temporäre Unterbrechung eine persönliche Note, oder nicht.

Binde das Serendipity Logo ein? Bindet das Serendipity Styx Logo in den Wartungstext ein. Empfohlene Einstellung: Warum nicht?! :)

Dieser Wartungsmodus kann nur vom Administrator oder Berechtigten des Blogs in der Wartung des Backend über Service Wartungs Modus in Betrieb gesetzt werden. Er dient vor allem dazu, das Blog während Serendipity Updates, oder sonstiger Wartungsaufgaben die den Frontendbetrieb stören können, für Besucher kurzerhand außer Betrieb zu setzen. Er ist dazu gedacht dem Administrator aber weiterhin volle Kontrolle und Zugriff auf das Back- wie das Frontend zu geben. Dies geschieht über das Login-Cookie, welches erlaubt, über die temporäre Session hinaus angemeldet zu bleiben. Wie das geht können Sie bei Login unter Option Daten speichern nachlesen. Während des Wartungs-Sperrvorganges ist das Serendipity Backend Logout deaktiviert, damit Sie sich nicht versehentlich aussperren können. Gehen Sie trotzdem achtsam damit um und schließen Sie nicht voreilig den Browser oder das Tab, oder senden das generelle Konfigurations Formular ab, ohne den Wartungsmodus vorher korrekt zurückgesetzt zu haben! Auf der Wartungsseite dient der grüne Button: Aktiviere den 503 Modus dazu, den Modus zu aktivieren. Dieser muss danach rot werden und Deaktiviere den 503 Modus heißen.
Sollte dies nicht unmittelbar geschehen, klicken Sie zu einer anderen Stelle des Backend und rufen die Wartung erneut auf um den Zustand zu prüfen. Als zweite Möglichkeit sollte ein weiterer Versuch den Button zu aktivieren 1-2 Sekunden später ebenfalls gehen. Selbst derselbe Browser kann auf verschiedenen Systemen/Servern unterschiedliches Verhalten zeigen und hat mit dem Cache Verhalten bei bestimmten Seitenreloads zu tun. Ebenso muss dies von rot nach grün werden, wenn Sie das Blog wieder freigeben!
Wenn Sie sich jemals ausloggen, ohne den 503 Maintenance Mode zurückgestellt zu haben, ihr Login Cookie beschädigt oder gelöscht wurde, müssen Sie die $serendipity['maintenance'] Variable in der serendipity_config_local.inc.php Datei manuell auf 'false' stellen, um sich und der Öffentlichkeit wieder Zugang zu ihrem Blog zu ermöglichen! Sollte Letzteres aus Gründen der allzu restriktiv gesetzten Dateiberechtigungen ihres Hosters nicht möglich sein, können Sie nur noch temporär den Ordner des modemaintain Plugins mit einem Unterstrich _ kurzzeitig außer Betrieb setzen, bis sie wieder angemeldet sind.

6.1.5 - Textformatierung: NL2BR: serendipity_event_nl2br

Textformatierung: NL2BR
serendipity_event_nl2br

Das Plugin NL2BR ist ein ebenfalls (ehemals) recht simples Textformatierungs-Plugin. Es sorgt einfach dafür, dass die von Ihnen eingegebene Zeilenumbrüche per ENTER Taste in einem Beitrag später in einen korrekten HTML-Zeilenumbruch (<br />) umgewandelt werden.

Dies ist notwendig, weil der HTML-Standard normale Zeilenumbrüche nicht als solche erkennt. Auch mehrere hintereinander eingetragene Leerzeichen werden von HTML als ein einziges Leerzeichen zusammengefasst.

Wenn Sie also ohne dieses Plugin Beiträge schreiben, müssten Sie selber die korrekten HTML-Absätze (entweder mittels <p>...</p> oder <br />) einfügen. Je nachdem, ob Sie einen WYSIWYG-Editor einsetzen, tut dies der Editor auch bereits selbständig.

NL2BR und seine Optionen sind also gewissermaßen "abhängig" vom "verwendeten" Markup Editor. Dies sind grundsätzlich die folgenden Arten:

  • PLAIN TEXT Editor (d.h. gar kein Markup Editor, aber mit BB-Code, also kleinen Formatierungsbuttons)
  • MARKDOWN Editoren, wie vom markdown oder textile Plugin bereitgestellt
  • RICH-TEXT Editoren, wie der eingebaute (WYSIWYG) CKEditor (Empfohlen!).

Mit den langjährigen Erfahrungen von sehr unterschiedlichen Handhabungen wuchs auch deren (Nach-) Behandlung von diesen Konfigurationen per Option.

Je nach Verwendung finden sich also verschiedene Optionen bzw Optionsgruppen für Sonderfälle, getrennt durch einen Absatz:

  • Allgemeine Optionen des Plugins, inklusive Mark Editoren Überprüfung
  • Ausnahmen für bestimmte Tags (für die beiden folgenden Gruppen)
  • Isolierungs ISOBR für den PLAIN TEXT Editor
  • Aufwendige P-Tags Text Umwandlung für den PLAIN TEXT Editor.

Wenn Sie also bei selbständiger Eingabe überflüssige Zeilenumbrüche in Ihren Artikeln haben, sollten Sie das NL2BR-Plugin anpassen (s.u.).

Abhängig vom eingesetzten Template kann es sein, dass das Template die Abstände zwischen Absätzen (den <p>-Tags) mittels CSS-Formatierungen deaktiviert. Die eigentlich zu erwartenden Leerzeilen zwischen zwei Absätzen würden somit also unterdrückt werden. In älteren Templates wurde dies hauptsächlich deshalb eingefügt, um doppelte Zeilenumbrüche in Verbindung mit dem NL2BR-Plugin zu vermeiden. Wenn Sie ein derartiges Template einsetzen, können Sie eine einfache CSS-Formatierung am Ende der style.css-Datei im entsprechenden templates-Unterverzeichnis einfügen:


    .serendipity_entry p {
  margin: 1em;
}

Dadurch wird der Abstand (margin) zwischen Paragraphen auf eine relative Einheit gesetzt, die dem üblichen Absatzabstand entspricht.

Ein weiteres Problem kann auftreten, wenn Sie in einem Beitrag JavaScript oder anderweitigen Sourcecode platzieren möchten. Denn auch hier würde das Plugin relativ stur sämtliche Leerzeichen durch <br /> umwandeln und dadurch JavaScript ungültig machen oder Ihre spezielle Sourcecode-Formatierung in einem <blockquote>-HTML-Konstrukt mit überflüssigen HTML-Zeilenumbrüchen stören. Es gibt mehrere Möglichkeiten (abgesehen vom Deinstallieren des NL2BR-Plugins), dieses Problem zu beheben:

  • Den WYSIWYG-Editor verwenden, denn dieser deaktiviert die Benutzung von nl2br automatisch. Im PLAIN TEXT-Editor haben Sie die Möglichkeit die P-Tag Option zu verwenden, oder per noBR-Button bestimmte Textpassagen vom NL2BR-Parsen auszuschließen.
  • NL2BR-Plugin fallweise für einen einzelnen Artikel deaktivieren. Dies können Sie beim Erstellen eines Artikels im Abschnitt Erweiterte Optionen erledigen, wenn Sie das Ereignis-Plugin Erweiterte Eigenschaften von Artikeln installiert haben.
  • In der Konfiguration des NL2BR-Plugins die Blog Einträge von der NL2BR-Parsung auszunehmen, oder die Liste von geschützten HTML-Tags so ändern, dass keine Zeilenumbrüche zwischen ungewünschten Tags eingefügt werden. So können Sie zB. script mit in die kommaseparierte Tagliste aufnehmen, damit das NL2BR-Plugin keine Zeilenumbrüche in JavaScript-Containern einfügt.
  • Bei der Reihenfolge der Textformatierungs-Plugins darauf achten, dass das NL2BR-Plugin als letztes ausgeführt wird. Dadurch wird verhindert, dass die Zeilenumbrüche zu früh eingefügt werden und möglicherweise andere Textformatierungs-Plugins durcheinanderbringen.
6.1.6 - Textformatierung: Serendipity: serendipity_event_s9ymarkup

Textformatierung: Serendipity
serendipity_event_s9ymarkup

Das Textformatierungs-Plugin Serendipity bietet einige ganz einfache Umwandlungen für Ihre Artikeltexte an. Diese Umwandlungen sind an alte Mailbox-Hervorhebungsmöglichkeiten angelehnt und stammen noch aus einer Zeit, in der Formatierung via HTML gänzlich unbekannt war. Daher haben sich viele alte Hasen an derlei Formatierung gewöhnt und können damit leichter umgehen als mit HTML-Code:

  • *Wort* formatiert ein Wort fett.
  • _Wort_ unterstreicht ein Wort.
  • ^Wort^ setzt ein Wort hochgestellt.
  • @Wort@ setzt ein Wort tiefgestellt.

Aufgrund dieser besonderen Konventionen kann das Serendipity-Textformatierungs-Plugin besonders bei Artikeln mit Quellcode-Inhalten Probleme verursachen. Wenn Sie in einem Artikel PHP-Code zitieren, könnten die oben aufgeführten Sonderzeichen ungewollte HTML-Formatierungen auslösen.

Sie können dieses Problem meist beheben, indem Sie das Plugin im Bedarfsfall für einen einzelnen Beitrag deaktivieren (über die zusätzlichen Artikeloptionen des Plugins Erweiterte Eigenschaften für Artikel, siehe Seite entryproperties) oder indem Sie es vollständig deinstallieren. Wenn Sie das Plugin in Zusammenhang mit anderen Quellcode-Hervorhebungs-Plugins benutzen, achten Sie möglichst darauf, dass das Serendipity-Textformatierungs-Plugin als letztes Textformatierungs-Plugin in der Plugin-Liste aufgeführt wird.

6.1.7 - Spamschutz: serendipity_event_spamblock

Spamschutz
serendipity_event_spamblock

Das Plugin, das den Rekord für die höchste Anzahl von Konfigurationsoptionen hält, ist sicherlich das Spamschutz-Plugin. Erschrecken Sie nicht davor, sondern gehen Sie die Möglichkeiten ruhig nacheinander durch. Die Voreinstellungen des Plugins sind für gewöhnliche Zwecke bereits recht gut geeignet.

Anhand der Fülle verschiedener Optionen wird eines recht deutlich: Der Kampf gegen Spam (unerwünschte Werbung) ist extrem müßig und mit viel "Wenn" und "Aber" verbunden. Einen optimalen Schutz gegen Spam kann Ihnen auch dieses Buch leider nicht geben, dafür ändern sich die Techniken der Spammer zu häufig.

Als probates Mittel hat sich eine Zeitlang die Verwendung des Akismet-Services erwiesen. Dieser zentrale Server führt schwarze Listen von Kommentarspam-Fällen und kann von vielen Blogsystemen genutzt werden, darunter Serendipity, WordPress und MoveableType. Auch die Aktivierung von Captchas reduziert Kommentarspam sehr deutlich, bringt aber auch Usability-Einschränkungen mit sich.

Heutzutage empfiehlt sich folgende Zusammenstellung und Einstellung: Installieren Sie die Spamschutz Biene, das serendipity_event_spamblock_bee Plugin und setzen Sie es an die absolute Spitze der event Pluginliste. Wenn das Spamblock Plugin kurz dahinter arbeitet, können sich allein diese beiden Plugins so hervorragend ergänzen, dass nur noch sehr sehr wenig bis gar kein SPAM mehr durchkommt. Dies geht am besten in einer Kombination aus Einstellungen von Comment-Moderation und -Reject. In Kurzform: Bee Honepot einsetzen YES und Bee Methode JSON und Bee versteckte CAPTCHAS auf Kommentare abweisen. Und im Spamblock Captchas auf aus stellen. Doch würde es hier zu weit führen dies ausführlicher zu erklären. Die Biene ist aber ein sehr ressourcenschonendes Plugin, da es die dummen Bots bereits an der äußersten Front beseitigt und das Spamblock Plugin mit seinen vielfätigen Einstellungen den Rest erledigen kann. Als letztes - soweit dann noch notwendig - kann dann noch als letzte Defensivlinie das lernende Bayes Plugin mit seiner Datenbank für die Wortanalyse und -gewichtung als schweres Geschütz eingesetzt werden.

Dafür ermöglichen es Ihnen aber viele der aufgeführten Optionen, flexibel auf neue Gegebenheiten eingehen zu können. Daher sollten Sie das Folgende aufmerksam durchlesen, um im Bedarfsfall schnell auf Spam reagieren zu können.

Das Spamschutz-Plugin wird jeweils aufgerufen, wenn in Ihrem Blog jemand einen Kommentar oder ein Trackback hinterlässt. Das Plugin prüft daraufhin, was der Benutzer übermittelt hat, und führt nacheinander mehrere Tests aus. Sobald einer der aktivierten Tests einen Kommentar als Spam markiert, wird der Artikel speziell vorgemerkt. Das Plugin merkt sich daraufhin, aufgrund welcher Maßnahme ein Artikel als Spam identifiziert wurde. Denn wie bei der Spam-Filterung bei E-Mails kann es leicht vorkommen, dass auch gültige Nachrichten aufgrund einer Filterregel als Spam klassifiziert worden sind. Daher ist es wichtig, die Filter von vornherein nicht zu "scharf" einzustellen und ab und zu die Logdateien nach falsch eingestuftem Spam durchzugehen.

Wenn ein Kommentar als Spam identizifiert ist, können zwei Dinge geschehen: Entweder er wird komplett verworfen, oder er wird moderiert. Moderierte Kommentare müssen erst von einem Redakteur freigeschaltet werden. Komplett verworfene Kommentare werden erst gar nicht in der Datenbank gespeichert, und der Redakteur wird von einem solchen Kommentar nie etwas erfahren. Nur auf zu moderierende Kommentare wird ein Redakteur möglicherweise per E-Mail hingewiesen (abhängig von den Einstellungen des Redakteurs bezüglich E-Mail-Benachrichtigungen, siehe Seite einstellungen-commentnotify).

Bei vielen Anti-Spam-Optionen können Sie einstellen, ob beim Zutreffen einer einzelnen Regel die Nachricht verworfen oder moderiert werden soll. Sobald die erste Regel zutrifft, die eine Nachricht verwirft, ist die Ausführung des Anti-Spam-Plugins beendet. Daher ist es durchaus möglich, dass ein Kommentar von einer Regel erst als "moderiert" eingestuft wird, dann aber eine Folge-Filterregel den Kommentar doch "abweist". Das Abweisen hat also Priorität vor der Moderation.

Wenn Sie einen Artikel bereits mit aktivierter Option Kommentare und Trackbacks dieses Eintrags werden moderiert erstellt haben, kann das Anti-Spam-Plugin dennoch Kommentare abweisen. Ein Kommentar kann dann jedoch niemals ohne Moderation veröffentlicht werden. Wenn Sie die Option Kommentare für diesen Eintrag zulassen bei einem Artikel deaktiviert haben, ist das Anti-Spam-Plugin für diesen Artikel irrelevant, da sämtliche Kommentare abgewiesen werden.

Durch die schiere Anzahl der Konfigurationsoptionen erschien es ratsam diese in neueren Serendipity Version in drei Hauptblöcke zu unterteilen. Dies sind: Wortfilter-Einstellungen, Trackback-Einstellungen und Generelle-Einstellungen. Die beiden ersteren sind per default ein-/zugeklappt, um sich erst einmal den wichtigen Generellen-Einstellungen widmen zu können.

Die Benennung unterscheidet sich intern als (User) Kommentare und (Blog) Trackbacks/Pingbacks. Allgemein wird hier das Wort "Kommentar(e)" für beide Erscheinungsformen verwendet, wenn nicht gesondert unterschieden (s.a. "Trackbacks") oder darauf hingewiesen wird, oder der Kontext eindeutig ist.

Spamblock: Generelle-Einstellungen

Notfall-Blockade von Kommentaren Wenn gerade eine Spam-Welle über Sie hereinbricht, können Sie diese Option aktivieren, um im Blog keinerlei Kommentare oder Trackbacks anzunehmen. Weitergehende Blockademaßnahmen können Sie auf Seite commentphp nachlesen. Empfohlene Einstellung: Nein

Spamblock für Autoren deaktivieren Häufig können Sie den angemeldeten Autoren des Blogs vertrauen, dass sie keine Spam-Einträge in Ihrem Blog vornehmen. Daher können Sie mit der Einstellung Spamblock für Autoren deaktivieren dafür sorgen, dass alle eingeloggten Redakteure bei Kommentaren von keinerlei Anti-Spam-Maßnahmen betroffen sind (Einstellung Alle Autoren). Eingeloggte Autoren sehen also keine Captcha-Grafiken und werden nicht anderweitig von Filterungen behelligt. Wenn Sie das Auswahlfeld auf keine stellen, unterscheidet das Plugin nicht zwischen anonymen und eingeloggten Besuchern. Ansonsten können Sie in diesem Feld gezielt Benutzergruppen auswählen. Wenn Sie das Plugin Freie Benutzer-Registrierung benutzen, ist dies besonders sinnvoll, um "anonyme" Redakteure dennoch von den "echten", manuell erzeugten Redakteuren unterscheiden zu können. Achten Sie dann einfach darauf, dass die Benutzergruppe der Redakteure, die über das Registrierungs-Plugin hinzugefügt werden, nicht im Auswahlfeld markiert ist. Empfohlene Einstellung: Alle Autoren

Keine doppelten Kommentare erlauben Üblicherweise sollte es in einem Blog nie dazu kommen, dass identische Kommentare mehrfach vorkommen. Daher können Sie Kommentare sperren, die bereits in der Datenbank vorhanden sind, wenn Sie die Option Keine doppelten Kommentare erlauben auf Ja stellen. Viele Spammer variieren ihre Inhalte durch zufällig erzeugte Buchstaben und sind daher von dieser Einstellung nicht betroffen. Dennoch kann diese Anti-Spam-Maßnahme auch helfen, doppelte profane Kommentare wie "super!" zu unterbinden. Diese Option hat möglicherweise Auswirkungen auf Trackbacks. Um die empfohlene Einstellung "Ja" beizubehalten, aber trotzdem valide Trackbacks mit "gleichlautendem Kommentar" anzunehmen, zum Beispiel in einem Blog Summary Artikel, der eine Trackback-URL von mehreren Artikeln ihres Blogs beinhaltet, wurde mit Version 2.16 eine diesbezügliche Ausnahme eingeführt. Empfohlene Einstellung: Ja

Kommentare abweisen, die Bekanntes enthalten Eine beliebte Form des Kommentar-Spams stellte einmal die Methode dar, bei einem Kommentar einfach den Titel Ihrer eigenen Artikel zu übernehmen. Anstelle eines Links zu einem fremden Artikel erhielten Spammer ihren Nutzen dadurch, dass deren Benutzername oder Homepage auf eine fremde URL verwies. Wenn Sie diese Option aktivieren, werden solche Kommentare verboten. In der freien Wildbahn treten derartige Spam-Kommentare kaum noch auf, daher ist es empfehlenswert, die Option aus Geschwindigkeitsgründen besser zu deaktivieren. Empfohlene Einstellung: Nein

IP-Block Intervall Jeder Besucher des Blogs besitzt eine eigene IP, die den Benutzer im Internet identifiziert. Üblicherweise hat somit jeder Besucher der Webseite eine eindeutige IP, die sich jedoch bei jeder neuen Einwahl des Benutzers ins Internet unterscheiden wird. Mit einer so gewonnenen IP-Adresse kann man versuchen, Kommentare von dort nach gewissen Kriterien zu unterbinden. IP-Adressen sind jedoch leider keine verlässliche Maßnahme. Wenn ein Besucher einen sogenannten Proxy [*] Ein Proxy ist eine Art Webserver, der die Inhalte fremder Webseiten zwischenspeichern kann, um so Traffic zu reduzieren oder Inhalte leichter zu filtern. benutzt, werden seine Zugriffe über die IP-Adresse dieses Servers durchgeführt. Der Proxy verschleiert also die wahre Identität des Besuchers. Da große Unternehmen wie T-Online und auch AOL für ihre Benutzer zentrale Proxy-Server benutzen, könnte man also beim Blocken einer solchen IP nicht nur den Zugriff für eine einzelne Person verhindern, sondern für alle Besucher, die diesen Proxy verwenden. Kurzum, Sie sollten der IP-Adresse kein absolutes Vertrauen schenken. Dennoch kann es helfen, Missbrauch auf gewisse Weise einzudämmen. Die Option IP-Block Intervall ermöglicht es, dass eine eindeutige IP nur einmal einen Kommentar eintragen darf, und dann erst wieder nach Ablauf des konfigurierten Zeitraums. Somit ist es nicht mehr möglich, mehrere hundert Kommentare pro Sekunde abzusetzen. In Blogs passiert es selten, dass Benutzer (auch die Benutzer eines Proxies) im Minutentakt gewünschte Kommentare hinterlassen. Daher ist ein Zeitraum von einer Minute hier durchaus empfehlenswert. Die Abweisung eines Kommentars mittels dieser Option erfolgt erst bei der Abarbeitung eines bereits übermittelten Kommentars. Das heißt, der eigentliche Zugriff auf das Blog wird anhand dieser Option nicht eingeschränkt. Empfohlene Einstellung: 60.

Direktkommentare verbieten? (XSRF-Schutz) Die meisten Spam-Kommentare erfolgen, indem ein Spam-Roboter automatisch Ihre URLs aufruft und einen Kommentar überträgt. Meist macht sich der Roboter nicht die Mühe, vorher (wie ein normaler Blog-Besucher) die eigentliche Webseite aufzurufen. Dieses Vorgehen kann man sich zur Abwehr zunutze machen: Man speichert auf der Seite, von der aus das Kommentarformular eingebunden wird, einen Zufallswert. Nur wenn dieser Zufallswert gültig mit dem Kommentar vom Browser des Besuchers übermittelt wird, kann man davon ausgehen, dass ein menschlicher Besucher auch vorher den Artikel aufgerufen hat und dass nicht einfach etwas automatisiert übertragen wird. Die Aktivierung dieser Option hat leider einen gravierenden Nachteil. Denn damit der eingegebene Zufallswert auf dem Server zur Prüfung zwischengespeichert werden kann, muss eine Session (siehe Terminologie, Seite sessioncookies) für den Besucher angelegt werden. Eine Session ist jedoch von Serendipity nur nutzbar, wenn der Browser des Besuchers Cookies annimmt (siehe Hinweis Seite Cookie). Weiterhin bringt diese Option einen Schutz vor CSRF [*] Cross Site Request Forgery nennt man den Versuch eines fremden Benutzers, Ihren Browser fernzusteuern und damit Aktionen auszulösen, die Sie selbst gar nicht ausführen möchten.. Dies führt zu Angriffen, bei denen ein böswilliger Benutzer Sie dazu bringen könnte, ungewollt Kommentare zu verfassen oder sogar freizuschalten. Empfohlene Einstellung: Ja.

Captchas aktivieren Captchas (siehe Seite Captcha) sind kleine Grafiken mit schwer zu lesenden Zeichenkombinationen. Damit ein Besucher einen Kommentar schreiben darf, muss er die dargestellten Zeichen in eine Box abtippen, um sich dem System gegenüber als "Mensch" auszuweisen. Captcha-Grafiken müssen eine gewisse Komplexität aufweisen, damit sie tatsächlich nicht von Computern überlistet werden können. Dies kann dazu führen, dass es auch den Besuchern immer schwerer fällt, die Captchas zu entziffern. Dennoch bietet diese Maßnahme eine der effektivsten Möglichkeiten, automatisierten Spam zu unterbinden. Mit der Option Stärkere Captchas können Sie die Komplexität der Grafiken noch weiter erhöhen, indem weitere Zufallsmuster eingefügt werden. Diese Option ist mehr für den "Spam der Zukunft" vorgesehen und sollte derzeit glücklicherweise noch nicht erforderlich sein. Um Captchas anzeigen zu können, sollte Ihr Server die PHP gdlib anbieten. Andernfalls werden die Zeichenfolgen mit Grafikdateien zusammengebaut, was von Spam-Robotern um einiges einfacher zu umgehen ist. Damit Ihre Besucher Captchas ausfüllen können, müssen sie in ihrem Browser Cookies annehmen. Wie Sie die Captcha-Grafiken anpassen können, ist auf Seite Captcha-anpassen ausgeführt. Empfohlene Einstellung: Ja. Um Bild-Captchas ganz zu vermeiden, können Sie das erweiternde und sehr empfehlenswerte Serendipity Spamblog Bee Plugin ausprobieren und es an die erste Stelle ihrer Plugin Event Liste rücken.

Captchas nach X Tagen erzwingen Da Captchas gerade für sehbehinderte Menschen große Probleme schaffen, möchte man diese Grafiken so selten wie möglich erforderlich machen. Da Spammer mit Vorliebe alte Artikel in Ihrem Blog als Ziel nehmen (da diese Artikel bei Suchmaschinen bereits besser vertreten sind), sind häufig neue Artikel des Blogs nicht betroffen. Dies können Sie ausnutzen, indem Sie Captchas nur dann einblenden, wenn ein Artikel ein gewisses Alter erreicht hat. Das Mindestalter tragen Sie in Tagen ein. Wenn Sie 0 eintragen, werden Captchas auch bei aktuellen Artikeln direkt eingebunden. Empfohlene Einstellung: 14.

Hintergrundfarbe des Captchas Die Captcha-Grafik wird unterhalb des Eingabeformulars für einen Kommentar eingebunden. Je nach Design Ihres Blogs möchten Sie die Hintergrundfarbe dieser automatisch erzeugten Grafiken sicher anpassen. Daher können Sie bei dieser Option eine Farbe im RGB-Format eintragen. Drei Zahlen repräsentieren hier, von einem Komma voneinander getrennt, den Farbwert von Rot, Grün und Blau. Wer sich an die Farbenlehre erinnern kann, weiß, dass man mit diesen drei Primärfarben jede andere vom Monitor darstellbare Farbe abbilden kann. Um diese Farbwerte leicht herauszufinden, können Sie kleine Tools wie etwa den Colorpicker [*] https://www.pagetutor.com/colorpicker/index.html benutzen. Heutzutage haben die großen Browser so etwas als Bordmittel ihrer Developer Konsole schon eingebaut. Empfohlene Einstellung: 255,255,255 (Weiß)

Zeitfenster für erlaubte Kommentare Um zu vermeiden, dass ältere Beiträge ihres Blogs mit Kommentaren geflutet werden, kann die Formular-Kommentarfunktion eines Artikels generell nur für einen begrenzten Zeitraum von X Tagen seit dem Artikeldatum erlaubt werden. Der default Wert ist "0" und erlaubt (User) Kommentare zu jedem vorhandenen Artikel ohne Altersbegrenzung (sofern nicht anderweitig beschränkt). Default Einstellung: 0

Trackbacks nur im Zeitfenster erlauben? "Ja" wird valide Trackbacks/Pingbacks, die nach diesem Zeitfenster für Blog Einträge eintreffen, blockieren und abweisen. (Andere einstellbare Optionen können dies möglicherweise beeinflussen.) Default Einstellung: Nein

Kommentarmoderation nach X Tagen erzwingen Bei besonders alten Artikeln ist es sehr selten, dass Besucher noch gewünschte Kommentare hinterlassen. Blogs sind meistens so tagesaktuell, dass ältere Artikel schnell an "Kommentarwert" verlieren. Dies können Sie also ausnutzen, um Kommentare zu alten Artikeln von vornherein auszusortieren. Wenn Sie hier die Zahl 0 eintragen, wird diese Möglichkeit der automatischen Moderation deaktiviert. Eine Zahl wie 60 bewirkt, dass Artikel älter als zwei Monate nicht ohne Ihre Zustimmung kommentiert werden können. Empfohlene Einstellung: 30

Was soll mit auto-moderierten Kommentaren passieren? Üblicherweise werden Kommentare zu Artikeln, die Sie mit der Option Kommentarmoderation nach X Tagen erzwingen gefiltert haben, in der Datenbank gespeichert, aber nicht freigeschaltet. Über die Option Was soll mit auto-moderierten Kommentaren passieren können Sie mit solchen Kommentaren auch noch härter verfahren und Kommentare vollständig abweisen. Empfohlene Einstellung: moderieren

Behandlung von per API übermittelten Kommentaren Es gibt bei Serendipity grundsätzlich zwei Möglichkeiten, als Benutzer eine Mitteilung zu einem Blog-Artikel zu hinterlassen. Zum einen sind das Kommentare, die direkt im Blog eingetragen werden. Hierbei ist also eine Interaktion des Benutzers notwendig, Captchas und andere Anti-Spam-Maßnahmen können in den Prozess eingebunden werden. Anders ist dies bei Trackbacks. Derartige "Kommentare" werden von einem automatischen System verschickt und empfangen, daher können dort keine Captchas zwischengeschaltet werden. Solche automatische Methoden bezeichnet man daher als API (siehe Terminologie auf Seite API). Sie können derartige Kommentare, die immer von Computern übermittelt werden, gezielt behandeln: Entweder werden solche Kommentare abgewiesen, oder sie müssen von Ihnen moderiert werden. Wenn Sie automatisch übermittelte Kommentare gleichrangig wie via Formular eingetragene Kommentare behandeln wollen, können Sie die Option keine wählen. Da das Aktivieren der automatischen Moderation meist eine große E-Mail-Flut von Benachrichtigungen mit sich bringt und man gültige von ungültigen Trackbacks schwer trennen kann, macht eine pauschale Moderation von Trackbacks selten Sinn. Nur wenn Sie auf Trackbacks vollständig verzichten wollen, sollten Sie die Option auf abweisen stellen. Empfohlene Einstellung: keine

Erforderliche Anzahl an Links für Moderation Viele Spammer nennen in ihren Kommentaren einfach zahlreiche Links und hoffen, dass Ihre Besucher diese Links anklicken. Es ist üblicherweise ungewöhnlich, dass Kommentatoren Ihrer Artikel dutzende von Links an Sie schicken, daher können Sie in diesem Optionsfeld eine Anzahl von Links angeben, bei deren Erreichen ein Kommentar automatisch moderiert werden soll. Empfohlene Einstellung: 7

Erforderliche Anzahl an Links für Abweisung Die Anzahl der erforderlichen Links im oberen Eingabefeld dient nur der Moderation eines Kommentars. Wenn Sie ab einer gewissen Anzahl von Links aber einen Kommentar direkt abweisen wollen, können Sie dies im Feld Erforderliche Anzahl an Links für Abweisung eintragen. Empfohlene Einstellung: 13

E-Mail-Adressen bei Kommentatoren verstecken Wird ein Kommentar bei einem Blog-Artikel angezeigt, sehen Sie auch die Informationen zu demjenigen, der den Kommentar verfasst hat. Dabei kann (je nach Template) auch die E-Mail-Adresse angezeigt werden, die wiederum Spam-Roboter in Ihrem Blog sammeln könnten, um den Kommentatoren mit Werbenachrichten zu belästigen. Um dies zu verhindern, können Sie die E-Mail-Adresse Ihrer Besucher mit der Option E-Mail-Adressen bei Kommentatoren verstecken stets ausblenden, bzw. automatisch mit der Dummy-Adresse nospam@example.com ersetzen. Als Administrator können Sie die echte E-Mail-Adresse nach wie vor in der Backend-Kommentar-Oberfläche einsehen. Empfohlene Einstellung: Ja

Auf ungültige E-Mail-Adressen prüfen? Grundsätzlich ist es möglich, dass Kommentatoren in Ihrem Blog eine ungültige E-Mail-Adresse eintragen. Gerade Spammer können dies benutzen, um statt einer E-Mail-Adresse einfach eine Homepage zu übertragen. Das Spamschutz-Plugin kann dies in gewissem Maße einschränken und eine (grobe) Prüfung durchführen, ob eine E-Mail-Adresse ein gültiges Muster besitzt (also user@domain.land). Wenn Sie diese Option aktivieren, kann Serendipity jedoch nicht prüfen, ob die E-Mail-Adresse auch tatsächlich existiert. Fantasie-Adressen mit gültigem Muster können also so nicht abgefangen werden. Empfohlene Einstellung: Ja

Pflichtfelder Wenn ein Kommentator die Formularfelder ausfüllt, um einen Kommentar zu hinterlassen, gibt es eine Reihe von optionalen Feldern. Serendipity lässt Kommentare zu, bei denen lediglich der Kommentartext ausgefüllt wird und ansonsten alle Angaben anonym sind. Wenn Sie dies verhindern wollen, können Sie Pflichtfelder im Kommentarformular definieren. Alle Pflichtfelder tragen Sie dabei in dem Eingabefeld ein. Folgende Felder stehen zur Verfügung: name (Name des Kommentators), email (E-Mail-Adresse), url (Homepage), comment (Kommentartext). Ein weiteres Feld ist replyTo, das angibt, auf welchen vorausgehenden Kommentar sich ein Benutzer bezieht. Dieses Feld als Pflichtfeld zu bestimmen macht meistens keinen Sinn, weil man einen Besucher dadurch zwingt, sich auf einen existierenden Kommentar zu beziehen. Wenn Sie Pflichtfelder definieren, müssen Sie Ihre Besucher auch darüber in Kenntnis setzen. Schlagen Sie dazu im Kapitel commenttemplates auf Seite commenttemplates nach, wie Sie Anpassungen am Kommentarformular vornehmen können. Empfohlene Einstellung: name, comment

SPAM IP Adressen via HTaccess blocken? Eine sehr experimentelle Option stellt Block bad IPs via HTaccess dar. Innerhalb einer .htaccess-Datei können Sie bei Apache-Webservern Regeln definieren, um Besucher mit einer bestimmten IP-Adresse abzulehnen. Diese Besucher können dann das gesamte Blog nicht mehr aufrufen und belasten dabei glücklicherweise auch das System nur noch minimal - denn Serendipity kommt selbst gar nicht mehr zum Zuge, um den Aufruf dieses Besuchers zu bearbeiten, da der Webserver ihn bereits zuvor abgewiesen hat. Derartige Verbote können mittels des Befehls Deny From IP-Adresse vorgenommen werden. Dieses Kommando stellt eine Blacklist von ein oder mehreren IP-Adressen dar und könnte auch manuell in der .htaccess-Datei eingestellt werden. Das Spamschutz-Plugin ermöglicht jedoch eine interessantere Art der Einbindung. Jedesmal, wenn beim Prüfen eines Kommentars dieser abgewiesen wird, merkt sich das Spamblock-Plugin die IP der Person, die diesen Kommentar hinterlassen hat. So entsteht eine Liste, mit der man herausfinden kann, von welchen IPs in letzter Zeit Spam geschickt wurde. Sobald dieser Tabelle eine IP hinzugefügt wird, aktualisiert das Plugin die .htaccess-Datei und sperrt den Zugriff für alle IPs, die in den letzten zwei Tagen dort eingetragen worden sind. Daher kann ein Besucher mit einer "verdächtigen" IP-Adresse frühestens nach zwei Tagen erneut probieren, einen Kommentar zu hinterlassen. Der große Vorteil dieser Sperrungsart ist, dass Spammern so schnell die Server-Ressourcen entzogen werden können. Die Nachteile sind jedoch, dass zum einen nur Apache-Webserver mit dieser Option arbeiten können und man zum anderen möglicherweise einen zu großen Benutzerkreis blockiert (siehe Anmerkungen zur Option IP-Block Intervall auf Seite ipblock). Benutzen Sie die Option daher nur, wenn Sie wissen, was sie bewirkt. Empfohlene Einstellung: Nein

Protokollierung von fehlgeschlagenen Kommentaren Wenn ein Kommentar oder Trackback moderiert oder abgewiesen wird, bemerken Sie dies als Redakteur möglicherweise gar nicht. Daher ermöglicht das Spamschutz-Plugin, solche Meldungen entweder in der Datenbank oder in einer Datei zu speichern. Dieses Protokoll können Sie dann von Zeit zu Zeit prüfen, um herauszufinden, ob Ihre Anti-Spam-Einstellungen in der Gesamtheit noch Wirkung haben. Wenn Sie das Protokoll in einer Einfachen Datei speichern, müssen Sie einen Speicherplatz angeben. Sie können diese Datei dann von Zeit zu Zeit herunterladen und auf dem Server wieder löschen, damit sie nicht zu groß wird. Für die Auswertung von Protokollen ist die Speicherung in einer Datenbank sicher empfehlenswerter. Die Datenbanktabelle serendipity_spamblocklog können Sie mit einem Programm wie phpMyAdmin komfortabel ansehen und nach bestimmten Kriterien filtern. Fortgeschrittene Benutzer können die Datenbanktabelle nutzen, um sich kleine Scripte zu schreiben, die täglich oder wöchentlich Statusberichte per E-Mail verschicken oder auch im Blog anzeigen. Auch diese Datenbanktabelle sollten Sie von Zeit zu Zeit leeren, um nicht zu viele alte Daten vorzuhalten.

Speicherplatz für das Logfile Wenn Sie die Protokollierung in eine einfache Datei aktiviert haben, müssen Sie hier den vollständigen Dateisystem-Pfad auf dem Server eintragen, wo das Logfile gespeichert werden soll. Der Webserver muss Schreibrechte zu diesem Verzeichnis haben, daher können Sie zB. auch Ihr uploads-Verzeichnis dafür verwenden.

Spamblock: Trackback-Einstellungen

Trackback IP Validierung Wenn Sie von einem fremden Blog ein Trackback erhalten (siehe Seite trackback), dann wird dieses Trackback von einem bestimmten Server aus gesendet. In einem Trackback selbst ist die URL des fremden Blogs enthalten. Im üblichen Fall entspricht die IP-Adresse des Servers, der das Trackback sendet, genau der IP-Adresse der URL, die im Trackback enthalten ist. Bei Spam sieht dies anders aus: Die Trackbacks werden von infizierten Computersystemen aus verschickt, und die beworbene URL entspricht meist der von Spam-Seiten und liegt auf einem völlig anderen Server. Das Antispam-Plugin kann solche Trackbacks automatisch abweisen, wenn die IPs des sendenden Servers und des beworbenen Servers nicht übereinstimmen. Die Aktivierung dieser Option ist sehr empfehlenswert, da es im täglichen Einsatz de facto nicht zu einer fehlenden Übereinstimmung bei echten Trackbacks kommen kann. Lediglich in Randfällen wie Servern, die Trackbacks über Proxy-Server verschicken müssen, kann dies gültige Trackbacks verwerfen. Wägt man den positiven Nutzen des Schutzes vor ungültigem Spam dagegen ab, ist dieser Nachteil jedoch leicht zu verschmerzen. Empfohlene Einstellung: abweisen

URLs von IP-Validierung ausnehmen Ein Feld für URLs, die von der IP-Validierung ausgeschlossen werden sollen. Reguläre Ausdrücke sind erlaubt, Zeichenketten durch Semikolon (;) zu trennen. Das @-Zeichen muss mit \@, der Punkt als \. angegeben werden.

Auto-Moderation nach X Tagen erzwingen Ähnlich der Einstellung für Kommentare können auch Trackbacks nach einem gewissen Zeitraum zunächst automatisch in die Moderations-Zustand versetzt werden. Empfohlene Einstellung: 30

Zuweisung nach der Auto-Moderation? Ähnlich der Einstellung für Kommentare können die durch automatische Moderation erfassten Trackbacks entweder moderiert oder verworfen werden. Empfohlene Einstellung: moderieren

Trackback-URLs prüfen Der Sinn eines Trackbacks ist, dass ein fremdes Blog Sie darauf hinweisen kann, dass es sich auf einen Ihrer Artikel bezieht. Daher muss ein Trackback immer die URL des fremden Blogs enthalten, auf dem sich jemand zu Ihrem Artikel äußert. Bei Spam ist das meistens nicht der Fall - die URL, die das Trackback bewirbt, enthält meistens nur besondere Angebote zum preiswerten Bezug von Viagra oder tolle Vorschläge, wie man reich werden kann. Für die Spammer wäre es ein hoher Aufwand, sich dort tatsächlich auf Ihren Blog-Artikel zu beziehen. Diese Nachlässigkeit der Spammer können Sie ausnutzen und mit der Option Trackback-URLs prüfen einstellen, ob alle Trackback-URLs daraufhin geprüft werden sollen, ob sie die URL Ihres Artikels enthalten. Die Aktivierung dieser Option birgt jedoch zwei Gefahren: Wenn ein Spammer eine ungültige URL oder eine URL mit besonders vielen Daten hinterlässt, dann wird Ihr Webserver diese Seite gnadenlos trotzdem aufrufen und viel Traffic verursachen. Da die URL-Prüfung ausgeführt wird, während das Trackback gespeichert wird, kann dies die Dauer der Prüfung sehr in die Länge ziehen und Ihren Server stark auslasten. Zusätzlich darf bei der Aktivierung dieser Option der Webserver nicht von einer Firewall blockiert werden, damit fremde URLs überhaupt aufgerufen werden können. Die zweite Gefahr ist, dass Sie möglicherweise Trackbacks abweisen, die eigentlich gültig wären. Manche Blogsysteme senden ein Trackback an Ihr Blog nämlich bereits, bevor der eigene Artikel veröffentlicht wurde. Das Blogsystem würde also erst dann seinen Artikel mit dem Link zu Ihnen online stellen, wenn das Trackback an Sie abgearbeitet wurde. Da Sie aber bereits bei der Annahme des Trackbacks die Existenz der fremden URL voraussetzen, würde das Trackback fehlschlagen. Empfohlene Einstellung: Nein

Spamblock: Wortfilter-Einstellungen

Wortfilter aktivieren In den folgenden großen Eingabefeldern können Sie Zeichenketten eintragen. Sobald eine dieser Zeichenketten in einem Kommentar vorkommt ("Blacklisting"), kann ein Kommentar speziell behandelt werden. Wie diese Behandlung ausfallen soll, stellen Sie über die Option Wortfilter aktivieren ein. Ob Sie diese auf moderieren oder abweisen stellen, hängt davon ab, wie "scharf" Sie Ihre Wortfilter einstellen. Wenn Sie beispielsweise das Wort arsch filtern, dann ist das erstmal ein guter Gedanke. Vielleicht denken Sie aber nicht daran, dass ja diese Zeichenkette auch bei dem Wort "marschieren" vorkommen könnte und in diesem Fall keineswegs filterungswürdig wäre. Hätten Sie den Wortfilter hier auf abweisen gestellt, wäre ein Kommentar mit diesem Wort vollständig verloren, und der Besucher wundert sich womöglich, warum sein Kommentar nicht angenommen wurde. Daher ist es ganz wichtig, dass Sie die folgenden Wortfilter so eng wie möglich fassen, um gültige Buchstabenkonstellationen nicht auch zu verhindern. Für obiges Beispiel wäre daher der Einsatz von " arsch " (ohne Quotes!) eher zu empfehlen. Durch die zusätzlichen Leerzeichen würde der Filter nur noch dann aktiv werden, wenn das Wort isoliert vorkommt. Empfohlene Einstellung: abweisen

Wortfilter für URLs, Autorennamen, Inhalt und E-Mail-Adressen Auf jedes Feld, das ein Kommentator ausfüllt, können Sie einen Wortfilter anwenden. Die zu filternden Wörter müssen mit dem Semikolon (;) getrennt werden. Wenn Sie am Zeilenende angelangt sind, können Sie vor oder nach diesem Semikolon auch gerne einen Zeilenumbruch (Return)-Taste zur besseren Lesbarkeit einfügen. Jedes eingetragene Wort wird dabei einzeln auf das Vorhandensein im Kommentar geprüft. Trifft eines der Wörter zu, wird der Kommentar entsprechend der Wortfilter-Einstellung entweder moderiert oder abgewiesen. Sämtliche Wortfilter werden als "reguläre Ausdrücke" [*] https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck interpretiert. Dies ist eine spezielle Syntax, in der Sie auch Platzhalter verwenden können. Reguläre Ausdrücke sind ein Thema für sich, aber hier ein Beispiel für einen Wortfilter-Ausdruck: \@[^\s]+\.jp\s Dieser Ausdruck würde einen Kommentar dann sperren, wenn jemand eine E-Mail-Adresse angibt, die zu einer japanischen Domain führt. Ein Kommentar wie "Mail me at shyguy@yahoo.jp" würde also blockiert werden. Aufgrund des Einsatzes von regulären Ausdrücken gibt es bei den Wortfiltern Besonderheiten für Zeichen, die bei regulären Ausdrücken besonders genutzt werden. Solche Zeichen muss man, wenn sie im Wort vorkommen sollen, escapen. Dazu stellt man einfach den Backslash (\) vor eines der folgenden Sonderzeichen: @ [ ] ( ) { } . ? * ^ $ | + - Wenn Sie also die große Flexibilität von regulären Ausdrücken nicht nutzen wollen, können Sie die Wortfilter auch ganz einfach als Wortliste verwenden. Einzig beim Auftreten eines Sonderzeichens müssen Sie daran denken, den Backslash voranzustellen. Wenn Sie ungültige reguläre Ausdrücke eingeben, kann dies zu PHP-Fehlermeldungen bei der Kommentarabgabe führen oder sogar dazu, dass keinerlei Kommentare mehr gespeichert werden können. In diesem Fall sollten Sie versuchen, alle Wortfilter zu löschen. Wenn es danach wieder klappt, können Sie nach und nach die ursprünglichen Zeichenketten wieder einfügen und so herausfinden, welche Regel falsch war. Empfohlene Einstellung: Keine Empfehlung möglich

Akismet API Key Akismet ist ein zentraler Web-Service, der eine Schnittstelle für Blogsysteme wie WordPress, Serendipity und MoveableType anbietet. Ein Kommentar wird vollständig an den Service übermittelt, der Service überprüft den Kommentar und sieht nach, ob er Spam-Kriterien aufweist. Da sehr viele Systeme Spam an diesen Service melden und die Datenbank bereits sehr groß ist und aktiv gepflegt wird, kann Akismet relativ verlässlich entscheiden, ob ein Kommentar Spam darstellt oder nicht. Wenn Sie den Akismet-Dienst benutzen wollen, benötigen Sie einen sogenannten API-Key, den Sie mit der Anmeldung [*] https://akismet.com/ erhalten. Sie müssen ihn dann im Spamschutz-Plugin im Konfigurationsfeld Akismet API Key eintragen. Die Abfrage des Akismet-Servers kann nur klappen, wenn Ihr Webserver nicht von einer Firewall am Verbindungsaufbau gehindert wird. Beachten Sie bei der Benutzung von Akismet, dass es auch hier zu falsch erkanntem Spam kommen kann und dass in besonders geschützten Intranet-Blogs Kommentare so an einen zentralen Server übertragen werden, über den Sie keine Kontrolle haben. Blogs, bei denen Sie schützenswerte Inhalte hinterlegen, sollten Sie daher nicht mit Akismet betreiben. Empfohlene Einstellung: Akismet-Schlüssel beantragen!

Antispam-Server Mit dieser Option legen Sie fest, für welchen Antispam-Server der obige API-Key gelten soll. Die anonymisierten Varianten bedeuten, dass alle übertragenen Daten zu den Antispam-Servern keine Angabe von Name oder E-Mail-Adresse enthalten. Dies reduziert jedoch auch die Spam-Erkennungsrate. Diw Optionen sind: TypePad Antispam oder Akismet. TypePad Antispam (anonymisiert) oder Akismet (anonymisiert). Empfohlene Einstellung: Je nachdem!

Behandlung von Akismet-Spam Mit dieser Option legen Sie fest, wie von Akismet erkannter Spam behandelt werden soll. Sie können derartigen Spam entweder moderieren oder abweisen. Der große Komfort von Akismet und die relativ geringe Fehlerquote ermöglichen es, diese Option auf abweisen einzustellen. So erhalten Sie wirklich nur noch Moderationshinweise von Kommentaren, bei denen die Einstufung als Spam aufgrund anderer Spamschutz-Kriterien nicht eindeutig war. Empfohlene Einstellung: abweisen

Unterhalb der Konfigurationsoptionen bindet das Plugin noch eine kleine Vorschaugrafik der Captchas ein. Dort können Sie sehen, wie ein Captcha für einen Besucher aussieht, und gegebenenfalls Änderungen der Hintergrundfarbe vornehmen.

Die Art der Captcha-Grafiken richtet sich danach, ob Ihr Webserver das PHP-Modul gdlib unterstützt. Ohne gdlib gibt das Spamblock-Plugin PNG-Grafiken im Verzeichnis plugins/serendipity_event_spamblock direkt aus. Für jeden Buchstaben gibt es eine eigene captcha_zeichen.png-Datei, die Sie mit einem Bildbearbeitungsprogramm anpassen können.

Wenn gdlib vorhanden ist, gilt: Die verwendeten Schriftarten der Captchas können Sie nur mit etwas Aufwand verändern. Das Plugin kann mit beliebigen TTF-Schriftdateien, wie sie Windows mitliefert, umgehen. Diese Dateien liegen im Verzeichnis plugins/serendipity_event_spamblock und sind standardmäßig auf die vier Schriftarten Vera, VeraSE, Chumbly und 36daysago beschränkt. Das Auswahlkriterium der Schriftarten war, dass diese möglichst nicht maschinenlesbar sein sollen. Wenn Sie lieber eine eigene, besser lesbare Schriftart benutzen wollen, können Sie die vorhandenen TTF-Dateien mit anderen ersetzen und müssen dabei die Dateien lediglich umbenennen.

Das Plugin wählt zufällig eine der vier verfügbaren Schriftarten aus. Wenn Sie mehr als vier Schriftdateien benutzen wollen, müssen Sie die Plugin-Datei plugins/serendipity_event_spamblock/serendipity_event_spamblock.php öffnen und bearbeiten. Suchen Sie nach der Zeile


    $fontfiles = array('Vera.ttf', 'VeraSe.ttf', 'chumbly.ttf', '36daysago.ttf');

Dort müssen Sie (jeweils in Anführungszeichen) den Namen der Schriftdatei kommasepariert eintragen.

Etwas oberhalb dieser Codezeile findet sich auch die Angabe, wie groß die Captcha-Grafik ist:


    $width = 120;
$height = 40;

Mit den beiden Zahlen 120 (Breite) und 40 (Höhe) können Sie die Bildgröße anpassen.

Die Schriftgröße müssen Sie über eine weitere Variable anpassen, die ebenfalls in der Nähe der obigen Stellen erscheint:


    $size  = mt_rand(15, 21);

Diese Zeile bewirkt, dass das Plugin zufällig eine Schriftgröße zwischen 15 und 21 für jeden einzelnen Buchstaben benutzt. Sie können diese beiden Zahlen auf den gewünschten Wert erhöhen (zB. 21 und 26), um größere Schriften anzuzeigen.

Das Plugin verzichtet bei der Ausgabe der Schriften auf einige Zeichen, die häufig missverständlich aussehen. Die Zahlen 1, 5, 6 und 8 sowie die Buchstaben I, O und S werden daher ausgelassen. Wenn Sie weitere Buchstaben ausschließen wollen, können Sie auch diese in der Spamschutz-Datei ändern. Suchen Sie dafür folgende Code-Stelle und passen Sie sie an:

<?php

function random_string($max_char, $min_char) {
    $this->chars = array(2, 3, 4, 7, 9); 
    // 1, 5, 6 and 8 may look like characters.
    $this->chars = array_merge($this->chars,
      array('A','B','C','D','E','F','H','J','K','L','M',
            'N','P','Q','R','T','U','V','W','X','Y','Z')); 
    // I, O, S may look like numbers

?>
6.1.8 - Spartacus: Plugins und Themes Synchronizr - serendipity_event_spartacus

Spartacus - Plugins und Themes Synchronizr
serendipity_event_spartacus