MS-Project VBA-Programmierung

Nur die zusammenhängenden Vorgänge anzeigen

Der Vorgangspfad kennzeichnet zwar die zusammenhängenden Vorgänge, zeigt sie aber nicht allein an. Wnen zwischen den Vorgängen viele andre Zeilen liegen, bleibt es unübersichtlich. In meinem Makro habe ich das Problem gelöst.
Nur die zusammenhängenden Vorgänge anzeigen
Dieses Tutorial steht auch als PDF-Download (https://www.time4mambo.de/download/office) auf time4mambo zur Verfügung (allerdings ohne den letzten Absatz mit dem Makros). https://support.microsoft.com/de-de/office/feldfunktionen-ref-feld-b2531c23-05d6-4e3b-b54f-aee24447ceb2
Eigene Felder mit veränderbaren Text (Überarbeitet: Dezember 2021)
Das Tutorial steht auch als PDF-Datei zum Download auf time4mambo (https://www.time4mambo.de/download/office) bereit Optional … empfehle ich zunächst vorhandene Überschriften zu kopieren,
Gegliederte Überschriften in Word

Diagramm mit IST-/SOLL - Neg./Pos. Abweichung

Positive/Negative Abweichung in einem Excel-Diagramm
Diagramm mit IST-/SOLL - Neg./Pos. Abweichung

Excelliste mit bestimmter Hintergrundfarbe addieren

Mit VBA eine kleine Funktion programmieren, die Zahlen mit einer bestimmten Farbe summiert.
Excelliste mit bestimmter Hintergrundfarbe addieren
Eigentlich klingt das ganz einfach. Gibt schließlich sogar eine Befehlsschaltfläche um eine Excel-Tabelle in PowerPoint einzufügen. Aber da wir es mit Microsoft und einem starken Programm zu tun haben, gibt
Verschiedene Möglichkeiten Excel in PowerPoint einzufügen

Jetzt als kostenloses Onlinebook:

Seblod - Das Handbuch

Komplettabdruck der zweiten Auflage. (Fast) alles zum CCK Seblod! Der wohl mächtigsten Erweiterung von Joomla!
Seblod - Das Handbuch
Dieses Tutorial entstand ursprünglich für Dozenten und wurde während der Coronakrise geschrieben. Das ein oder andere Seminar fand auch statt. Um den Kolleginnen und Kollegen, die sich nicht so auskannten
Einführung in Microsoft Teams
In Joomla gibt es ein Modul, welches RSS-Feeds erzeugt, die andere abonnieren können. Das Problem ist nur, dass dieses Modul jeweils nur einen Feed für die gerade aktuelle Seite/Kategorie erzeugt.
RSS-Feeds kompakt ohne Erweiterung

Rechnung in Word - ohne Excel

Mit etwas einfacher Makroprogrammierung lässt sich in Word auch ohne Excel rechnen und somit eine Rechnung erstellen. Das Tutorial zeigt in mehreren Teilen, wie sich eine Rechnung mit allem Drum und Dran erstellen lässt.
Rechnung in Word - ohne Excel
Filter in zwei oder mehr Spalten zu setzen, die nicht voneinander abhängig sind, ist mit den Filtermöglichkeiten, die Excel bietet, nicht möglich. Angenommen Sie haben eine Tabelle mit ein paar Städten, zwei verschiedene Kategorien und zugehörigen Umsätzen. Aktivieren Sie über das Menüband Daten in der Gruppe Sortieren und Filtern den
Zwei Filter setzen mit ODER(...)
Die App kann bei https://www.time4mambo.de/download/seblod (https://www.time4mambo.de/download/seblod) downgeloadet werden ----------------- Mir gefiehlen die guten alten Weblinks von Joomla nicht, als ich diese Site relaunchte. Beispielsweise war es nicht möglich die Sprache der
SEBLOD: Weblinks mit automatisierten Screenshots

Excel-Lösungen

  • Tutorials zu Fragen rund um Excel
  • Teilweise mit Makroprogrammierungen.
  • Fertige Excel-Sheets mit Teillösungen zum Download
Excel-Lösungen
Dieses Tutorial steht auf time4mambo (https://www.time4mambo.de/download/office) als PDF zur Verfügung Einfache Rechnung Einzelpostenauflistung, Zwischensumme, Gesamtsumme und Mehrwertsteuer – für den Geschäftsmann
Rechnungserstellung mit Word und Excel
Seit Joomla 3 ist das CSS-Framework Bootstrap fester Bestandteil in Joomla und kann für eigene Templates somit einfach benutzt werden. Auf time4jaoomla erfahren Sie, wie es geht.
Bootstrap mit Joomla
Original-Auszug aus dem Buch Die Überlegung: Wir haben eine Kulturredaktion, der eine Kategorie zugeordnet ist. Und wir haben eine Politikredaktion, die in zwei Kategorien schreibt. Beide Redaktionen sollen nur ihre eigenen Beiträge bearbeiten, veröffentlichen und löschen können. Außerdem bekommen beide Redaktionen noch einen Chefreakteur zur Seite, der in allen
Fallbeispiel: Redaktionssystem
Schaut man sich das erste Mal einen CSS-Befehl an, führt das meistens zu einem panischen Weiterklicken, weil das alles sehr kompliziert ausschaut. Aber eigentlich ist es das nicht. Bei genauer Betrachtung ist CSS eigentlich sogar selbsterklärend und wenn man eine Weile damit umgegangen ist, geht es schon beinahe wie von
Wie funktioniert CSS
Das Tutorial steht auf time4mambo zum Download bereit: http://www.time4mambo.de/download/joomla/CommunityBuilder_v04-Joomla 3x.pdf (http://www.time4mambo.de/download/joomla/CommunityBuilder_v04-Joomla%203x.pdf) Dieses Tutorial ist ursprünglich für Joomla! 1.5 geschrieben worden. So ich es derzeit überblicke hat das Tutorial aber auch in
Community Builder
Dieses Tutorial und die zugehörige App stehen als Download auf http://www.time4mambo.de/webdesign/referenz.html (http://www.time4mambo.de/webdesign/referenz.html)
SEBLOD: Einführung am Beispiel eines selbsterstellten Portfolios
Grafische Rollovers mit dem JCE zu machen ist ja recht einfach, weil der JCE hier schon fertige Einstellmöglichkeiten sehr einfach mitbringt.Aber wie wird ein Rollover-Effekt bei einer Textmarke erzielt? Eigentlich genauso wie ein grafischer Rollover-Effekt - nur mit einem klitzekleinen Trick: Zunächst schreiben wir den Text: Lass uns was schreiben und mittendrin einen
Text-Rollover mit dem JCE

IST/SOLL mit Fehlerindikatoren

Ein Diagramm mit Fehlerindikatoren erstellen
IST/SOLL mit Fehlerindikatoren

Selbst geschrieben: Joomla für Redakteure

Amazon:
Dieses essential bietet speziell Redakteuren einen Einstieg in das Content Management System Joomla!. Losgelöst vom „Ballast“ der zahlreichen Einstellungen und Möglichkeiten, die in anderen Büchern thematisiert werden, wendet sich dieses Buch ausschließlich an die eigentlichen Endnutzer des Systems und konzentriert sich dabei auf das Schreiben und Veröffentlichen von Beiträgen. Der erfahrene Autor und Joomla!-Kenner Axel Tüting erklärt jeden Schritt praxisnah und verständlich.

Joomla für Redakteure


Para- und Nonverbale Kommunikation

Damit ist zum einen die Körpersprache gemeint und zum anderen die Art, wie wir kommunizieren. Zu letzterem gehören der Tonfall, Sprachmelodie, Artikulation, Sprechtempo und auch die Pausen zwischen den Wörtern.

Das reine Wort, der Inhalt, machen 7% unserer Kommunikation aus. Die para- und nonverbale Kommunikation zusammen 93%. Wie Sie 93% mehr Erfolg haben können, erfahren Sie auf dieser Website:

Körpersprache


Selbst geschrieben: SEBLOD - Das Handbuch

Das Content-Management-System Joomla! stellt dem Anwender bereits eine breite Palette von Funktionen zur Ausgestaltung von Webauftritten bereit. Bei erfolgreichen Webseiten steigt mit der Zeit aber der Anspruch in Bezug auf Funktionalität. Es ist nur eine Frage der Zeit, bis Sie an die Grenzen von Joomla! stoßen. Entweder greifen Sie dann in den Programmcode ein oder setzen auf ein Content Construction Kit (CCK). Das mächtigste dieser Art ist SEBLOD®. Wie Sie damit die Grenzen von Joomla! sprengen, zeigt Ihnen das vorliegende Handbuch.

SEBLOD - Das Handbuch


Deutschsprachige Seblod-Community

Zu dritt haben wir die deutschsprachige SEBLOD™-Community gegründet. Neben Ressourcen und Webseiten , die mit SEBLOD™ gemacht sind, bieten wir ein Supportforum zu Fragen rund um SEBLOD™ an.

https://seblod.time4mambo.de


Dankesagen...

Wenn die Tutorials dir weitergeholfen haben, dann kannst du mit einer kleinen Spende Danke sagen.

Schulungen

Langjährige Erfahrung als Dozent zu verschiedenen Themen.
Ich komme zu Ihnen in die Firma oder organisiere Räume vor Ort. Dazu steht mir ein Netzwerk aus vielen Jahren Tätigkeit als freier Dozent zur Verfügung.
Weitere Informationen, sowie Referenzen finden Sie auf der Firmenseite time4mambo

  •     VBA für Excel, Word und Outlook
  •     MS-Excel
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-Project
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-Word
        2003 / 2007 / 2010 / 2016 / 2019
  •     MS-PowerPoint
        2010 / 2016 / 2019
  •     Office 365
  •     Joomla! 3x
  •     Körpersprache

    Weitere Themen auf Anfrage

Interesse? Lust? Zeit? Dann freue ich mich über eine eMail oder Anruf.
Kontaktdaten im Impressum


Eine Übersicht der verwendeten Erweiterungen findet sich im Impressum

CCK Seblod - Das Handbuch

 

seblod coverIm Dezember 2015 ist die 2. Auflage meines Buches "CCK Seblod - Das Handbuch" mit 301 Seiten erschienen. Die 1. Auflage war leider sehr fehlerhaft und wurde kurz nach dem Erscheinen eingestampft.

Vorliegend ist das komplette Buch als kostenloses Onlinebuch abgedruckt.

Das CCK Seblod hat sich mittlerweile weiterentwickelt. Einige neue Features sind dazu gekommen und alte sind verschwunden. Dennoch kann der Abdruck dieses Buches als weitgehend aktuell angesehen werden.

Wer Unstimmigkeiten findet oder vergessene Bilder oder andere Fehler - ich freue mich stets über ein paar hinweisende Zeilen!

 

Das Handbuch gibt es auch als PDF-Download. Allerdings nur in deutscher Sprache:
https://www.time4mambo.de/downloads/category/10-seblod-buch-und-tutorials.html

Weitere Tutorials auf meinen Seiten zu SEBLOD: https://www.time4joomla.de/joomla-3-x/komponenten-3.html

 

C.1            Deutschsprachige SEBLOD-Community

Während der Entstehung dieses Buches ist die deutschsprachige SEBLOD-Community entstanden. Ursprünglich war es eine Idee auf dem Joomladay 2013 in Nürnberg, geriet dann zunächst ein wenig in Vergessenheit und wurde durch einen Post von Paul im Joomlaportal[1] wieder aufgegriffen. Zu Paul und mir gesellte sich Niels, der die holländische Übersetzung von SEBLOD machte, und im November 2013 gründeten wir die deutschsprachige SEBLOD-Community.

Auf diesen Seiten gibt es nicht nur ein rege besuchtes Supportforum zu SEBLOD, sondern auch eine deutschsprachige Ressourcenliste und Beispielseiten, in denen SEBLOD eingesetzt wird. Diese Seiten werden stetig ergänzt.

Wir freuen uns über jeden Besuch. Sei es, dass Sie Fragen haben, sich über weitere Tutorials oder Videos informieren möchten, sich SEBLOD in der Praxis anschauen wollen oder sich einfach mit netten Menschen austauschen möchten: Sie sind herzlich willkommen! http://seblod.time4mambo.de/

 

Mittlerweile gibt es auf unseren Seiten auch eine aktuelle Ressourcenliste und eingie Beispielseiten.

 

C.2            SEBLOD-Erweiterungen

Das SEBLOD-Team hat uns zum CCK noch einige Erweiterungen gegeben, die teilweise kostenpflichtig sind und teilweise kostenlos. Die kostenpflichtigen Erweiterungen bewegen sich in der Regel zwischen 5 und 30 Euro. Wirklich viel verdienen werden die Jungs aus Frankreich damit bestimmt nicht – dafür, dass sie uns so eine mächtige Komponente kostenlos zur Verfügung stellen:

http://www.seblod.com/products

Des Weiteren finden sich ein paar Erweiterungen bei den Joomla!-Extensions:

http://extensions.joomla.org/search?q=seblod

Eine Seite, auf der es fertige Apps zum Download gibt, ist mir nicht bekannt. Aber es ist da etwas in Planung in der deutschsprachigen Community …

 


[1] http://www.joomlaportal.de

B.1            WYSIWYG-Editor im Frontend

Wenn Sie einen Formulartyp anlegen, der für Gäste einen WYSIWYG-Editor vorsieht, dieser aber nicht angezeigt wird, dann finden Sie in der Plug-in-Übersicht von Joomla! das Plug-in CCK Feld – Wysiwyg Editor. Hier müssen Sie den Editor für Gäste explizit erlauben.

B 01

Bild B.1: WYSIWYG-Editor für das Frontend erlauben.

B.2    Merkwürdige Zeichen im Frontend

Wenn Sie im Frontend irgendetwas mit zwei und mehr Doppelpunkten sehen, dann haben Sie einen Fehler in der Speicherung Ihrer Daten gemacht.

Generell können zwei Zustände eingetreten sein:

  1. Sie haben einen benutzerdefinierten Inhalt einer Datenbankspalte zugewiesen, die dafür nicht geeignet ist, weil beispielsweise Joomla! einen »Vollzugriff« auf diese Spalte machen muss und demzufolge den Inhalt so ausgibt, wie es in der Spalte eingetragen ist
  2. Sie greifen mit einem anderen Feld auf den Inhalt einer Datenbankspalte zu, die zuvor als Benutzerdefiniert definiert wurde.

Weitere Details entnehmen Sie bitte dem Kapitel über die Speicherung (Kapitel 4) und dort insbesondere Kapitel 4.2 und 4.3.

B.3    SQL-Fehlerbeschreibungen im Frontend

Das kann sehr viele Ursachen haben. Meistens liegt ein Speicherfehler vor. Schauen Sie dafür auch das vorige Kapitel an.

Weitere Möglichkeiten können falsch zugeordnete/ausgefüllte Felder in den einzelnen Feldtypen sein. Da werden Sie vermutlich selber mit detektivischem Einsatz dem Ganzen auf den Grund gehen müssen.


B.4    Fehlermeldung: Übergeordnete Kategorie …

Vermutlich haben Sie statt des Feldes Article Category Id das Feld Category Parent Id eingebunden. Parent kümmert sich um die übergeordneten Kategorien und bietet somit die Möglichkeit, Kategorieblöcke einzubinden. Wollen Sie hingegen eine Kategorie zuweisen oder auswählen, müssen Sie den Feldtyp für die Article Category einbinden.

B.5    Das Bild im Frontend ist nicht anklickbar

Sie haben einen Image-Feldtyp eingefügt und können nicht auf das hochgeladene Bild im Frontend klicken? Dann gehen Sie zu Ihrem Formulartyp und wählen die Nummer 3 im Intro oder Inhalt aus. Sie müssen dem Feldtyp Images oder Feld X, wenn sich dieser Feldtyp auf Bilder bezieht, explizit die Typografie Bild zuweisen. Wenn Sie auf das dann erscheinende kleine Pluszeichen klicken, können Sie auswählen, welches Bild in welcher Größe konkret angezeigt werden soll.

 

B.6    Template existiert nicht

Die Originalfehlermeldung im Frontend lautet:

Template Style does not exist. Open the Content Type & save it again. (Intro + Content views)

Manchmal taucht der Fehler auf, weil etwas an den Feldern geändert wurde, diese vielleicht nicht mehr existent sind oder aber in den Eingabeformularen (also Admin- oder Seitenformular) nicht mehr auftauchen und ergo nicht im Frontend angezeigt werden können. Allerdings hatte ich diesen Fehler auch schon ohne ersichtlichen Grund. Er lässt sich einfach beseitigen, indem der Inhaltstyp editiert wird und sowohl das Intro als auch der Inhalt noch einmal explizit gespeichert werden.

B.7    Anzahl der sichtbaren Felder beschränkt?

In der deutschsprachigen SEBLOD-Community[1] wurde berichtet, dass nicht mehr als 29 Felder in einem Inhaltstyp angezeigt werden können. Bei anderen werden bis zu 60 und mehr Felder problemlos angezeigt.

Eine mögliche Erklärung kann sein, dass die php.ini nicht ausreichend eingestellt ist. Dort gibt es einige Angaben zu Maximalwerten:

001

max_file_uploads=5O

002

max_input_vars=1OOO

Offenbar funktioniert es problemlos, wenn Sie max_input_vars auf 3OOO setzen:

001

max_input_vars=3OOO

Das Problem ist allerdings, dass Sie an diese Datei normalerweise nicht herankommen, wenn Sie keinen eigenen Server betreiben. Dann können Sie nur Ihren Hoster bitten, ob er diesen Wert für Sie entsprechend ändert. Eventuell hilft aber auch ein Blick in die Domainverwaltung. Manche Hoster bieten Möglichkeiten, dass Sie hier individuelle Einstellungen vornehmen können.

B.8            Nach dem Joomla!- und SEBLOD-Update

Es ist mir ein paarmal passiert, dass nach einem Joomla!- und dem darauffolgenden SEBLOD-Update irgendetwas in SEBLOD nicht mehr sauber funktionierte. Das muss nicht so sein, und es gibt auch keine Erklärung, warum das zumindest bei mir einige Male so war. Sollten Sie aber ein ähnliches Phänomen feststellen: Bei mir war stets die Lösung, dass ich meine Apps per Download sicherte, SEBLOD deinstallierte (über Erweiterungen/Erweiterungen/Verwalten) und danach komplett neu installierte. Danach dann die Apps installieren, und alles lief wieder einwandfrei.

B.9    Mehrere Startseitenmenüs bei Multisites

Wenn Sie unter Homepage bei den Multisites einen Menüverweis auswählen, haben Sie diesen Verweis manchmal zweimal in Ihrem Menü angezeigt. Warum das so ist und wie man Abhilfe schafft, ist in Kapitel 20.2 »Die Multi-Berechtigungen« ausführlich erklärt.

B.10    Inhaltstyp wird nicht angezeigt

Sie haben ein neues Formular und einen Inhaltstyp angelegt, aber dieser wird nicht als Auswahl angezeigt, wenn Sie einen neuen Beitrag schreiben möchten? Dann kann es sein, dass Sie den vermeintlichen Beitrag bei den Inhaltstypen nicht als Artikel abgespeichert haben.

B 02

Bild B.2: Nur die Objekte »Artikel« werden in den Beiträgen zur Auswahl angezeigt.

Wenn Sie hier nicht explizit Artikel auswählen, wird Ihr Formular auch nicht bei den Beiträgen zur Auswahl angezeigt.

Editieren Sie also Ihren Inhaltstyp, klicken Sie oben rechts auf den orangefarbenen Pfeil und überprüfen Sie das Objekt.

Ein zweiter Grund kann sein, dass Sie vielleicht während der Erstellung des Inhaltstyps die Beitragsübersicht offen hatten. Falls ja, laden Sie einfach die Übersicht neu. Ich gebe zu, dass mir das ein paarmal passiert ist …

 


[1] http://seblod.time4mambo.de

  

Es gibt die Möglichkeit, einige CSS-Klassen aus dem Bootstrap[1] in SEBLOD zu übernehmen. Diese Klassen können an verschiedenen Stellen in SEBLOD eingebunden werden und bewirken teilweise sehr unterschiedliche Formatierungen. Dieses Kapitel soll ein wenig Überblick geben.

A.1          Eingabe direkt im Feld

Wenn Sie direkt im Feld arbeiten, können Sie am unteren Rand im Speicherbereich die orangefarbenen Pfeile anklicken. Es klappt dann der Bereich Mittel auf, in dem Sie CSS-Klassen direkt eingeben können.

A 01

Bild A.1: CSS-Klassen direkt beim Feld eingeben.

 

Legen Sie Textfelder an, können Sie die Länge der Felder in der Ansicht mit CSSKlassen festlegen:

A 02

Bild A.2: CSS-Klassen für die Länge der Eingabefelder-

Die Klassen von oben nach unten:

  • input-mir
  • input-small
  • input-medium
  • input-large
  • input-xlarge
  • input-xxlarge

Wenn Sie Buttons benutzen möchten, bieten sich einige Klassen zur Gestaltung an, darunter auch eine, die aus dem Button einen optischen Link macht:

A 03Bild A.3: Buttongestaltung mit CSS-Klassen aus dem Bootstrap.

Ganz oben ist ein Button ohne Klassenangabe, und darunter:

  • btn-primary
  • btn-info
  • btn-success
  • btn-warning
  • btn-danger
  • btn-inverse
  • btn-link

Unterschiedliche Größen sind ebenfalls möglich:

  A 04Bild A.4: Buttons unterschiedlich groß


Die Klassennamen unter dem Standard von oben nach unten:

  • btn-large
  • btn-small
  • btn-mini
  • btn-block

btn-block macht den Button exakt so lang, wie die Beschriftung breit ist. Alle anderen Klassen fügen rechts und links ein paar Pixel bis zum Buttonrand hinzu.

 

A.2  Eingabe im Markup

Sie können Klassen auch über die Nummer 6 – Markup einfügen. Der Effekt ist dann etwas anders, als wenn Sie die Klassen direkt in die Felder eingeben.

A 05

Bild A.5: Klassen direkt in der Übersicht eingeben.

Für die Buttons gelten die gleichen Klassen wie oben, sie haben jedoch Auswirkung auf den Hintergrund und lassen den Button selber im Defaultmodus:

A 06Bild A.6: Nicht der Button wird formatiert, sondern der Hintergrund.

Die CSS-Klassen für die Größenangaben können auch benutzt werden, lassen den Button aber stets auf Defaultgröße und verändern den Schriftzug oder Abbrechen. Die CSS-Klasse btn-block hat allerdings die gleichen Formatierungen wie der Default-button.

A 07Bild A.7: Der Schriftzug wird größer und kleiner.

Sie können die einzelnen Klassen natürlich nach Belieben kombinieren und so alle Effekte nutzen.

 


[1] Bootstrap ist ein Framework und enthält eine Sammlung von Hilfsmitteln für die Gestaltung von Websites. Dazu gehören auch fertige CSS-Formatierungen für Typografie, Formulare, Buttons und andere.

In der Plug-in-Liste, die Sie über das Joomla!-Pull-down-Menü erreichen (Erweiterungen/Plug-ins), finden Sie sehr viele Plug-ins mit CCK am Anfang des Namens. Alle diese Plug-ins gehören zu SEBLOD.

 

22.1        Plug-in-Übersicht

Hier finden Sie die verschiedenen Bereiche, die mit Plug-ins in SEBLOD abgedeckt werden. Dazu gehören die verschiedenen Felder, die sich wiederum in Typografie, Bestätigung, Validation und die verschiedenen Feldtypen aufteilen. Dazu gehören auch Plug-ins, die sich um den Bereich der Speicherung kümmern.

Wenn Sie eines der Plug-ins editieren, haben Sie in jedem Plug-in den Tab Erweiterte Optionen.

09 01Bild 22.1: Erweiterte Optionen in den Plug-ins.


In Gruppe können Sie einen Sprachschlüssel eintragen, der die Gruppe bezeichnet, unter der Sie das jeweilige Plug-in in den SEBLOD-Listen wiederfinden. Beispiel: Wenn Sie Ihrem Formular einen neuen Feldtyp hinzufügen, dann sind in der Liste alle Feldtypen verschiedenen Gruppen zugeordnet:

09 02Bild 22.2: Gruppenbezeichnung in den Listen.

Diese Gruppenzuordnung können Sie in den Plug-ins ändern, indem Sie einen anderen Sprachschlüssel eintragen. Sprachschlüssel deswegen, weil ja die Gruppenzuordnung in allen Sprachen passen muss. Dummerweise gibt es aber keine zentrale Sprachdatei, in der diese ganzen Schlüssel im Überblick verfasst sind. Alle Gruppen fangen mit PLG_CCK_FIELD_GROUP_ an und haben am Ende die eigentliche Gruppenbezeichnung. Eine schnelle Suche im Windows Explorer brachte 46 Treffer:

09 03

Bild 22.3: Gruppenbezeichnungen sind Fleißarbeit.

Sie können allerdings eigene Gruppennamen auch einfach in das Feld schreiben und finden anschließend diese Zuordnung in Ihren Listen wieder. Allerdings sollten Sie bestehende Plug-ins nur unter Vorbehalt ändern. Zum einen könnten Sie Schwierigkeiten haben, in diesem Buch alles wiederzufinden, da ich natürlich strikt dem Standard folge, zum anderen sind Supportanfragen eventuell erschwert, weil beim Supporten jeder vom Standard ausgeht.

Wirklich spannend wird das, wenn Sie eigene Plug-ins entwickeln und sie nach Ihrem Gusto zuordnen möchten. Wie auch immer, Sie können geänderte Plug-ins mittels des Download-Buttons exportieren und sie somit sowohl anderen leicht zur Verfügung stellen als auch in eigenen Installation wiederverwenden. Sie müssen so nicht jede Einstellung eines Plug-ins, die Sie in mehreren Installationen verwenden möchten, jedes Mal neu machen. 

 

22.2  Wo sind die Plug-ins geblieben?

Die Plug-ins, die Sie zusätzlich installieren können, haben jeweils unterschiedliche Aufgaben, und Sie sollten vor der Installation darauf achten, wofür das Plug-in ist. So finden Sie beispielsweise alle Plug-ins, die etwas mit Typografie zu tun haben, unter der Nummer 2 in den jeweiligen Ausgabeformularen; Plug-ins, die mit der Speicherung zu tun haben, finden Sie im Speicherbereich eines Feldes …

 

22.3  Verbindung zwischen Benutzer und Beitrag

Es gibt zwei Plug-ins, die eine Option namens Brücke aktivieren haben und standardmäßig deaktiviert sind. Sie finden die beiden Plug-ins, wenn Sie in der Plug-in-Übersicht von Joomla! den Typ auf cck_storage_location filtern. Die beiden Plug-ins sind:

  • CCK Speicherort – Joomla!-Benutzer
  • CCK Speicherort – Joomla!-Benutzergruppe

Wie der Typ bereits vermuten lässt, handelt es sich um das Speichern von Benutzergruppen oder Benutzern. Sie können in diesen Plug-ins noch ein paar Dinge mehr einstellen, die Sie bei den anderen Plug-ins nicht haben.

Die Brücke ist ein Verbindungsglied zwischen Joomla! und SEBLOD und hat die Aufgabe, Beiträge und Benutzer miteinander zu verbinden.

Wenn Sie Brücke aktivieren auf Ja stellen, wird in Zukunft bei jedem neuen Benutzer, den Sie anlegen oder der sich in Joomla! registriert, ein Dummy-Beitrag erstellt. In diesem Beitrag mit dem Titel »Joomla User – [ID]« wird auch der Inhalt von SEBLOD geschrieben. Im Beitragsfeld steht dann:

001

¦:cck::5::/cck::

Die zugeordnete Kategorie ist User, und der Beitrag ist veröffentlicht. SEBLOD benötigt diese Beiträge, um die angelegten Benutzer einwandfrei ihren Beiträgen zuzuordnen, damit bei Anklicken des Autorennamens das Benutzerprofil angezeigt wird. Wenn Sie viele Benutzer haben, haben Sie auch eine sehr große Anzahl eigentlich unnützer Beiträge. Da diese stets in der Beitragsübersicht zu finden sind, entsteht sehr viel unnötiger Ballast, und insbesondere wenn Sie Kundenseiten erstellen, kann das eine Zumutung für Ihren Kunden darstellen. Im Anhang finden Sie einen Link zu einem Mitgliedertutorial. Dort finden Sie eine Programmierlösung, die dieses Problem anders handhabt und die ganzen Beiträge verhindert.

Die Templates von SEBLOD unterscheiden sich an einigen Stellen gravierend vom Joomla!-Templating. Dennoch sind ein paar Parallelen vorhanden. Die Templates sind ausschließlich für die Darstellung des Inhaltsbereichs zuständig, also für den Bereich, in dem die Beiträge und andere Komponenten abgebildet werden. Die Templates greifen nur auf Inhaltstypen und/oder (Such-)Listen zu, die mit SEBLOD erstellt wurden. In diesem Kapitel werfen wir zunächst einen Blick auf die vorhandenen Templates. Dazu gehören auch die voreingestellten CSS-Dateien. Danach geht es um die Entwicklung eigener Templates.

21.1        Grundsätzlicher Aufbau

Wenn Sie im SEBLOD-Menü Template ausgewählt haben, erhalten Sie zunächst einen Überblick über die installierten Templates.

Klicken Sie oben rechts im Template Manager auf Varianten, wechseln Sie in die CSSAnsicht. Dort sehen Sie alle installierten CSS-Dateien, die Sie im Inhaltstyp auswählen können.

08 01

Bild 21.1: Zwischen den installierten Templates und den vorhandenen CSS-Dateien wechseln.

Sie können die CSS-Dateien lediglich downloaden und bei den Templates generell nur die Struktur einsehen.

In der Template-Ansicht können Sie einige wenige Einstellungen verändern, die jedoch bei bereits benutzten Templates mit einiger Vorsicht zu genießen sind. Der Versuch, dem Template einen anderen Namen zuzuweisen, schlug bei mir mit der Fehlermeldung, dass der Eintrag bereits vorhanden und ein Duplicate entry (doppelter Eintrag) nicht möglich sei, fehl. Somit sind Sie vor einem versehentlichen Überschreiben eines bestehenden Templates geschützt.

Ändern können Sie die Zuordnung Inhalt/Formular oder Liste. Das Template kann (und muss) gezielt der Ausgabe zugewiesen werden. Nicht nur das generelle Aussehen kann verändert werden, es kann auch gezielt ein Template für die Listenansicht oder für die Suchergebnisse und für den eigentlichen Inhalt angegeben werden. Damit reiht sich SEBLOD auch im Individualdesign in die Joomla!-Tradition der sehr flexiblen Layoutmöglichkeiten ein.

Sie können einem vorhandenen Template jederzeit einen anderen Titel geben. Wenn Ihnen beispielsweise das Template namens Blog nicht gefällt, geben Sie einen anderen Titel ein. Bestehende Zuweisungen verlieren nicht ihre Gültigkeit, und Sie können das Blog-Template in Zukunft an einem für Sie besseren Namen erkennen.

Standardmäßig ist ein Template dem App Ordner Core zugewiesen. Sie können das Template grundsätzlich in jeder App auswählen und benutzen. Wenn Sie jedoch ein Template für einen bestimmten Inhaltstyp erstellen, ist es für den besseren Überblick sinnvoll, das Template dieser App entsprechend zuzuweisen. Wenn Sie Ihre App downloaden, wird ein der App zugewiesenes Template automatisch mit heruntergeladen und steht nach dem Installieren in einer anderen Umgebung wieder zur Verfügung.

Mit dem On/Off-Umschalter können Sie ein Template auch deaktivieren bzw. aktivieren. Interessant kann das sein, wenn Sie an einem Template noch arbeiten möchten, aber verhindern wollen, dass etwaige Redaktionsmitglieder dieses Template bereits auswählen können.

21.2 Ein neues Template zuweisen

Unter Beschreibung können Sie einen eigenen Kommentar schreiben, vielleicht einige Besonderheiten für andere Administratoren oder wofür Sie das Template gemacht haben.

Unter Quellen sehen Sie, wie bereits erwähnt, lediglich die Struktur des Templates, die installierten Dateien und wo sie liegen. Mit den kleinen Pfeilen neben den Verzeichnissen können Sie die Unterordner einsehen, sofern vorhanden. Sie können jedoch kein Verzeichnis anklicken, um gezielt zu sehen, ob und, wenn ja, welche Dateien dort liegen. Auch können Sie an dieser Stelle leider keine Dateien editieren. Allerdings können Sie schnell überblicken, ob es Overrides in diesem Template gibt.

21.2         Ein neues Template zuweisen

Ob Sie ein eigenes Template erstellt oder ein fertiges aus dem Internet heruntergeladen[1] haben – Sie müssen es explizit in SEBLOD zuweisen. Der erste Schritt für ein neues Template ist, wie bei Joomla! üblich, der Installer bei Erweiterungen/ Erweiterungen. Nach der Installation kehren Sie in die Template-Ansicht von SEBLOD zurück und klicken oben links auf Neu. Sie kommen nun in die Detailansicht des Templates. Da Sie an dieser Stelle noch keines ausgewählt haben, ist die Strukturansicht, die Quelle, zunächst leer.

Sie müssen zunächst einen Titel vergeben und darunter, unter Name, das dazugehörige Template auswählen. Ihnen werden hier alle Templates, die Sie installiert haben, angezeigt, also auch die Joomla!-Templates, die mit SEBLOD nichts zu tun haben und dort auch nicht funktionieren. Zur Erinnerung: Joomla! benutzt ein Template, das die gesamte Webseite abbildet – SEBLOD das Template lediglich zur Anzeige des Inhalts, wozu die Ein- und Ausgabe sowie das Backend wie auch das Frontend gehören.

Nachdem Sie das frisch installierte Template ausgewählt haben, entscheiden Sie, ob das Template in allen Inhaltstypen, Listen und Suchformularen benutzbar oder auf bestimmte App Ordner eingeschränkt ist. Wie im vorigen Kapitel bereits erwähnt, können Sie ein Template stets in jedem Inhaltstyp verwenden, egal, welchem App Ordner Sie es zugewiesen haben. Es ist also zunächst lediglich eine optische Zuweisung. Wenn das Template überall gelten soll, dann ordnen Sie es dem Schnellen Ordner oder Core zu.

Der Schnelle Ordner ist eine Art Sammelbecken für alles, was nicht einwandfrei zugeordnet werden kann bzw. wird. Das ist in Ordnung, solange Sie allein damit arbeiten oder der Schnelle Ordner übersichtlich gehalten wird. Um auch noch in einigen Monaten oder gar Jahren einen schnellen Überblick über das System zu gewährleisten, ist es jedoch ratsamer, konsequent übersichtlich und transparent zu arbeiten.

Nun müssen Sie noch auswählen, um was für einen Typ es sich bei dem Template handelt. Soll es für Inhalte und Formulare gültig sein oder für Listenansichten?

Nach dem ersten Speichern wird Ihnen auch die Quellen-Ansicht angezeigt und somit die Struktur des Templates.

Wechseln Sie zu den Inhaltstypen oder Suchlisten – je nachdem, wem das neue Template zugeordnet wurde – und weisen Sie dort bei den Templates das neue Template zu.

08 04

Beachten Sie, dass Sie das Template jedem Formular zuweisen müssen, wenn Sie es in allen Formularen benutzen möchten, also in AdminForm, SiteForm, Einleitung und Inhalt.

21.3        Ein eigenes Template

Es gibt generell zwei Möglichkeiten für ein eigenes Template. Die eine ist ein komplett eigenes Template, bei dem aber ein wenig Programmieraufwand vonnöten ist, die andere Möglichkeit besteht aus Overrides in einem bestehenden Template wie beispielsweise dem Standard-Template seb_one. Zusätzlich kann eine Mischung aus beidem gemacht werden, also ein eigenes Template mit individuellen Overrides. Damit lassen sich verschiedene Varianten mit nur einem Template darstellen und unterschiedlichen Bereichen gezielt zuweisen.

In fast allen Verzeichnissen finden Sie stets eine leere index.html. Wenn Sie Overrides erstellen oder ein eigenes Template bauen, schreiben Sie diese Datei in die Verzeichnisse. Damit verhindern Sie, dass jemand den Inhalt eines Verzeichnisses auslesen kann. Denn wird das Verzeichnis im Browser aufgerufen, sieht man nur eine leere Seite – die leere index.html.

Fangen wir mit dem Standard-Template von SEBLOD an: mit dem seb_one.

21.4        Overrides im seb_one

Es gibt einige Möglichkeiten, die Ausgaben seiner Formulare mit dem seb_one zu beeinflussen. Ausgaben für die Positionen oder für einzelne Felder zur manipulieren und eigenes CSS sind natürlich auch möglich.

21.4.1    Positionen

Beginnen wir mit der Ausgabe in den Positionen. Ich erstelle zum Üben ein kleines Formular, um Buchbesprechungen zu veröffentlichen. Dazu erzeuge ich drei Felder:

  • Buchtitel, Speicherung: Standard – article – title
  • Article Category id – ich verwende das vorgegebene Kategoriefeld
  • Buchtext als Wysiwyg-Editor – Benutzerdefiniert – article – introtext

Der Buchtext wird in der Position #MAINBODY veröffentlicht, die anderen beiden Felder in der Position #TOPBODY, davon jeweils eine AdminForm und das Gleiche als Inhalt.

08 05

Bild 21.3: Eine einfache Form zur Buchbesprechung.

Ich möchte nun unter dem Titel direkt einen Werbebanner einblenden. Eine Möglichkeit wäre, eine Modulposition einzufügen und dieser Position ein Bannermodul zuzuweisen. In diesem Beispiel lege ich den Werbebanner aber mit einem Override für die Position # TOPBODY an, denn dort ist der Buchtitel veröffentlicht, und danach möchte ich den Banner abbilden.

Dafür müssen Sie im Template seb_one das Verzeichnis positions mit dem Aliasnamen Ihres Inhaltstyps erweitern und ein weiteres Verzeichnis für den Ausgabebereich erstellen. In unserem Fall sieht der komplette erweiterte Pfad dann so aus:

001

/positions/buchbesprechung/content

Den Alias Ihres Inhaltstyps finden Sie nach dem ersten Speichern in der Übersicht. Sie haben im oberen Bereich des Inhaltstyps, im Ausklappbereich, zwar die Möglichkeit, einen Alias einzutragen, jedoch hat dieser bei mir nicht funktioniert.

Da ich den Werbebanner nur im Inhalt ausgeben möchte, reicht hier als Zuweisung content, der englische Begriff für »Inhalt«.

Dort erzeuge ich nun eine neue PHP-Datei, die den Namen der Position trägt, die ich überschreiben möchte. In meinem Beispiel soll der Werbebanner unter dem Titel ausgegeben werden, der wiederum an der Position # TOPBODY steht. Also erzeuge ich eine Datei namens topbody.php. Da ich einen kompletten Override mache, muss ich hier zunächst kundtun, dass meine Felder auch gerendert werden, also der Buchtitel zur Ausgabe gebracht wird. Darunter schreibe ich die Ausgabe für den Werbe-

banner.

001

<?php

002

echo $cck->renderField('buchtitel');

003

echo "<img src=\"images/werbung/".$cck->getValue('art_catid').

".jpg\">";

004

?>

Ich habe der Einfachheit halber meinen Werbebanner mit der ID der Kategorie abgespeichert. Dazu habe ich zuvor zwei Kategorien erstellt

[ Belletristik (ID = 10) [ Sachbuch (ID = 11) und dazu einen Banner 10.jpg in das Verzeichnis images/werbung geladen. Mit

001

$cck->getValue('art_catid')

frage ich über die Kategorie-ID den Valuewert des Feldes ab und hänge diesen Wert an den Bildpfad. Dieser wird anschließend um den Dateisuffix ergänzt.

08 06

Bild 21.4: Override, um den Werbebanner an der richtigen Stelle einzufügen.

Wenn Sie mehrere Felder an einer Position haben, müssen Sie die anderen Felder auch rendern. Dadurch können Sie beliebigen Code vor, nach oder zwischen den einzelnen Feldern einfügen.

08 07Bild 21.5: Der Override im positions-Verzeichnis

Ich möchte einen Link zu meinen Google+-Profil bei den Buchbesprechungen angeben. Dafür gibt es verschiedene Lösungsansätze. Einer besteht darin, im Template des Inhaltstyps (Form: Inhalt) einzustellen, dass der Beschreibungstext angezeigt werden soll. Dazu stehen Ihnen verschiedene Methoden zur Verfügung. Im Beschreibungsfeld des Feldes buchtext habe ich mir einen Link auf mein Google+Profil gesetzt, wie in der folgenden Abbildung zu sehen ist.

Nun möchte ich das Ganze ein wenig aufhübschen und umgestalten. Eine Möglichkeit ist, direkt in der CSS-Datei von SEBLOD entsprechende Formatierungen vorzunehmen, eine andere, einen Override für die Position #MAINBODY zu machen. Dazu habe ich zunächst eine gleichnamige Datei angelegt – mainbody.php –, die ich im gleichen Verzeichnis wie die topbody.php gespeichert habe.

08 12

Bild 21.6: Beschreibungstext mit Link zum Google+-Profil.

Ich möchte meinen Beschreibungstext über dem eigentlichen Text ausgeben, weshalb ich zunächst den Beschreibungstext aufrufe und mit ein wenig CSS formatiere und erst dann das eigentliche Feld rendere:

001

<?php

002

echo "<div style='border-bottom:1px solid #000000;margin-

bottom:20px;'>".$cck->getDescription('buchtext')."</div>";

003

echo $cck->renderField('buchtext');

004

?>

Eine Linie unter meinem Beschreibungstext und ein wenig Abstand nach unten reichen mir hier. Mit $cck->getDescription(´buchtext´) rufe ich den Beschreibungstext auf.

08 16Bild 21.7: Die Ausgabe im Frontend.

 

21.4.2 Variationen

Wenn Sie viele Felder haben, könnte der Weg mit den Positionen natürlich etwas mühselig sein, da Sie jedes einzelne Feld rendern müssten. Wollen Sie hingegen einzelne Blöcke, einzelne Positionen insgesamt ausgeben und lediglich davor oder danach den Code ändern, dann haben Sie die Möglichkeit, im variations-Verzeichnis ein Override zu machen. Ich habe dort ein neues Verzeichnis namens werbung erstellt und eine gleichnamige PHP-Datei gespeichert. Der Code ist abermals recht simpel und wirkt fast identisch mit dem obigen Code bei den Positionen.

001

<?php

002

echo $content;

003

echo "<img src=\"images/werbung/".$cck->getValue('art_catid').

".jpg\">";

004

?>

Einziger Unterschied ist die erste Zeile:

001

echo $content;

Mit dieser Zeile sprechen Sie alle Felder an. Allerdings müssen Sie diese Datei explizit zuweisen. Dazu wechseln Sie in Ihre Inhaltsform und wählen unter Variation die PHPDatei aus. In meinem Beispiel heißt diese werbung.php. Wichtig ist, dass das Unterverzeichnis genau so heißt wie die PHP-Datei.

Sie erhalten nach der Auswahl ein kleines Pluszeichen. Wenn Sie es anklicken, werden Sie nichts sehen. Das können wir natürlich ändern und uns ein paar zusätzliche Einstellungen generieren. Dazu legen Sie im gleichen Verzeichnis eine Datei namens option.xml an. In dieser erstellen Sie ein fieldset mit Parameterangaben.

08 08Bild 21.8: Auswählen des Overrides unter der Variation im Inhaltstyp

 

Als Beispiel habe ich mir drei Felder gemacht. Zum einen kann ausgewählt werden, wie der Banner ausgerichtet werden soll (links, rechts oder zentriert), und die Bannergröße kann auch verändert werden. Da ich Ausrichtung und Größe optisch trennen möchte, verwende ich zwei fieldsets.

001

<?xml version="1.0" encoding="utf-8"?>

002

<form>

003

<fieldset name="banner_ausrichtung" label="Ausrichtung">

004

  <field name="ausrichtung" type="list" default="center" description="Ausrichtung des Banners" label="Ausrichtung">

005

   <option value="left">links</option>

006

   <option value="right">rechts</option>

007

   <option value="center">mittig</option>

008

   </field>

009

</fieldset>

010

  

011

<fieldset name="banner_groesse" label="Größe">

012

   <field name="breite" type="text" default="468" description="Breite des Banners angeben" label="Breite" size="50"></field>

013

   <field name="hoehe" type="text" default="60" description="Höhe des Banners angeben" label="Höhe" size="50"></field>

014

</fieldset>

015

</form>

Wenn Sie nun auf das kleine Pluszeichen klicken, erhalten Sie nachfolgendes Formular angezeigt:

08 09

Bild 21.9: Incividuelle HTML- und CSS-Angaben.

 

Um die Eingaben im eigenen Code verwenden zu können, brauchen Sie nur

$option->get(`FIELD_NAME‘)

einzugeben. FIELD_NAME müssen Sie natürlich mit dem Namen im field ersetzen. Um den Banner auszurichten und mit der gewählten Bildgröße anzuzeigen, erweitern Sie die Datei werbung.php mit nachfolgendem Code:

001

<?php

002

echo $content;

003

echo '<div style="clear:both; text-align:'.$options->get

('ausrichtung').'">';

004

echo '<img src=’.$this->baseurl.’/images/werbung/'.$cck->getValue

('art_catid'). '.jpg width='.$options->get('breite').' height=

'.$options->get('hoehe').' />';

005

echo '</div>';

006

?>

clear:both ist notwendig, weil SEBLOD im vorherigen Rendern den Buchtitel mit float:left ausgibt.

08 10Bild 21.10: Der Override im variations-Verzeichnis.

 

21.4.3 Aufgeräumter Quellcode mit eigenen Markups

Nach wie vor haben wir das Problem, dass der Quellcode, den SEBLOD erzeugt, mit vielen DIV-Verschachtelungen daherkommt. Des Rätsels Lösung, um das zu verhindern, liegt in einem Override der Felder. SEBLOD hat uns hierfür bereits eine Datei mitgegeben, die allerdings standardmäßig deaktiviert ist. Wir finden sie im Verzeichnis fields: _markup.php. Damit wir mit ihr arbeiten können, müssen Sie den Unterstrich am Anfang der Datei entfernen. Noch besser ist es, Sie kopieren die Datei, belassen die Originaldatei im Ordner und entfernen bei der Kopie den Unterstrich.

Datei mit Unterstrich

Eine Datei, die mit einem Unterstrich beginnt, ist deaktiviert. Sie kann wegen dieses vorangestellten Unterstrichs nicht ausgeführt werden.

Zunächst unterscheidet sich die Ausgabe mit dieser aktivierten Datei nicht von dem, was SEBLOD normalerweise ausgibt. Wir können jedoch diese Datei nach eigenem Gusto anpassen. Die Funktion ccMarkup_seb_one(…) kommt mit fünf Blöcken daher:

  • Computation – Bezieht sich auf Berechnungen, die Sie im Inhaltstyp bei den Nummern eingeben können.
  • Conditional – Bezieht sich auf Abhängigkeiten, die Sie unter der jeweils gleichen Nummer eingeben können.
  • $desc – Formatiert Feldbeschreibungen, wenn Sie welche angegeben haben.
  • $label – Bezieht sich auf den Titel des Feldes.
  • $html – Ist für die Ausgabe des Inhalts des Feldes zuständig.

Im einfachsten Fall belassen Sie Computation und Conditional für die Berechnungen und Abhängigkeiten und ändern die drei unteren Blöcke. Wenn Sie komplett auf DIV-Umschließungen verzichten möchten, reicht dieser Code:

001

$desc = '';

002

if ( $cck->getStyleParam( 'field_description', 0 ) ) {

003

$desc =       ( $field->description != '' ) ? $field->description :

'';

004

}

005

  

006

$label = '';

007

  if ( $options->get( 'field_label', $cck->getStyleParam(

'field_label', 1 ) ) ) {

008

   $label         =       $cck->getLabel( $field->name, true, (

$field->required ? '*' : '' ) );

009

   $label         =       ( $label != '' ) ? $label : '';

010

}

011

  

012

$html = $label.$html.$desc;

013

  

014

return $html;

In $desc und $label fragen Sie zunächst ab, ob für diese Typen überhaupt Werte existieren. Wenn ja, werden sie ausgegeben, andernfalls wird eine leere Zeichenkette erzeugt. Da Sie Inhalte ausgeben, werden Sie vermutlich immer einen Wert für $html haben. In der vorletzten Zeile setzen Sie diese einzelnen Werte einfach zusammen und geben sie mit return zurück.

Damit haben Sie einen aufgeräumten Quellcode. Sie können das natürlich auch ein wenig anpassen, damit Sie entweder eine individuelle Ausgabe formatieren oder die einzelnen Feldausgaben mit CSS-Klassen und -IDs belegen können. Um beispielsweise einfache DIVs um die Feldausgaben zu legen, können Sie nachfolgenden Code einfügen:

001

$label = '';

002

if ( $options->get( 'field_label', $cck->getStyleParam( 'field_label', 1

) ) ) {

003

$label = $cck->getLabel( $field->name, true, ( $field->required ? '*' :

'' ) );

004

$label = ( $label != '' ) ? '<div class="meine_labelklasse">.'.$label.'</div>' : '';

005

}

006

  

007

$html = '<div class="meine_feldklasse">'.$html.'</div>';

008

$html = $label.$html.$desc;

009

 

010

Return $html;

Wenn Sie sich den Quellcode Ihrer Ausgabe nach einem Browser-Refresh anschauen, dann haben Sie um Ihre Felder Ihren HTML-Code:

08 14

 

21.4.4 Verschiedene Markup-Overrides

Im vorangegangenen Kapitel haben Sie gelernt, wie Sie auf einfache Art und Weise die Ausgabe »aufräumen« können. Sie können zusätzlich auch Markup-Dateien für bestimmte Inhaltstypen erstellen. Dazu brauchen Sie nur das fields-Verzeichnis mit dem Namen des Inhaltstyps zu erweitern und die markup.php hineinzukopieren. Wenn ich beispielsweise meinen Inhaltstyp Buchbesprechung mit einer eigenen MarkupDatei ausstatten möchte, lege ich ein entsprechendes Unterverzeichnis an:

08 15Bild 21.12: Die HTML-Ausgabe für einen bestimmten Inhaltstyp anpassen.

 

Zusätzlich müssen Sie den Funktionsnamen verändern, indem Sie an das Ende den Namen des Inhaltstyps anfügen, also letztlich den Verzeichnisnamen übernehmen. In meinem Beispiel muss der Funktionsname nun so aussehen:

001

function cckMarkup_seb_one_buchbesprechung( $cck, $html, $field,

$options )

002

{ … }

Die genaue Syntax lautet: cckMarkup_[Templatename]_[Inhaltstyp]

Statt Inhaltstyp können Sie natürlich auch einen Suchtyp angeben. Diese Markup-Datei wird nur ausgeführt, wenn Sie den Inhaltstyp Buchbesprechung ausgeben.
Haben Sie mehrere Inhaltstypen, die alle das Standard-Template seb_one benutzen, können Sie so dennoch auf sehr einfache Art und Weise individuelle Ausgaben formatieren, ohne ein eigenes Template erstellen zu müssen. Da seb_one sehr viele Positionen mitbringt, ist dieser Weg vielleicht einer der besten, um SEBLOD zu individualisieren.

21.4.5 Zusammenfassung und Fazit

Der Unterschied zwischen den beiden Methoden des Overrides ist nicht nur, dass Sie mit den Variationen ganze Blöcke und bei den Positionen einzelne Felder in den jeweiligen Positionen ansprechen, sondern auch, dass Sie die Overrides in den Variationen explizit zuweisen müssen, wohingegen die Overrides in den Positionen immer ausgeführt werden. Mit den Zuweisungen der Variationen haben Sie damit zusätzliche Möglichkeiten: Einzelne Positionen in den Formularen können eine eigene Formatierung erhalten.

Das, gekoppelt mit der markup.php für das ganze Template oder bestimmte Inhaltstypen, bietet vielfältige Möglichkeiten der eigenen Template-Gestaltung mit den bereits mitgelieferten Standard-Templates.

21.5         Einstieg mit einem einfachen Template

Auf den ersten Blick sind die Templates von SEBLOD recht verwirrend und scheinen rein gar nichts mit den Joomla!-Templates gemeinsam zu haben. Bei genauer Betrachtung finden sich aber durchaus Gemeinsamkeiten. Da wir hier aber ein Template haben, das sich zum einen ausschließlich auf den Content-Bereich bezieht und es sich zudem um die Darstellung speziell von SEBLOD-Formularen handelt, sind einige Dateien und teilweise die Ordnerstruktur gravierend anders, als es von den Joomla!-Templates bekannt ist.

Um das Templating von SEBLOD-Templates zu verstehen, erstelle ich ein sehr einfaches Template.

08 02Bild21.13: Struktur für ein ganz einfaches Template.

 

Wie die Abbildung zeigt, unterscheidet sich das SEBLOD-Template in der Struktur zunächst nicht so stark von der Joomla!-Template-Struktur. Lediglich ein paar Verzeichnisse sind hinzugekommen. Allerdings brauchen Sie in diese Verzeichnisse nichts hineinzuschreiben bis auf die obligatorische leere index.html. Die benötigen Sie zum einen, um auch eigentlich leere Verzeichnisse aus der ZIP-Datei installieren zu können, aber auch als einfachen Verzeichnisschutz, damit die Dateien eines Verzeichnisses nicht einfach aufgelistet werden und somit für jeden sichtbar sind.

Wirklich wichtig sind zunächst nur die drei Dateien im Template-Root-Verzeichnis. Also:

  • index.php
  • config.php
  • templateDetails.xml

Die beiden Grafikdateien dienen als Template-Miniansicht. Die template_preview.png wird angezeigt, wenn Sie im Inhaltstyp auf den Button Positionen klicken, und template_thumbnail.png wird Ihnen angezeigt, wenn Sie im Joomla!-Backend in die Template-Ansicht wechseln (Erweiterungen/Templates/Templates).

21.5.1    Festlegen der Positionen

Wie Sie es aus den Joomla!-Templates kennen, werden auch im SEBLOD-Formular die Positionen in der templateDetails.xml bestimmt.

001

<?xml version="1.0" encoding="utf-8"?>

002

<extension type="template" version="3.3" method="upgrade">

003

<name>SEBLOD_Grundtemplate</name>

004

<creationDate>28.10.2014</creationDate>

005

<author>Axel Tüting</author>

006

<copyright>Axel Tüting</copyright>

007

<authorEmail>Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!;/authorEmail>

008

<authorUrl>www.time4mambo.de</authorUrl>

009

<version>1.0</version>

010

<description>Ein ganz einfaches SEBLOD-Template – Ein Grundgerüst mit dem Sie weiterarbeiten können</description>

011

 

012

<files>

013

   <folder>css</folder>

014

   <folder>images</folder>

015

   <folder>positions</folder>

016

   <folder>variations</folder>

017

   <folder>fields</folder>

018

   <folder>includes</folder>

019

   <folder>languages</folder>

020

    <filename>config.php</filename>

021

   <filename>index.php</filename>

022

    <filename>templateDetails.xml</filename>

023

    <filename>index.html</filename>

024

</files>

025

 

026

<languages folder="languages">

027

  <language tag="en-GB">en-GB/en-GB.tpl_seb_one.ini</language>

028

   <language tag="de-DE">de-DE/de-DE.tpl_seb_one.ini</language>

029

</languages>

030

 

031

<positions>

032

   <position>links</position>

033

   <position>rechts</position>

034

</positions>

035

 

036

</extension>

Anders als im Joomla!-Template legen Sie nicht den client fest, sondern die method= upgrade. Das SEBLOD-Template greift sowohl im Front- als auch im Backend. Im oberen Abschnitt geben Sie Informationen zum Ersteller des Templates, der vermutlich Sie sind, ein. Sie finden diese Angaben im Backend bei den Templates wieder.

Im Abschnitt files binden Sie die Verzeichnisse und deren Dateien und einzelne Dateien ein. Sie können auch Sprachdateien definieren, die Sie entsprechend einbinden. In diesem ersten Beispiel habe ich zwei Positionen definiert. Eine für links und eine für rechts. Wenn Sie dieses Template auswählen, erhalten Sie im Inhaltstyp diese beiden Positionen.

21.5.2 Damit überhaupt etwas ausgegeben wird: config.php

Die config.php können Sie aus dem bestehenden tpl_seb_one kopieren. Das Template finden Sie im Übrigen auch im Template-Verzeichnis von Joomla!.

001

<?php

002

defined( '_JEXEC' ) or die;

003

global $user;

004

$app =         JFactory::getApplication();

005

$path_lib =     JPATH_SITE.'/libraries/cck/rendering/rendering.php';

006

$user =        JCck::getUser();

007

if ( ! file_exists( $path_lib ) ) {

008

print( '/libraries/cck/rendering/rendering.php file is missing.' );

009

die;

010

}

011

require_once $path_lib;

012

?>

Zwecks besseren Lesens des Codes spare ich am Anfang die @package-Hinweise etc.

Neben dem Setzen einiger globaler Variablen sind hier die Zuweisung und die Abfrage auf das Vorhandensein der rendering.php entscheidend.

Die rendering.phprendering bedeutet frei übersetzt Ausführung – sorgt dafür, dass das gesamte Back- und Frontend überhaupt angezeigt und ausgegeben werden kann. Dazu gehört so ziemlich alles, was SEBLOD ausmacht. Wie Sie gleich sehen werden, nutzen wir die Methoden der rendering.php, weshalb es auch sehr wichtig ist, dass diese Datei eingebunden ist.

Sie sollten allerdings Änderungen nicht in dieser SEBLOD-Core-Datei vornehmen. Das können Sie an anderer Stelle besser machen. Außerdem wird beim nächsten Update die rendering.php vielleicht wieder überschrieben. Die rendering.php lädt denn auch Ihre Einstellungen und Ihre App mit allem, was dazugehört.

Sie könnten auch auf die config.php verzichten und den Code direkt an den Anfang der index.php setzen. Da aber die Möglichkeit besteht, seine eigene Rendering-Klasse zu erstellen, ist es zwecks besseren Überblicks besser, wenn Sie solcherlei in der config.php belassen. Sie folgen damit der SEBLOD-Struktur. Und da es ja auch sein kann, dass Sie Ihre Applikationen weitergeben, kann ein Nachfolger Ihre Dateien und Änderungen sauber nachvollziehen.

Ein Beispiel für eine eigene Rendering-Klasse können Sie dem kostenlosen SD Simple Simon Template[2] entnehmen. Sie benötigen hierfür allerdings vertiefte Programmierkenntnisse, was den Rahmen dieses Buches sprengen würde.

21.5.3 Die eigentliche Ausgabe: index.php

Die index.php ist die Datei, die dafür sorgt, dass unsere Felder ausgegeben werden und dass wir mit ihnen arbeiten können. Nachdem Sie die config.php eingebunden haben und somit die rendering.php ansprechen können, benutzen wir deren Methoden, um unsere Felder zur Anzeige zu bringen.

001

<?php

002

defined( '_JEXEC' ) or die;

003

require_once dirname(__FILE__).'/config.php';

004

$cck = CCK_Rendering::getInstance( $this->template );

005

if ( $cck->initialize() === false ) { return; }

006

echo $cck->renderPosition( 'links' );

007

echo $cck->renderPosition( 'rechts' );

008

?>

In $cck steht quasi unser Template als Objekt. Mit $cck->renderPosition sprechen Sie unser Template an und rufen die Methode renderPosition in der rendering.php auf. Diese Methode sorgt dafür, dass unsere Felder in unseren Positionen auch angezeigt werden.

08 03

Bild 21.14: Zwei Positionen und jeweils ein einfaches Textfeld im Inhaltstyp.

Alles, was Sie nun noch tun müssen, ist, aus den Verzeichnissen und Dateien eine ZIP-Datei zu erstellen und sie Ihren Formularen zuzuweisen.

21.5.4 Rendering-Variationen

Statt alle Positionen Ihres Templates einzeln anzusprechen, so wie ich es in dem überschaubaren Beispiel oben gemacht habe, können Sie auch eine Schleife über Ihre Positionen legen, was besonders dann sinnvoll ist, wenn Sie viele Positionen in Ihrem Template haben.

001

foreach($this->positions as $position => $fields){

002

if($cck->countFields($position)){

003

   echo $cck->renderPosition($position);

004

};

005

};

Sie können hier auch sehr gut HTML-Code mit übergeben. Um eine DIV-Klasse, um die Felder zuzuweisen, können Sie die Schleife folgendermaßen erweitern:

001

foreach($this->positions as $position => $fields){

002

if($cck->countFields($position)){

003

   echo "<div class=".trim(strtolower($position)).">";

004

   echo $cck->renderPosition($position);

005

   echo "</div>";

006

};

007

};

Sie erhalten nun ein div mit einer Klasse gleichen Namens wie die Position:

001

<div class="links">

002

<div id="cck1r_links" class="cck-pos-links seb_css3 vertical cck1rdeepest">

003

<div id="cck1r_feld_links" class="cck_forms cck_admin cck_text

 

cck_feld_links"><div id="cck1r_label_feld_links" class="cck_label cck_label_text">

004

<label for="feld_links">Feld Links</label>

005

</div>

006

<div id="cck1r_form_feld_links" class="cck_form cck_form_text">

007

<input type="text" id="feld_links" name="feld_links" value="" class="inputbox text" size="32" maxlength="255" />

008

</div>

009

</div>

 

21.5.5 Der Ordnung halber: die eigene CSS-Datei

In der Ordnerstruktur des SEBLOD-Templates gibt es auch ein Verzeichnis namens css. Es liegt nahe, dort eine CSS-Datei unterzubringen.

08 11Bild 21.15: Eigene CSS-Dateien einbinden.

Es reicht allerdings nicht, dort einfach eine CSS-Datei hineinzuschreiben – sie muss auch eingebunden werden. Das machen Sie in Ihrer index.php. Als Beispiel habe ich eine kleine CSS-Datei mit dem Namen meine.css erstellt. Ich möchte den Beitragstext links um 150 Pixel einrücken und ihn in roter Schrift ausgeben. Der CSS-Code dafür:

001

#cck5_value_buchtext {

002

padding:0 0 0 150px;

003

color:#E8143C;

004

width:500px;

005

}

In die index.php meines Templates muss ich diese Datei noch einbinden. Dazu schreibe ich folgende Zeilen an den Anfang meiner Datei:

001

$doc = JFactory::getDocument();

002

$doc->addStyleSheet( JURI::root( true ).'/templates/'.$cck->template.

'/css/'.meine.css' );

Mit getDocument ist die Datei gemeint, die im Browser ausgegeben wird. Diese wird quasi in $doc gespeichert. Mit addStyleSheet weisen Sie dieser Ausgabe Ihre CSSDatei zu.

Wenn Sie zur Laufzeit den Quelltext der Ausgabe anschauen, dann finden Sie im Header diese Zeile:

001

<link rel="stylesheet"href="/j336/templates/seb_one/css/meine.css" type="text/css" />

Übrigens gründet sich letztlich auf die Möglichkeit der eigenen CSS-Datei auch das Verzeichnis images. Wie von den Joomla!-Templates bekannt, liegen hier meistens Grafiken, die zu Layoutzwecken genutzt werden, die einfach mit relativen Pfaden von der CSS-Datei aufrufbar sind.

Wer nicht so bewandert mit den relativen Pfaden ist:

001

#beispiel {

002

Background: url(/../images/meinBild.jpg);

003

}

Da die CSS-Datei im Verzeichnis css liegt, müssen Sie zuerst mit ../ eine Verzeichnisebene zurück- und dann direkt in das images-Verzeichnis hineingehen. Um eine eigene HTML-Ausgabe des Templates zu erstellen, passen Sie die markup.php im Verzeichnis fields an.

21.6         Globale Methoden und Eigenschaften

Es gibt einige fertige Methoden und Eigenschaften, die Sie in Ihren Individualanpassungen übernehmen können. Hier eine kleine Liste mit diesen Befehlen. FELDNAME müssen Sie jeweils mit dem Alias Ihres Feldes ersetzen.

     

$cck-> Gibt Ihnen den Inhalt des Labels für das getLabel(´FELDNAME´) Feld aus.

$cck-> Gibt den Inhalt des Feldes aus. getValue(´FELDNAME´)

$cck->                 Gibt Ihnen den kompletten Code aus, der

getHTML(´FELDNAME´) erzeugt wird, wenn Sie bei den Nummern Link und Typografie auswählen und einen Link zuweisen.

Beispiel einer Ausgabe mit Typografie Fett:

<strong>Max Frisch: Stiller</strong>

     

$cck->                 Gibt Ihnen den kompletten Code aus, der

getTypo(´FELDNAME´) erzeugt wird, wenn Sie bei den Nummern Link und Typografie auswählen und eine Typografie zuweisen.

Beispiel einer Ausgabe:

<a href="/ /index.php/belletristik?id=3:maxfritsch-stiller">Max Frisch: Stiller</a>

$cck->                 Wenn Sie ein Feld haben, das Ihnen als

getText(´FELDNAME´)     Value eine ID zurückgibt, können Sie mit diesem Methodenaufruf stattdessen den zugehörigen Text ermitteln.

In einer Checkbox wird Ihnen der Text der aktivierten Checkboxen ausgegeben, genau so bei den Radiobuttons.

Beispiel:

$cck->getValue('art_catid');

//Liefert das Ergebnis: 10

$cck->getText('art_catid');

//Ergibt als Rückgabe den Kategorienamen »Belletristik«

$cck->                 Sowohl das Label als auch der Inhalt des

renderField(´FELDNAME´) Feldes (Value) werden ausgegeben. Das Label kann mit einem clear im Inhaltstyp jedoch explizit gesperrt werden. Genau so wie ein Deaktivieren der Labelausgabe in den Template-Optionen des Inhaltstyps.

$cck->getDescription    Gibt den Beschreibungstext eines Feldes

(´FELDNAME´)           aus.

$cck->id               Liefert Ihnen die ID der aktuell verwendeten Formularausgabe zurück.

Beispiel:

cck5

Diese ID wird als Präfix vor verschiedenen HTML-IDs und -Klassen benutzt:

<div id="cck5_topbody" class="cck5-deepest">

 


[1] Unter http://www.seblod.com finden Sie auch fertige Templates zum Downloaden.

[2] http://www.seblod.com/products/2315

Wenn Sie Mehrsprachigkeit auf Ihrer Seite haben und Ihren Autoren die aktuell ausgewählte Sprache als Standardwert im Feld für die Inhaltssprache übergeben wollen, werden Sie feststellen, dass sich kein Standardwert übergeben lässt. Entweder ist das Feld leer, oder es ist stets Alle ausgewählt. Mit einem kleinen Trick können Sie dennoch die aktuell ausgewählte Sprache übergeben. Im Beispiel arbeite ich mit zwei Sprachen: Deutsch und Englisch.

Zunächst müssen Sie in Joomla! die Mehrsprachigkeit einstellen, also Sprachinhalte eingeben und das Plug-in aktivieren, ebenso das Modul, damit Sie zwischen den Sprachen umschalten können.

Erstellen Sie nun zusätzlich ein einfaches Textfeld in der Seitenform Ihres Artikels. In meinem Beispiel habe ich es Länderkürzel finden genannt. Bei Speichern stellen Sie Kein ein. Wir benötigen dieses Feld lediglich zum Ermitteln der aktuell eingestellten Sprache und werten es sofort aus. Wir benötigen keine Speicherung.

Sie müssen nun Nummer 2 anklicken und Variable auswählen. In der rechten Spalte klicken Sie konfiguriere an und tragen dann im modalen Fenster lang bei Variable ein. Alles andere lassen Sie, wie es ist.

07 01

Bild 18.1: Abfrage der aktuell eingestellten Sprache.

Joomla! übergibt die aktuell eingestellte Sprache an die Variable lang. Sehen können Sie das in der URL bei deaktivierter SEO:

001

http://localhost:8080/j32/index.php?lang=de

Sie fragen den Inhalt dieser Variablen ab, und der Wert wird als Standardwert in das Feld eingetragen.

Nun wechseln Sie zur Nummer 5 und klicken beim Feld Inhaltssprache auf Hinzufügen. Sie stellen eine Abhängigkeit zum eben angelegten Feld, in dem die aktuell benutzte Sprache gespeichert ist, her. Dazu fügen Sie an erster Stelle

001

ist ausgefüllt en-GB #form# WENN Länderkürzel finden is Equal en

ein. Dabei gehe ich von den Standardeinstellungen bei den Sprachen aus. en-GB ist das Sprach-Tag. Sie müssen stets das Tag übergeben, auch dann, wenn Sie im Auswahlfeld von Inhaltssprache etwas anderes stehen haben. Bei mir steht hier:

  • Alle
  • Deutsch
  • English (UK)

Das Sprach-Tag führt aber dazu, dass die richtige Sprache im Auswahlfeld vorbelegt wird.

In der zweiten Position geben Sie

001

ist ausgefüllt de-DE #form# WENN Länderkürzel finden is Equal de

ein. Wichtig ist, dass Sie den Haken nicht in den Checkboxen setzen. Denn dann führt eine Rücküberprüfung stets zu dem Ergebnis, dass mindestens eines der Länderkürzel nicht zutrifft und somit der Inhalt gelöscht wird, was ja in unserem Fall nicht Sinn und Zweck ist.

07 01

Bild 18.2: Abhängigkeiten der Sprachvorbelegung

Nun legen Sie noch das erste Feld, Länderkürzel finden, auf Verborgen. Dennoch wird das Länderkürzel ermittelt und kann ausgewertet werden, es taucht aber im Eingabebereich der Artikelform nicht auf. Wenn nun Ihre Autoren einen neuen Beitrag schreiben möchten, erhalten sie als Vorauswahl Ihre aktuell eingestellte Sprache, die Sie nachträglich natürlich auch ändern können, wenn Sie in einer anderen Sprache schreiben möchten.

 

Die Multisites sind auf den ersten Blick sehr verwirrend, und ich selber habe einige Zeit benötigt, bis ich das Konzept verstand. Wenn aber erst einmal der berühmte Groschen gefallen ist, dann sind die Multisites mit SEBLOD eine sehr interessante Möglichkeit, entweder mehrere Domains mit einer Joomla!-Datenbank oder mehrere Aspekte einer Website auf mehrere Subdomains aufzuteilen.

Große Webseiten können beispielsweise bequem aufgeteilt werden. Angenommen, Sie haben eine große Website über Hunde, Katzen und Pferde und dazu einen Onlineshop. Statt einer Website für alles machen Sie vier Websites daraus. Eine für Hunde, eine für Katzen, eine für Pferde und eine für E-Commerce. Der Vorteil ist, dass Sie nach wie vor eine Hauptseite, eine Mastersite, haben, von der aus Sie alles verwalten, einstellen und entsprechend zuordnen, aber vier weitere Domains, Subdomains oder Aliasseiten haben, die zwar alle auf die Hauptseite verlinkt sind, aber Unterschiedliches anzeigen.

Oder Sie erstellen ein Intranet[1] und möchten ein Extranet[2] integrieren. Dann liegt es doch nahe, das sauber zu trennen.

Oder Sie haben eine Mehrsprachenseite und möchten nicht die Mehrsprachigkeit von Joomla! nutzen, sondern für jede Sprache eine eigene Domain einrichten.

Das dahinter stehende Konzept ist, dass Sie beliebig viele Domains, Subdomains oder Aliasdomains erstellen, die alle auf die Haupt-Joomla!-Installation verweisen. Das machen Sie in aller Regel in der Domainverwaltung Ihres Hosters.

07 06

Bild 20.1: Drei Subdomains, die alle auf das gleiche Verzeichnis der Hauptdomain zeigen, in dem Joomla! liegt (Auszug aus Plesk – bei Ihnen könnte die Ansicht abweichen).

Wenn Sie dann eine neue Seite in SEBLOD anlegen, werden automatisch neue Benutzergruppen und Zugriffsebenen angelegt und der jeweiligen Multisite zugeordnet. Letztlich haben Sie ein entsprechendes Rechtesystem, mit dem Sie das alles verwalten. Allerdings bietet Ihnen SEBLOD darüber eine deutlich bessere Übersicht und Verwaltung und die eine oder andere Möglichkeit mehr, die auf dem herkömmlichen Weg schwerer umzusetzen wäre. Und SEBLOD ordnet die jeweiligen Benutzergruppen und Zugriffsebenen einer eindeutigen Website zu. Das können Sie so mit Joomla! nicht umsetzen.

20.1         Einrichtung einer neuen Multisite

Rufen Sie in SEBLOD die Seiten auf. Sie erreichen diesen Bereich am einfachsten über das Konstruktion-Menü. Gehen Sie über den Komponentenaufruf, klicken Sie wahlweise links im Menü auf Seiten oder im Iconbereich auf Seiten Manager. Danach ein beherzter Klick auf Neu.

Die erste Auswahl fragt nach Basis, Standard oder Erweitert.

SEBLOD steuert die Multisites und zugehörige Beiträge, Kategorien, User, Menüs etc. über die Rechteverwaltung. Für jede einzelne Multisite werden mindestens zwei neue Benutzergruppen, zwei neue Benutzer und mindestens eine neue Zugriffsebene angelegt.

07 07

Bild 20.2: Die neuen Benutzergruppen

 

  • Basis geht davon aus, dass Sie eine relativ überschaubare Website haben, die mit einem registrierten Benutzer und einem Administrator auskommt.
  • Standard geht bereits von einer etwas komplexeren Website aus, die nicht nur einen unterschiedlichen registrierten Bereich hat, sondern auch ein eigenes öffentliches Frontend.
  • Erweitert geht von einer komplexen Website mit öffentlichem Frontend, Bereichen für registrierte Benutzer und einem Autorensystem aus. Für das Backend wird neben dem Administrator auch ein Manager angelegt.

Die eigentliche Multisite ändert sich zunächst nicht – es geht lediglich darum, dass SEBLOD Ihnen etwas Arbeit abnimmt, indem es die entsprechenden Berechtigungen für Sie voranlegt.

Sollte Ihnen im Moment noch unklar sein, was genau hier passiert – ich werde gleich die Fäden im Wirrwarr ordnen.

Doch zunächst klicken Sie auf Erstellen, nachdem Sie für den ersten Versuch Standard auswählen. Diese Auswahl ist auch voreingestellt. In der Standard-Auswahl können wir sowohl das Frontend als auch den Bereich für registrierte Benutzer direkt beeinflussen.

Der Titel ist für Sie und wird auch in der Rechteverwaltung benutzt und sollte eine konkrete Aussage über den Inhalt der Multisite machen.

Der Seiten Name hingegen wird in der Site selber benutzt und kann mit Inkludiere Seiten-Name wahlweise Vor oder Nach dem Seitentitel ausgegeben werden oder überhaupt nicht. Diese Einstellung ist identisch mit der Joomla!-Einstellung für den Seitennamen, wo Sie auch einstellen können, ob er im Browserfenster oder in den Browser-Tabs angezeigt werden soll.

Neben dem Titel finden Sie die Url. Dort geben Sie die Domain der Multisite ein.

Als Beispiel simuliere ich eine Reiseseite. Dafür habe ich drei Domains angelegt:

  • italien.domain.de
  • frankreich.domain.de
  • spanien.domain.de

 

URL-Eingabe

Lassen Sie bei der URL-Eingabe das »http://« am Anfang weg, da SEBLOD es auf jeden Fall vor die URL schreibt. Wenn Sie es dort hinschreiben, steht es zweimal am Anfang der URL, was natürlich nicht funktioniert.

Alle diese Domains – nur noch einmal zur Erinnerung – zeigen auf das gleiche Verzeichnis: die Joomla!-Installation. Wenn Sie diese Domains direkt in Ihrem Browser aufrufen würden, würden Sie also jedes Mal die gleiche Website sehen. SEBLOD legt nun seine Berechtigungen an, die alle mit dem Seitennamen enden, und kann somit diese Berechtigungen einwandfrei der in der URL angegebenen Website zuordnen. Wenn Sie nun beispielsweise einen neuen Menüverweis anlegen und eben dieser neuen Zugriffsebene zuordnen, dann haben Sie einen Menüverweis, der nur auf dieser zugeordneten Website angezeigt wird.

Sie können für diese Multisite eine eigene Meta-Beschreibung und Meta-Schlüsselworte angeben. Andernfalls wird die Metabeschreibung der Mastersite genommen. Als Mastersite bezeichne ich die eigentliche Joomla!-Installation.

  • In Homepage tragen Sie die Startseite ein. Lassen Sie die Einstellung auf Standard nutzen stehen, wird die Defaultstartseite benutzt. Oder Sie stellen eine individuelle Startseite für diese Domain ein.
  • In Sprache können Sie diese Domain, diese Multisite, einer bestimmten Sprache zuordnen, sofern Sie Mehrsprachigkeit nutzen. Auch können Sie für diese Site ein eigenes Template zuordnen.

Falls Sie jetzt denken, dass das doch sowieso alles möglich ist in Joomla!, haben Sie natürlich recht. Aber dafür müssten Sie auf jeder einzelnen Domain ein eigenes Joomla! installieren und alle einzeln administrieren. Auch können die einzelnen Domains nicht kooperieren, beispielsweise dass alle Benutzer sich überall einloggen können. In SEBLOD haben Sie nur eine einzige Datenbank und eine einzige Joomla!Installation.

Sie können zu jeder einzelnen Multisite, die Sie angelegt haben, eine eigene Seite in SEBLOD anlegen und entsprechend individuell gestalten. Aber vielleicht möchten Sie auch zwei oder mehr Multisites mit den gleichen Einstellungen in SEBLOD übernehmen. Dann können Sie in Aliases (URLs) weitere Multisites angeben, die mit den gleichen Einstellungen arbeiten wie die, die unter Url angegeben ist. Angenommen, ich trage in Url: frankreich.domain.de und unter Aliases (URLs): italien.domain.de ein, dann gelten die Einstellungen für beide Domains/Multisites, und zwar sowohl die unmittelbaren Einstellungen in dieser Eingabemaske als auch die Berechtigungen.

Zu den Feldern schreibe ich weiter unten etwas ausführlicher. Wenn Sie entsprechende Felder angelegt haben, können Sie sie hier auswählen und der Multisite explizit zuordnen.

Wenn Sie auf das kleine Benutzericon klicken, das Sie erst nach dem ersten Speichern sehen können und das Sie dann im Bereich Optionen unten rechts vorfinden, erhalten Sie ganz unten einen Überblick über die Einstellungen der einzelnen Benutzergruppen und Zugriffsebenen. Sie können diese hier ändern, indem Sie sie entsprechend auswählen. Mit Großschreibtaste und linker Maustaste können Sie mehrere Einträge markieren. Sie finden hier die standardmäßig angelegten Berechtigungen und die von SEBLOD. Wenn Sie bereits eigene Berechtigungen angelegt haben, finden Sie diese hier auch und können somit sehr individuell das Rechtesystem den einzelnen Multisites zuordnen.

07 08

Bild 20.4: Die Einstellungen der Berechtigungen für jede Multisite auf einen Blick.

20.2         Die Multi-Berechtigungen

Es wird Zeit, dass wir die neuen Berechtigungen konkret in der Praxis einsetzen, um das Prinzip zu durchleuchten.

Sie haben generell folgende Zugriffsebenen:

  • [ Öffentlich
  • [ Registriert
  • [ Administrator

In den einzelnen Bereichen können sich weitere Untergruppen, wie beispielsweise die Autoren oder Manager, befinden. Diese Hauptbereiche haben Sie generell auch in den Multisite-Berechtigungen.

Standard und Erweitert haben eine Guest Only-, eine Registered- und eine AdministratorGruppe. Erweitert hat zusätzlich den Autor und den Manager. Basis hat nur den Administrator.

Basis, Standard und Erweitert sind jeweils die Zugriffsrechte auf alle genannten Gruppen. So können Sie beispielsweise Menüs anlegen, die von allen gesehen werden können – egal ob eingeloggt oder nicht –, indem Sie die Zugriffsebene Standard setzen. Oder Sie legen Menüs an, die nur für registrierte und eingeloggte Benutzer sichtbar sind, indem Sie die Zugriffsebene Registered – Standard setzen, oder nur für Administratoren mit Administrator – Standard. Standard bezieht sich auf die Auswahl, die Sie beim Anlegen einer neuen Multisite getroffen haben. Statt des Worts Standard steht in der Zugriffsliste und den Benutzergruppen der Titel.

Dadurch, dass Sie bei jeder angelegten Multisite ein eigenes Rechtesystem nur für diese eine Site kreieren, haben Sie alle Freiheiten, Beiträge, Menüs, Kategorien und Module den einzelnen Multisites zuzuordnen.

multisites

Bild 20.5: Die Standardrechte plus eigene Rechte für jede Multisite.

Alles, was mit den Standardzugriffen von Joomla! versehen ist, wird auf allen Multisites angezeigt. Somit können Sie Daten nur für bestimmte Seiten sowie auch für alle Seiten zugänglich machen. Da Sie weiterhin eigene Gruppen definieren können, die unterschiedliche Zugriffsebenen erhalten, ist es auch möglich, dass Sie bestimmte Inhalte nur auf ausgewählten Multisites anzeigen lassen. Beispielsweise könnten Informationen über Schutzimpfungen nur auf Domains mit Reiseberichten zu relevanten Ländern auftauchen, nicht jedoch, wenn Sie von Reisezielen in Deutschland berichten.

Schauen wir uns das Ganze am besten in der Praxis an: Dazu legen wir am einfachsten einen Beitrag an, den wir danach per Kategorieblog auf unsere Startseite bringen.

Um das Ganze für meine Reiseseiten vernünftig auseinanderzuhalten, habe ich meine Subdomain für die Italien-Reiseberichte mit dem Titel Italien versehen und mir passende Kategorien angelegt: Italien, Spanien, Frankreich. Für meine Mastersite möchte ich mit der Kategorie Reisen arbeiten.

Für den Anfang schreibe ich zwei Beiträge: einen für Italien und einen für das Reisen an sich. Nun wechseln Sie bitte in das Main Menu. Der vorhandene Eintrag Home (sofern Sie ein frisch angelegtes Joomla! haben) bietet sich als Startseite für die Mastersite weiterhin an. Markieren Sie einfach den »Reisen an sich«-Beitrag als Haupteintrag.

Danach legen Sie einen neuen Menüeintrag an. Als Menüeintragstyp bietet sich das Kategorieblog in unserem ersten Beispiel an. Als Kategorie wird Italien eingestellt. Bei der Zugriffsebene wählen Sie Italien aus. Nun das Ganze speichern und im Browser sowohl die Master-Domain als auch die Italien-Domain aufrufen. Sie sehen bei der Master-Domain lediglich Home als Startseite und einen einzigen Menüverweis. Auf der Italien-Domain haben Sie neben Home auch den eben angelegten Italien-Menüverweis.

So weit – so gut, wir haben nun einen Menüverweis, der nur auf einer der beiden Domains angezeigt wird. Wenn Sie jedoch mehrere Menüverweise angelegt haben, ist es ja sinnvoll, für jede Multisite ein eigenes Startmenü festzulegen. Wenn Sie das nun tun, werden Sie zu Ihrer Verwunderung vermutlich zweimal den gleichen Menüeintrag auf der Multisite sehen: einmal in der regulären Reihenfolge des Menüs und einmal ganz oben als Startseite.

Bei der Betrachtung des Quellcodes werden Sie auch feststellen, dass es sich tatsächlich um den gleichen Menüverweis handelt, der von SEBLOD dupliziert wird. Das ist natürlich weder schön noch sinnvoll. Abhilfe schaffen Sie, wenn Sie ein eigenständiges Menü mit entsprechendem Menümodul anlegen, das Sie nur der Zugriffsebene für die Multisite zuordnen.

So habe ich ein neues Menü namens Italien erstellt und es einem gleichnamigen Modul zugewiesen, das die Zugriffsebene Italien erhalten hat. Nun wird zum einen dieses Menü tatsächlich nur und ausschließlich auf der passenden Multisite angezeigt, und Sie können auch einen Homepage-Eintrag festlegen, der nur einmal angezeigt, aber bei jedem Aufruf der Multidomain als Erstes ausgegeben wird.

Sie können nun Kategorien, Beiträge, Menüverweise, Module und Plug-ins nach Belieben Ihren Subdomains zuordnen und somit jede Website individuell gestalten. Alles läuft über eine Datenbank. Damit haben Sie auch die Möglichkeit, Ihre registrierten Benutzer den Seiten zuzuweisen. Diese müssen sich nicht mehrmals

anmelden, weil überall ein eigenes Joomla! läuft, sondern werden zentral verwaltet. Sie können einem einzelnen Benutzer eine oder mehrere Benutzergruppen zuordnen. Somit können Sie sehr individuell bestimmen, auf welchen Seiten ein Benutzer sich anmelden kann.

Ebenso verhält es sich mit Beiträgen oder Menüs. Sie können die Rechteverwaltung von Joomla! mit allen Möglichkeiten nutzen und erhalten somit mit Joomla! und SEBLOD ein mächtiges Werkzeug an die Hand.

20.3        Post von der Mastersite

Wenn Sie eine neue Multisite in SEBLOD anlegen, erhalten Sie einige E-Mails von

Ihrer Hauptdomain. Je nachdem, was Sie bei der Seitenerstellung ausgewählt haben – Basis, Standard oder Erweitert –, bekommen Sie unterschiedlich viel Post. Grundsätzlich ist immer eine E-Mail mit dem Betreff Seiten Erstellung auf [Titel Ihrer Multisite] dabei, die für den Administrator der Site gedacht ist. Zudem erhalten Sie meist mehrere E-Mails mit dem Betreff Details zum neuen Benutzer.

Alle E-Mails erhalten einen neuen Benutzernamen und ein Passwort, stets in der gleichen Art angelegt:

001

Benutzername: [Benutzergruppe].[Titel der Multisite]

002

Passwort: [Benutzergruppe]

Mit diesen Zugangsdaten können Sie sich auf der entsprechenden Site anmelden und die verschiedenen Ansichten überprüfen.

Sie können aber auch sehen, welcher Benutzergruppe der jeweilige Benutzer zugewiesen ist, falls Sie noch Zweifel über die unterschiedlichen Rollen der Benutzer haben sollten. Sie können aber natürlich jederzeit neue Benutzer anlegen, die entsprechende Rechte auf den Multisites haben.

Achtung, Passwörter!

Jemand, der SEBLOD kennt, kennt auch die standardgenerierten Zugänge von SEBLOD. Ändern Sie deshalb unbedingt die Passwörter!

 

20.4       Eigene Felder

Sie können jeder Multisite eigene Felder mitgeben, die Sie per Ajax[3]-Programmierung verarbeiten können. Wer nicht programmierkundig ist, für den gibt es auf der Produktseite von SEBLOD ein Plug-in[4] für 5 Euro, das diese Aufgabe übernimmt.

Rufen Sie zunächst die Optionen von SEBLOD auf. Sie finden sie, wenn Sie direkt auf SEBLOD 3.x in der Komponentenauswahl klicken. In den Optionen zunächst den Tab Komponente aufrufen und Entwicklungs-Speicherung auf Ja setzen. Nach dem Speichern wechseln Sie bitte in die Felder von SEBLOD.

07 10

Bild 20.6: Eigene Felder anlegen – in den Optionen die Entwicklungs-Speicherung einstellen.

Bei den Feldern habe ich ein Textfeld angelegt, in dem ich festhalten möchte, wann ich die jeweilige Multisite erstellt habe. Bei der Speicherung gilt es zu beachten, dass Sie als Formular Entwicklung auswählen und als Ort:

json[options][ein_Name_Ihrer_Wahl] eintragen. Als Beispiel:

07 11

Bild 20.7: Speichern unter Entwicklung und json.

Sie können später auf dieses Feld, das entsprechend in der Datenbank angelegt wird, mittels Json[5] und entsprechender Programmierung zugreifen.

Idealerweise setzen Sie das Feld selber auf Off (die Einstellung finden Sie oben rechts), denn dieses Feld wird in keinem Formular oder Listentyp benötigt. SEBLOD erkennt durch den Speicherort Entwicklung auch, dass es sich um ein besonderes Feld handelt.

Wechseln Sie wieder in die Optionen und rufen Sie dort den Tab Multisites auf. Sie können nun das eben angelegte Feld auswählen.

07 12

Bild 20.8: Ein Feld für die Multisites hinzufügen.

Wenn Sie wieder in die Seitenübersicht für die Multisites gehen und entweder eine bereits angelegte Multisite editieren oder eine neue anlegen, finden Sie unter Felder das soeben angelegte Feld, das Sie mit Inhalten füllen können.

 

07 13Bild 20.9: Das Feld in der Multisite.

 

Im Zweifelsfall »Text«

Eigentlich wollte ich ein Datumsfeld anlegen, was ja bei dem Inhalt auch naheliegend wäre. Aber jedes Mal, wenn ich dann die Multisite aufrief, hatte sich das Formular komplett verabschiedet und war nicht mehr benutzbar.

Ich habe nicht alle Feldtypen ausprobiert, aber falls Sie Ähnliches beobachten, liegt es am Feldtyp des neu angelegten Feldes. Ändern Sie es im Zweifelsfall auf Text, dann funktioniert es immer.

 

20.5        Mastersite?

Es gibt verschiedene Ansätze, wie Sie mit Ihren Multisites arbeiten können:

Da ist zum einen eine »große« Domain, in der alles liegt und in der der Benutzer mit einem ausgeklügelten Rechtesystem nur das sieht, was er sehen darf und soll. Das kann schnell zu Unübersichtlichkeiten führen, gerade wenn Sie eine große Site haben, in der es womöglich mehr als die Standardberechtigungen gibt.

Oder Sie arbeiten mit einer Mastersite, die Sie zur Verwaltung benutzen, die aber nicht von Benutzern besucht wird.

Wenn Sie mit einer Mastersite arbeiten möchten, dann können Sie diese Site quasi verstecken, indem Sie sie offline schalten und wirklich nur zu Verwaltungszwecken benutzen. Schalten Sie aber die Site in der Hauptkonfiguration offline, sind auch die Subdomains davon betroffen. Aber Sie können sich eine neue Multisite anlegen – Basis würde hier auch vollkommen reichen – und die URL auf sich selbst legen. Diese Seite können Sie dann offline schalten.

07 09

Bild 20.10: Die Hauptdomain Offline schalten.

SEBLOD behandelt die Hauptdomain, Ihre Mastersite, nun als eine ganz normale Multisite und schaltet folglich nur diese Site offline. Zusätzlich erhalten Sie eine neue Berechtigung und können sich einige interne Beiträge oder Module anlegen. Auf dieser Site können Sie schalten und walten und haben gute Chancen, den Überblick zu behalten, weil alles sauber zugeordnet ist.

 


[1]

[2] Das Intranet ist ein nicht öffentliches Rechnernetz, beispielsweise ein firmeninternes Netz.

Das Extranet ist Bestandteil des Intranets, aber für eine Personengruppe festgelegt. Beispielsweise könnte es sich dabei um einen Bereich für Lieferanten oder für die Führungsetage handeln.

[3] Ajax = Asynchronous JavaScript and XML

[4] Plug-in: SEBLOD Site (Multi-sites): http://www.seblod.com/products/1720

[5] JSON = JavaScript Object Notation, ein kompaktes und einfaches Datenformat

Manchmal möchten Sie vielleicht Listen in einem Beitrag ausgeben, die von dem Beitrag selber abhängen. Beispielsweise möchten Sie alle Beiträge eines Autors anzeigen. Das geht natürlich auch in SEBLOD, erfordert allerdings einige Vorüberlegungen und Bedingungen. Es funktioniert nur, wenn es sich um Beiträge handelt, und nur, wenn Sie dabei einen Wert übergeben, der in der URL steht. Ich möchte Ihnen das an einem kleinen, einfachen Beispiel veranschaulichen:

Zunächst lege ich zwei neue Kategorien an. Die eine nenne ich Autoren, die andere Beiträge. Danach wechsele ich zu Formulare & Inhaltstypen und lege zunächst einen neuen Inhaltstyp namens Autor an. Im Admin Formular lege ich ein Textfeld an, das ich als Standard – Artikel – title abspeichere, also als Beitragstitel. Dazu geselle ich das bereits fertige Feld Article Category Id, das Sie finden, wenn Sie rechts den ersten Filter auf –Article setzen. Dann wird das Kategoriefeld aufgelistet, und Sie können es in Ihr Formular hinüberziehen. Wählen Sie die Nummer 2 aus und setzen Sie als Standardwert die Kategorie Autor.

Unter der Nummer 1 setzen Sie das Feld auf Verborgen. Sie speichern dann alle neuen Beiträge zu den Autoren automatisch unter der gleichnamigen Kategorie ab, ohne dass Sie sich darüber Gedanken machen müssen. Ein versehentliches Ändern der Kategorie ist nicht möglich, da das Feld gar nicht sichtbar ist. Unter Einleitung/Intro wählen Sie das gerade angelegte Feld Autor aus und unter Inhalt ebenfalls. Hier kommt ein neues Feld hinzu: Wählen Sie im Typ das Modul aus. Als Modus setzen Sie Position, und unter Position oder Name, Titel wählen Sie die Position beziehung. Speichern und schließen Sie nun dieses Formular.

Wir benötigen ein zweites Formular. (Wobei Sie auch den vorhandenen ArticleInhaltstyp benutzen und entsprechend modifizieren können. Der Einfachheit halber und um das Prinzip zu verdeutlichen, lege ich aber einen neuen Inhaltstyp an). Für diesen Inhaltstyp benötigen wir in unserem Beispiel nur das Admin Formular. Dort legen Sie bitte zunächst ein Article-Title- und wieder ein Article Category Id-Feld an – dafür können Sie wieder die bereits vorhandenen Felder unter –Article benutzen. Dazu gesellt sich Artikel (Ähnliche), das Sie in der Gruppe Joomla! des Typs finden. Unter Kategorien wählen Sie Autoren aus. Wenn Sie das alles speichern, erhalten Sie ein Auswahlfeld Ihrer Autoren, wenn Sie neue Beiträge anlegen, vorausgesetzt, Sie haben bereits ein paar Autoren angelegt.

07 26

Bild 17.1: Beitrag, in dem die Autoren direkt ausgewählt werden können.

 

Damit wir alle Beiträge des jeweiligen Autors anzeigen lassen können, benötigen wir zunächst einen Listen & Suchtyp. Ich habe ihn Alle Beiträge in meinem Beispiel genannt. Unter dem bereits vorhandenen Feld CCK, das SEBLOD benötigt, schieben Sie bitte das vorhandene Feld mit der Autorenauswahl hinein, also das Joomla!-Artikel-Feld (Artikel (Ähnliche)), das Sie zuvor angelegt haben.

Unter der Nummer 2 – Live + Live Wert wählen Sie in der ersten Spalte Variable aus und klicken dann auf Konfigurieren. Der Typ ist ein Int, und in Variable schreiben Sie id. Alles andere lassen Sie so stehen. Weder Mehrfach noch Standard Wert oder eine Verschlüsselung benötigen wir.

Unter Liste wählen Sie in COLUMN-A das Article Title-Feld aus.

Bevor ich Ihnen die Zusammenhänge erkläre, benötigen wir ein Modul, um unsere Suchliste anzeigen zu können. Denn Sie hatten zuvor bei den Autoren ja ein ModulFeld eingebaut.

Dazu wechseln Sie bitte in die Modulübersicht von Joomla! und wählen das SEBLODModul SEBLOD-Liste aus. In Suchtyp wählen Sie die eben angelegte Suchliste aus. In meinem Beispiel ist das Alle Beiträge. In Position tragen Sie beziehung ein und veröffentlichen das Modul. Eventuell müssen Sie es unter Menüzuweisung noch Allen Seiten zuweisen.

Nun brauchen Sie noch einen Menüverweis, damit Sie die Früchte Ihrer Arbeit sehen können. Dazu wechseln Sie in das Menü und legen ein Kategorieblog auf die »Autoren« an.

Wenn Sie nun im Frontend auf das Kategorieblog der Autoren klicken, sehen Sie ein normales Blog mit Ihren Autoren. Klicken Sie einen einzelnen Autor an (Titel verlinken muss auf Ja stehen, oder Sie haben einen Weiterlesen-Button im Beitrag), sehen Sie den Autor mit all seinen bisher geschriebenen Beiträgen.

07 26Bild 17.2: Beziehungslisten in SEBLOD.

 

17.1        Beziehungs-Weise

Was genau ist passiert?

Wir haben zunächst zwei verschiedene Inhaltstypen angelegt, aber die beiden durch das Artikel (Ähnliche) miteinander verbunden. Somit gibt es im Beitragsinhaltstyp einen direkten Bezug zu den Autoren. Per Menüverweis werden die Autoren aufgerufen. Nach Anklicken eines einzelnen Autors haben Sie dessen ID in der URL stehen:

001

http://www.irgendeinedomain.de/index.php?option=com_

content&view=article&id=12:axel&catid=10&Itemid=108

Diese ID (id=12) wird im Suchtyp verwertet. Sie haben als Variable die id vom Typ Int übergeben. Int steht übrigens für Integer – einen ganzzahligen Wert. Mit dieser ID lässt sich der Autor klar und einwandfrei bestimmen, und in der Liste werden alle Beitragstitel zu dieser ID, zu diesem Autor, ausgegeben.

Die Ausgabe selber jedoch findet im Modul statt. Und die Modulposition, in der die Suchliste veröffentlicht wird, wurde zuvor im Inhaltstyp Autor zugewiesen.

Natürlich funktioniert das alles auch mit eingeschaltetem SEO. Die ganzen Variablen werden auch weiterhin vergeben – Sie sehen das lediglich nicht, da SEO die URLs anders darstellt.

Keine Ergebnisse?

Bei Autoren, die noch nichts geschrieben haben, erhalten Sie die Mitteilung, dass »keine Ergebnisse« vorliegen. Um das zu verhindern und stattdessen einfach eine leere Liste anzuzeigen, wählen Sie in Listen & Suchtypen die Konfiguration aus und stellen ganz unten unter Kein Resultat im Nachrichten-Stil Keine ein.

In der Modulübersicht von Joomla! (Erweiterungen/Module) finden Sie vier Module von SEBLOD, die Sie verwenden können. Die Module bieten teilweise sehr interessante Aspekte.

Bis auf die Breadcrumbs sind bei allen anderen Modulen die Einstellungen identisch. Auf die Joomla!-spezifischen gehe ich hier nicht näher ein, die Overrides (Live/ Variation) sind bereits im Kapitel 8 »Alle Felder« besprochen worden.

Neu ist der Tab URL Assignment. Sie können die URL prüfen und das Modul bei bestimmten Variablen verstecken bzw. anzeigen. Beispielsweise können Sie auf die gewählte Sprache prüfen, das funktioniert übrigens auch bei eingeschaltetem SEO. Geben Sie beispielsweise bei URL Assignment (Hide) lang=de ein. Wenn jemand die englische Sprache eingeschaltet hat, dann wird das Modul nicht angezeigt. Das Gleiche bei URL Assignment (Show) angegeben, und es wird angezeigt.

Eine praktischer Anwendungsfall kann sein, dass Sie eine internationale Website mit Autoren aus verschiedenen Ländern betreiben. Vielleicht haben Sie ein Eingabeformular, das in bestimmten Sprachen angezeigt werden soll, obwohl das Modul selber der Sprache nicht zugeordnet ist.

Oder das Modul soll nicht angezeigt werden, wenn der User einen bestimmten Beitrag angeklickt hat. Dann prüfen Sie die ItemID. Oder Sie möchten bestimmte

Kategorien ausschließen, was die catid wäre. Das ist auch dann interessant, wenn vielleicht kein bestimmter Menüverweis zugrunde liegt, weil Sie auf Weiterlesen geklickt haben, oder Sie haben zwei unterschiedliche Bedingungen, wie die BeitragsID und die Kategorie-ID, was nicht unbedingt immer mit der direkten Menüzuteilung funktioniert. Sie haben mit diesem URL Assignment zusätzliche Möglichkeiten, ein Modul unter bestimmten Voraussetzungen anzuzeigen oder zu verstecken.

Da Sie Module nicht nur in den dafür vorgesehenen Modulpositionen des Templates, sondern auch unter/in/über einem Beitrag mit loadposition[1] anzeigen lassen können, erhalten Sie weitere spannende Gestaltungsmöglichkeiten. Ein Beispiel dazu finden Sie im Kapitel 17 »Beziehungslisten«.

19.1 Modul: From – SEBLOD

Mit diesem Modultyp erhalten Sie das Seitenformular zum ausgewählten Inhaltstyp.

Somit können Sie statt eines Menüverweises zur Eingabe neuer Inhalte das Modul anzeigen. Zusammen mit dem URL Assignment ergeben sich da vielleicht ein paar interessante Möglichkeiten …

Bei mir klappten leider Pull-down-Felder wohl auf, aber gleich wieder zu, wenn ich die Maus in den Auswahlbereich bewegen wollte, bevor ich dort etwas auswählen konnte. Wenn Sie die linke Maustaste festhalten, können Sie diesem Effekt entgegensteuern. Eventuell sollten Sie einen freien Text mit diesem Hinweis für Ihre Autoren in das Formular eintragen, sollten Sie den gleichen Effekt bei sich auch beobachten.

 

19.2 Modul: List – SEBLOD

Mit diesem Modul zeigen Sie eine zuvor angelegte Liste an, die Sie im Suchtyp (Liste) auswählen. Wenn Sie einen Beschreibungstext für Ihre Liste eingegeben haben, haben Sie die Möglichkeit, diese Beschreibung im Modul explizit auszugeben oder die globale Einstellung zu wählen. Wenn der Beschreibungstext ausgegeben werden soll, wählen Sie, ob er über oder unter den Feldern angezeigt werden soll.

Interessant ist der »More« Link, mit dem Sie zu einem vorhandenen Menüverweis einen Link setzen können. Dieser wird am Ende der Liste angezeigt.

07 03

Bild 19.1: "More" Link am Ende der Liste.

Zu dem »More« Link können Sie eine CSS-Klasse angeben, um den Verweis individuell zu formatieren. Mit »More« Link Variables können Sie an die URL eine oder mehrere Variablen hängen. Beispielsweise können Sie so die Sprache wechseln, wenn Sie lang=en eintragen. Ist die bisherige Sprachauswahl Deutsch, wird automatisch zu Englisch gewechselt. Sie können aber auch IDs oder andere Variablen, auch mehrere, mitgeben. Wollen Sie mehrere Variablen an die URL hängen, müssen Sie ab der zweiten am Anfang ein kaufmännisches Und (&) schreiben. Beispielsweise:

43

001

lang=en

002

&catid=12

003

&itemid=5

Ob Sie in jede Zeile eine Variablendeklaration oder alles in eine Zeile schreiben, ist hingegen egal.

In Zählen geben Sie an, wie viele Datensätze in der Liste ausgegeben werden.

Die Standardsortierung ist, so denke ich, klar. Die endgültige Sortierung erscheint mir persönlich überflüssig, da tatsächlich nur eine Sortierung angezeigt wird. Wenn Sie in der endgültigen Sortierung Shuffle einstellen, werden die ausgewählten Listeneinträge jeweils in unterschiedlicher Reihenfolge dargestellt.

Damit hebeln Sie eine Einstellung bei Sortierung aus. Wählen Sie Random aus, werden die Listeneinträge stets so angezeigt, wie Sie sie in Sortierung eingestellt haben, es werden aber zufällig angezeigte Listeneinträge angezeigt. Sehen können Sie das nur, wenn Sie in Zähler eine kleinere Zahl als tatsächlich vorhandene Listeneinträge einstellen.

19.3        Modul: Search – SEBLOD

Sie können mit diesem Modul eine Suche anzeigen, die Sie angelegt haben. Wählen Sie in Suchtyp (Liste) eine Ihrer angelegten Suchen aus. Im Menüelementziel müssen Sie einen Menüverweis auswählen, mit dem Sie eine Suche oder Liste darstellen können, die das Suchergebnis nutzt.

19.4         Modul: Breadcrumbs – SEBLOD

Im Großen und Ganzen handelt es sich dabei um das Joomla!-eigene Modul für die Breadcrumbs[2]. Sie können hier noch eine CSS-Klasse angeben und haben ein paar Möglichkeiten zur Pfadgestaltung. Je nachdem, wie Sie Ihre eigenen Formulare und Listen verschachteln, kann es mit den hauseigenen Breadcrumbs eventuell nicht befriedigend enden. Das SEBLOD-Modul bietet etwas mehr Möglichkeiten.

Bild 19.2: Die verschiedenen Pfad-Einstellungen mit aktivierter »Startseite«.

Die Pfad-Einstellungen:

  • Standard (identisch mit Joomla!) – Gibt Ihnen den Pfad wie gewohnt aus.
  • Standard Legacy – Gibt Ihnen eine verkürzte Darstellung des Pfades wieder. Eventuelle Pfade zwischen der Startseite und der aktuellen Seite werden weggelassen.
  • Menü (basierend auf Itemid) – Zeigt Kategorien nicht an. In der Abbildung ist Ich bin hier! ein Beitrag, bei Apfelkuchen handelt es sich um eine Kategorie. Der Beitrag wird im Pfad angezeigt, die Kategorie nicht.

19.4.1    Ein Easteregg?

In meiner Übersetzung für das Modul taucht der Begriff »Paniermehl« auf. Ob es sich da wohl um ein Easteregg[3] handelt?

07 05Bild 19.3: Das Paniermehl-Modul

 

19.5       Module ändern

Die bestehenden Joomla!-Module können Sie nicht ändern. Sie können aber neue Listen und Formulare anlegen, die bestehende Aufgaben übernehmen, und sie nach Ihrem Gusto anlegen. Möchten Sie die neuesten Beiträge mit einem kleinen Bild und der Anzeige der zugehörigen Kategorie darstellen? Dann »bauen« Sie sich eine entsprechende Liste in SEBLOD und zeigen diese mit dem SEBLOD-Modul für Listen an. Da Sie statt der Joomla!-Beitragsmasken die von SEBLOD für neue Beiträge nutzen können, haben Sie relativ bequem die Möglichkeit, Module, die zur Anzeige von Beiträgen dienen, nach Ihren Vorstellungen zu ändern. Sie müssen lediglich den Umweg über die Listen und die SEBLOD-Vorgaben nehmen.

So können Sie nahezu jedes Joomla!-Modul neu erfinden und Ihrer Website ein unverwechselbares Aussehen geben.

 


[1] Im Beitrag in der WYSIWYG-Ansicht diesen Code eingeben: Danach ein Modul an dieser Stelle positionieren (mein_positionsname).

[2] Zu Deutsch »Brotkrumen«. Wie einst bei Hänsel und Gretel werden Brotkrumen ausgelegt, um den Weg zurück zu finden, also den Pfad vom aktuellen Inhalt zur Startseite.

[3] Als »Easteregg« werden versteckte und undokumentierte Besonderheiten in Softwareprogrammen oder Spielen bezeichnet. Meist handelt es sich dabei um witzige Merkmale oder Geheimlevels.

Christian Schuelling, viele kennen ihn als Whykiki von YouTube, war nicht der Erste, der Videos zu SEBLOD anbot, aber der Erste, der im deutschsprachigen Raum tiefer und konsequenter in die Materie einstieg und über die Einsteigervideos hinaus tiefer gehende SEBLOD-Einstellungen per Videotutorial erläuterte.

Ich freue mich sehr, dass er sich bereit erklärt hat, hier ein Gastkapitel zu übernehmen. Kiki hat sich dafür sehr umfassend mit den E-Mails beschäftigt und ein neues Kontaktformular erstellt, das deutlich mehr kann als das Joomla!-eigene. Sie können mit wenigen Anpassungen letztlich jedes x-beliebige Formular damit erstellen, das versendet werden soll.

Whykiki-Videostream

Dieses und weitere Videos von ihm, nicht nur zu SEBLOD, finden Sie auf seinem Videostream: www.youtube.com/user/ScreendesignWhykiki


Aber lassen wir ihn nun selber zu Wort kommen.


16.1        Warum ein Kontaktformular?

Wie Sie in den vorangegangenen Kapiteln bereits bemerkt haben, lassen sich mit SEBLOD beachtliche Erweiterungen für Joomla! schaffen, die auf jeden speziellen Fall zugeschnitten sind. Deshalb wird SEBLOD von vielen Entwicklern als eine Art »Eier legende Wollmilchsau« beschrieben.

Mit SEBLOD werden nämlich zahlreiche Erweiterungen, die man sich sonst installiert hätte, absolut überflüssig. Ob Galerie, Marktplatz, Newssystem oder ganz abwegige Inhaltstypen, die es so derzeit nicht als Joomla!-Komponente oder Plug-in gibt: mit SEBLOD kein Problem.

Aber auch einfachere Sachen, wie zum Beispiel ein simples Kontaktformular, sind mit SEBLOD problemlos möglich. Der Vorteil liegt dabei auf der Hand: Viele Erweiterungen erfordern einen ungleich höheren Wartungsaufwand, denn vor allem Erweiterungen sind oftmals ein Einfallstor für Hacker. Daher ist es oberstes Gebot im Rahmen von Joomla!, immer alle Erweiterungen auf dem aktuellsten Stand zu halten.

Baut man aber alles auf SEBLOD auf, so ist nur noch Joomla! und eben das Content Construction Kit zu pflegen. Ich möchte Ihnen nun an einem einfachen Beispiel zeigen, wie man mit SEBLOD ein eigenes Kontaktformular aufbaut und somit Erweiterungen, wie das bekannte dfContact oder FlexiContact, überflüssig macht.

16.1.1    Die Vorbereitung: Einrichtung

Wir bauen an dieser Stelle auf dem Wissen auf, das Sie bereits in den letzten Kapiteln erworben haben, und beginnen zuerst mit dem Erstellen eines eigenen Ordners für unsere neue Kontaktformularapplikation. Das ist sinnvoll, weil Sie dann alle Inhalte für jede Applikation in einem eigenen Ordner gespeichert haben. Sie sollten sich bei der Arbeit mit SEBLOD, schon allein der Übersichtlichkeit halber, immer angewöhnen, alles genau durchzustrukturieren.

Klicken Sie auf App Ordner und legen Sie dort einen neuen Ordner mit dem Namen Kontaktformular an.

Achten Sie darauf, dass Sie den Ordner als 1. Ebene der App festlegen, außer Sie möchten das Kontaktformular im Rahmen mehrerer Applikationen nutzen. Setzen Sie zudem den Haupteintrag auf Ja, somit können Sie den angelegten Ordner als Grundlage für Ihr neues Kontaktformular benutzen.

Wählen Sie nun eine Farbe, um den Ordner eindeutig zu kennzeichnen, sowie eine Zeichenfolge und eine Farbe für den darin befindlichen Text. Zudem können Sie ein eigenes Symbol für den Ordner festlegen, das jedoch bereits auf dem Server liegen sollte.

Wählen Sie bei Elemente alle vier Typen aus, auch wenn Sie sie aktuell eigentlich gar nicht alle brauchen. Somit erhalten Sie sich jedoch die Freiheit dem Ordner, später andere, jetzt vielleicht noch nicht absehbare Elemente hinzufügen zu können.

 Screenshot 1Bild 16.1: Optionen beim Erstellen des Ordners.

Nun erstellen wir die Felder, die wir für unser Kontaktformular benötigen. Hierbei handelt es sich um die Felder, die der Kunde zur Eingabe in unser Formular benötigt, und die Felder, die wir im Hintergrund benötigen, um unser Formular zu nutzen. Werfen wir erst einmal einen Blick auf das Formular und darauf, welche Felder in der Eingabemaske vorhanden sein müssen.

Screenshot 2

Bild 16.2: Die Felder und das Kontaktformular (Site Form) im Frontend.

Wie Sie auf der Abbildung erkennen, haben wir in unserem Beispiel insgesamt acht Felder angelegt, die wir für unser Formular benötigen. Selbstverständlich haben Sie an dieser Stelle die Möglichkeit, bei Bedarf weitere Felder hinzuzufügen oder deutlich weniger Felder einzubauen.

Optional können Sie sogar Anhänge weiterleiten, worauf wir an späterer Stelle noch einmal zurückkommen wollen. Aus unserem Kontaktformular lässt sich nämlich auch problemlos eine Beschwerdedatenbank einrichten.

Wir belassen es für den Anfang aber bei einem recht einfachen Aufbau und wollen dem Besucher unserer Seite die Möglichkeit geben, mit uns in Kontakt zu treten. Dafür benötigen wir an dieser Stelle seinen Namen, seine Mailadresse, seine Adresse (optional), seine Telefonnummer sowie die Art seines Anliegens und einen Text, den uns der Nutzer hinterlassen kann.

All diese Felder werden uns nun per Mail übermittelt, und wir können ganz gezielt auf das Anliegen unseres Kunden reagieren.

Bis auf Feld 5, Kunde Mailfunktion, und Feld 3, Kunde Anliegen, handelt es sich bei allen weiteren Feldern um simple Textfelder bzw. einen Textbereich.

Der Unterschied zwischen Text und Textbereich liegt darin, dass Sie bei Ersterem nur die Möglichkeit haben, eine Zeile zu hinterlassen, bei einem Textbereich jedoch mehrzeilige Inhalte übertragen können, wie zum Beispiel einen kurzen Text.

Erstellen Sie also erst einmal insgesamt sechs Felder vom Typ Text und eines vom Typ Textbereich jeweils mit einem aussagekräftigen Titel, der es Ihnen auch später bei großen und komplexen Formularen erlaubt, den Überblick zu behalten.

Wählen Sie dafür bei dem Feld als App Ordner den zuvor erstellten Ordner aus, den wir zu Beginn dieses Kapitels erzeugt haben.

Das Feld Name wird automatisch befüllt und ist ähnlich wie der bekannte Joomla!Alias zu betrachten. Wichtig ist hierbei, dass wir diesen Namen später auch benötigen, um unsere Felder gezielt anzusprechen. Beachten Sie, dass Sie das Feld Name bei Bedarf auch manuell ausfüllen können.

Auf dem zuvor gezeigten Screenshot habe ich Ihnen eine Zuordnung der Felder zu den jeweiligen Feldern im Frontend gezeigt. Darauf sehen Sie auch jeweils den Feld Namen oder den Alias des Feldes, der kleingeschrieben unter dem Titel zu finden ist.

Ich erwähne das an dieser Stelle noch einmal explizit, weil die Feldnamen absolut wichtig sind für die Arbeit mit unserem Kontaktformular und für die Arbeit mit SEBLOD allgemein.

Nun können Sie eine Bezeichnung für Ihr Feld festlegen. Dabei handelt es sich um das sogenannte Label, das der Kunde später als Auszeichnung des Formularfeldes sieht.

Bei Standard Wert können Sie einen Wert bzw. einen Text festlegen, der schon als Inhalt im Textfeld zu finden ist und der dann vom Kunden überschrieben werden müsste. Natürlich handelt es sich bei diesem Wert auch um den Wert, der per Mail übertragen wird, wenn der Kunde nichts anderes einträgt. Wir verzichten an dieser Stelle auf das Eintragen eines Standardwertes und lassen das Feld frei.

Die Mindest- und Maximallänge beim Erstellen des Textfeldes bezieht sich jeweils auf die Menge der Ziffern oder Buchstaben, mit denen das Feld befüllt werden kann. Es ist vollkommen in Ordnung, wenn Sie das auf der Standardeinstellung belassen.

Nur wenn Sie sich sicher sind, wie zum Beispiel bei einem Feld Postleitzahl, das erwartungsgemäß nie mit mehr als fünf Ziffern befüllt wird, würde ich dazu raten, einen kleineren Wert einzutragen.

Befüllt der Kunde das Feld mit mehr Zeichen hintereinander, wird eine Fehlermeldung

ausgegeben.

Die Größe gibt an, wie breit das Feld im Formular auf der Webseite dargestellt wird. Wir haben später natürlich auch noch die Möglichkeit, via CSS darauf zuzugreifen und das Feld designtechnisch zu formatieren.

Zuletzt müssen Sie sich entscheiden, wo der Inhalt des Feldes gespeichert werden soll. Da es sich um ein simples Kontaktformular handelt, dessen Inhalt uns bereits per Mail zugestellt wird, verzichten wir an dieser Stelle darauf, seine Inhalte auch in der Datenbank abzulegen. Wählen Sie deshalb bei Format/Position Kein als Speichermethode aus. Vor allem wenn viele Kontaktanfragen zu erwarten sind, ist diese Einstellung sinnvoll, weil wir es so vermeiden, dass unsere Datenbank und unser Joomla!-System mit zahllosen Anfragen gefüllt werden.

Denken wir an dieser Stelle schon einen Schritt weiter Richtung »Beschwerdedatenbank«, ist es sinnvoll, den Inhalt der Felder in der Datenbank abzulegen. Aber dazu später mehr.

Ähnlich verhalten sich die Einstellungen beim Feldtyp Textbereich. Wir erstellen also zuerst ein neues Feld, vergeben den Namen Kunde Nachricht und speichern es im Ordner Kontaktformular. Wir geben dem Feld eine Bezeichnung/ein Label und verzichten wieder auf einen Standard Wert.

Die Anzahl der Spalten dient dem Einstellen der Breite des Textfeldes, die Reihen dienen dem Ausrichten der Höhe. Um es zu verdeutlichen: Bei einem Feld vom Typ Textbereich handelt es sich um eine aus HTML bekannte Textarea.

Die Mindest- und Maximallänge gibt an dieser Stelle an, wie viele Zeichen man hintereinander schreiben kann, bevor man eine Fehlermeldung erhält.

Um Ihre Mail später ein bisschen aufzuräumen, stehen Ihnen unter Prozesse einige Möglichkeiten zur Verfügung. Sie können hier einstellen, wie Zeilenumbrüche im Textfeld per Mail übergeben werden.

Sie haben einfache Zeilenumbrüche und Abstände zur Verfügung sowie verschachtelte Zeilenumbrüche. In der Mail würden die Zeilen via HTML mit

001

<br />

oder

001

<p></p>

umbrochen. Auch der Textbereich soll natürlich nicht in der Datenbank gespeichert werden, und wählen wir als Format/Position wieder Kein aus.

Als kleine Besonderheit bauen wir in unser Formular eine Drop-down-Auswahl ein, in der man die Art seines Anliegens auswählen kann. Das macht es später einfacher, das Anliegen zuzuordnen und zu bearbeiten. Dazu erstellen wir ein Feld vom Typ Wählen: Einfach (Simple). Hierbei handelt es sich um ein Auswahlfeld, in dem der Kunde eine aus mehreren Möglichkeiten auswählen darf. Selbstverständlich können Sie an dieser Stelle auch eine Mehrfachauswahl einsetzen, die Sie unter Wähle: Mehrere finden.

Wir erstellen verschiedene Auswahloptionen, wie Beschwerde, Lob, Preisanfrage, Kontakt.

Optional lassen sich einfache Texte eintragen, die Sie auch mit Werten verknüpfen können. Schreiben Sie beispielsweise Beschwerde=1. Wird an dieser Stelle vom Kunden Beschwerde ausgewählt, wird per Mail der Wert 1 übermittelt. Die Übergabe von Werten hat dann Sinn, wenn Sie die Felder auswerten und damit gegebenenfalls weitere Felder triggern oder wenn man mit den Werten (zum Beispiel in einer Datenbank) weiterarbeitet.

Im nachfolgenden Bild finden Sie noch einmal eine Übersicht der Felder, die wir erstellt haben.

Zu sehen sind die Feld Namen, die Feld Titel, der Typ, die Speicherung und vieles mehr. Diese Ansicht ist immer dann sinnvoll, wenn Sie sich noch einmal einen Überblick über alle Felder Ihrer App verschaffen möchten. Stellen Sie dazu die Filterung bei Felder auf Ihren App Ordner ein, um nur die Felder Ihrer App anzuzeigen. Da Sie mit dem Feld Namen später weiterarbeiten und die korrekte Schreibweise sehr wichtig ist, können Sie sicherheitshalber alle Feld Namen noch einmal in der Übersicht abgleichen oder gegebenenfalls sogar per Copy-and-paste nutzen.

Screenshot 3

Bild 16.3: Übersicht aller Felder mit Feld Name, Feld Typ, Feld Titel und Speicherort.

 

16.1.2    Erstellen der Mailfunktion

Nun kommen wir endlich zum Herzstück unseres Kontaktformulars, denn alle Felder haben wenig Sinn, wenn sie nicht auch per Mail an uns übertragen werden, um auf das Anliegen des Kunden eingehen zu können.

Auch dafür gibt es in SEBLOD bereits ein vordefiniertes Feld, das eine Mailfunktion beinhaltet. Natürlich ist es unabdingbar, dass wir auch diese Mailfunktion erst konfigurieren und unseren Wünschen anpassen.

Erstellen Sie also ein neues Feld, benennen Sie den Titel mit Kunde Mailfunktion und vergeben Sie natürlich auch einen aussagekräftigen Alias, wenn Sie nicht auf den automatisch generierten Alias bzw. Namen zurückgreifen möchten. Wählen Sie als App Ordner wieder den bereits erstellten Ordner des Kontaktformulars aus und wählen Sie den Typ Email aus der Hauptgruppe Formular.

Es stehen Ihnen zahlreiche Optionen zur Verfügung, die auf den ersten Blick etwas verwirrend wirken. Aber keine Sorge, wir gehen auf alle diese Punkte ein.

16.1.3    Feldtyp Email

Wie bei allen anderen Feldtypen ist auch beim Typ Email die Konstruktion das A und O. Hier legen wir eindeutig fest, wie unser Feld bearbeitet wird bzw. welche Funktionen es hat.

Wir vergeben zuerst eine Bezeichnung, die an dieser Stelle jedoch nicht so wichtig ist. Es handelt sich um das sogenannte Label. Da die Mailfunktion für den User später jedoch auf unsichtbar geschaltet wird, ist eigentlich auch das Label egal. Denken Sie jedoch daran, dass Sie trotzdem stringent und sinnvoll benennen sollten, auch wenn man darauf verzichten könnte. Wie schon zuvor erwähnt, werden Sie sich vor allem bei komplexen Formularen freuen, wenn Sie nach monatelanger Untätigkeit an diesem Formular wieder hineinschauen und alles sauber benannt haben.

Bevor ich Ihnen weitere Details erkläre, schauen Sie sich erst einmal den nachfolgenden Screenshot an, damit Sie einen Überblick darüber bekommen, welche Optionen Ihnen an dieser Stelle zur Verfügung stehen.

Screenshot 4

Bild 16.4: Der Feldtyp Email im Überblick.

Nachdem Sie eine Bezeichnung festgelegt haben, müssen Sie entscheiden, wie und wann die Mail versendet wird. Dazu stehen Ihnen unter Schicke E-Mail insgesamt vier verschiedene Optionen zur Verfügung, die ich Ihnen kurz erläutern möchte. Bedenken Sie: Die Mailfunktion dient nicht nur der Erstellung simpler Kontaktformulare, sondern wird auch benutzt, um das Redaktionssystem zu steuern.

SEBLOD arbeitet in den meisten Fällen auf Artikelbasis, das heißt, dass üblicherweise auch ein Artikel erstellt wird. In unserem Fall verzichten wir darauf jedoch. Trotzdem ist es wichtig, sich dies ins Gedächtnis zu rufen, denn nur dann haben die vier folgenden Auswahloptionen tatsächlich Sinn.

  • Niemals (Never): Es wird in keinem Fall eine Mail verschickt, auch nicht, wenn ein neuer Artikel erstellt wird.
  • Einreichen (Submission): Eine Mail wird versendet, wenn der User einen neuen Artikel erstellt bzw. einreicht. Diese Funktion ist auch bei unserem Formular sinnvoll, denn nun wird in jedem Fall eine Mail versendet, wenn der User das Formular mit dem Sende-Button verschickt.
  • Edition (Edition): Bei Edition wird immer dann eine Mail versendet, wenn ein Beitrag editiert wird. Dies hat im Fall unseres Formulars jedoch keinen Sinn.
  • Immer (Always): Immer erklärt sich von selbst. Es wird immer eine Mail versendet, egal ob man einen Artikel editiert, neu erstellt etc. Auch diese Möglichkeit können wir für unser Formular benutzen.

Zusätzlich finden Sie dahinter eine Eingabemöglichkeit, in der Sie einen Feldnamen hinterlegen können. Benötigt wird das für unser simples Formular nicht. Jedoch möchte ich es nicht unerwähnt lassen. Dieses Feld dient der dynamischen Weiterleitung unserer Mail.

Sie können einen Feldnamen eintragen, und in diesem Feld muss eine Nummer/ein Integer übergeben werden. Dabei steht:

  • Never/Niemals = 0
  • Submission/Einreichen = 1
  • Edition = 2
  • Always/Immer = 3

Sie müssen also in diesem Feld immer eine Nummer hinterlegen, die dafür sorgt, dass eine Sendemethode gewählt wird.

16.1.4     Absender des Formulars festlegen

Im nächsten Schritt legen wir den Absender des Mailformulars fest. Dazu stehen Ihnen insgesamt drei Auswahlmöglichkeiten zur Verfügung.

  • Standard: Als Absender-E-Mail-Adresse wird die Adresse genommen, die Sie in der Joomla!-Konfiguration hinterlegt haben. Sie können sie unter System/Konfiguration/Server im Register Mailing selbst verändern.
  • E-Mail: Sie können die Mailadresse im Format Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! selbst eingeben. Dies ist sicherlich die einfachste Variante.
  • Feld (Formular): Hier haben Sie die Möglichkeit, eine Mailadresse aus einem Feld auszulesen. Haben Sie zuvor zum Beispiel ein Feld definiert, in dem der User seine Mailadresse eingeben muss, können Sie hier den Namen des Feldes eintragen, und Sie bekommen die Kontaktmail von der Mailadresse des Kunden geschickt.

Beispiel:

Der Kunde trägt seine Mailadresse in das Feld kunde_mail ein, und Sie nutzen diese eingegebene Adresse, um sie per Formular direkt zu übermitteln.

    Feldtyp »Text« -> Feldname »kunde_email«

   Feldtyp »Email« -> Einstellungen -> »Von« Feld (Formular) : kunde_email

Bitte beachten Sie, dass der Mailversand natürlich über Ihren Server läuft und die Joomla!-interne Mailingfunktion genutzt wird. Der Mailversand läuft also nicht über den Computer des Kunden.

Ein Vorteil dieser Methode ist unter anderem, dass Sie in Ihrem Mailprogramm direkt auf die Kontaktmail des Kunden antworten können, ohne zuvor seine Mailadresse noch einmal gesondert zu erfassen.

Ähnlich arbeitet Absender, hierbei handelt es sich schlicht um den angezeigten Namen, der Ihnen per Formular übermittelt wird. Auch die Optionen sind recht ähnlich:

  • Standard: Als Name wird der Name verwendet, den Sie in der Joomla!-Konfiguration hinterlegt haben. Sie können ihn unter System/Konfiguration – Server im Register Mailing selbst verändern.
  • Name: Sie können an dieser Stelle selber einen Namen vergeben, z. B. »Webseite XY Kontaktmailer«. Somit können Sie Mails in Ihren Mailprogrammen ganz genau dem Absender zuordnen und sie danach sortieren lassen.
  • Feld (Formular): Wie bei Von haben Sie hier die Möglichkeit, den Namen aus einem Feld auszulesen. Eine ausführliche Erklärung dazu habe ich Ihnen ja schon beim vorangegangenen Feld geliefert. Beide sind deckungsgleich.
  • Kommen wir zum Objekt, bei dem es sich um nichts anderes handelt als den Betreff. Hier haben Sie wiederum die Möglichkeit selbst, einen statischen Text einzugeben, Sie können aber auch den Inhalt eines einzelnen Feldes auslesen. Hierbei muss beachtet werden, dass der Feldname in Rauten (#) gesetzt wird. Wollen wir das Feld Kunde Anliegen als Betreff übermitteln, muss bei Objekt #kunde_anliegen# eingetragen werden.

 

16.1.5    Das Feintuning

So langsam kommen wir ans Eingemachte. Daher will ich Ihnen vorab noch einmal ein Bild an die Hand geben, denn tatsächlich sind die nachfolgenden Optionen etwas willkürlich verteilt, sodass teilweise falsche Eindrücke entstehen könnten.

Screenshot 5

Bild 16.5: Das Feintuning des Mailfeldes.

Bisher haben wir jeweils zur Auswahl auf der linken Seite eine Entsprechung auf der rechten Seite finden können. Nun aber ist der Inhalt ein wenig durchmischt. Das hängt vor allem damit zusammen, dass uns SEBLOD nun mehrere Möglichkeiten bietet, an wen die Mail verschickt werden soll.

Es ist wichtig, dass die Mail tatsächlich an alle Empfänger verschickt werden kann. Sie können also problemlos alle An-Felder befüllen. Sie haben dabei die Wahl, die Mailadresse direkt statisch als Text einzugeben, sie an eine Mailadresse zu senden, die Sie via Feld abgreifen, oder sogar an diverse hinterlegte Administratoren. Wir bleiben also erst einmal auf der rechten Seite des Fensters und schauen uns die verschiedenen Optionen an.

Im Feld An haben Sie die Möglichkeit, statisch Mailadressen einzutragen. Die Mailadressen werden dabei nach der üblichen Schreibweise eingetragen, Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!, und Sie können mehrere Mailadressen durch Kommata trennen.

Bei An (Felder) können Sie verschiedene Felder, ebenfalls durch Kommata getrennt, eingeben. Hier werden dann die Mailadressen aus den Feldern ausgelesen. Das ist zum Beispiel dann sinnvoll, wenn man das Kontaktformular zur Bestätigung noch einmal an den Kunden senden möchte.

Sehr eindeutig ist die letzte Option An (administratoren). In dem nebenstehenden Feld werden Ihnen alle Administratoren aus der Benutzerverwaltung angezeigt. Per Klick können Sie auswählen, welchem Administrator eine Mail geschickt werden soll. Eine Mehrfachauswahl ist natürlich möglich.

Die Mailadresse der einzelnen Administratoren ändern Sie problemlos in der Joomla!internen Nutzerverwaltung.

Bevor wir uns mit dem eigentlichen Inhalt, der sogenannten Nachricht oder Message, befassen, wollen wir uns die restlichen Einstellungen ansehen, die von Relevanz sein können.

Da ist zum einen der Anhang. Kunden haben die Möglichkeit, über das Feld Schicke Anhang (Feld), auch Attachment genannt, Anhänge an uns zu übermitteln.

Dabei haben wir die Auswahl, entweder mehrere Felder zu übertragen, siehe auf der rechten Seite Anhang (Felder), oder nur ein einzelnes Feld.

Anhänge können Grafiken, Dokumente und vieles mehr sein. Beachten Sie, dass die Mailfunktion nach wie vor von Joomla! bzw. Ihrem Server bereitgestellt wird. Je nach Größe des Dateianhangs kann das also zu Problemen führen. Bei Time-outs empfiehlt sich ein Anruf bei Ihrem Hoster.

Die Felder Kopie an und Blindkopie an dürften Ihnen bekannt sein. Sie haben an dieser Stelle die Möglichkeit, die Mail per Kopie oder Blindkopie an weitere Empfänger zu versenden. Sie haben wiederum drei Auswahlmöglichkeiten, die ich Ihnen bereits erläutert habe. Dazu zählen Kein, E-Mail und Feld (Formular). Sie können also dort entweder eine feste, statische Mailadresse eintragen oder die Mailadresse aus einem vordefinierten Feld auslesen.

Kurzer Zwischenruf

Auch wenn ich mich an dieser Stelle wiederhole, aber vergessen Sie nicht, dass die Mailfunktion für mehr gedacht ist als »nur« für ein einfaches Kontaktformular. Sie können mit den vorhandenen Feldern und Möglichkeiten Benachrichtigungen für nahezu jeden Fall erstellen, ob Sie dem Administrator eine Meldung schicken wollen, wenn jemand ein neues Bild in eine Galerie eingefügt hat, oder ob ein User eine neue Beschwerde in die Datenbank eingereicht hat. Sie können sogar einen kleinen Onlineshop realisieren und zum Beispiel eine Mail versenden, wenn der Artikelbestand weniger als zehn Artikel beträgt. Sie sehen, es gibt unzählige Möglichkeiten, und wir behandeln nur eine davon.

Ich empfinde diesen Hinweis als sehr wichtig, denn erst dann haben die zahlreichen Felder und ihre Möglichkeiten innerhalb der Mailfunktion auch wirklich Sinn.

16.1.6     Das Erstellen der E-Mail-Nachricht

Kommen wir nun zur Essenz unseres Formulars. Wir haben uns vor allem den Grundlagen gewidmet, Felder erstellt und dafür gesorgt, dass die Inhalte unseres Formulars auch versendet werden. Am wichtigsten ist jedoch, dass wir einen Inhalt übermitteln. Sonst hat die ganze Übung ja keinen Sinn. Daher wollen wir uns nun ganz ausführlich den beiden letzten, offenen Eingabemöglichkeiten widmen:

  • Nachricht (Feld) – In diesem Bereich haben Sie die Möglichkeit, ein einzelnes Feld festzulegen, das übermittelt wird. Dies kann zum Beispiel auch eine Gruppe sein. Außerdem können Sie durch die Eingabe von [fields] alle Felder des Formulars gesammelt rendern.
  • Nachricht (Editor) – Während Nachricht (Feld) vor allem den Inhalt einzelner Felder bzw. alle Felder unformatiert rendert, haben Sie bei Nachricht (Editor) deutlich tiefer greifende Möglichkeiten. Über den Editor können Sie den Inhalt der Mail Ihren Wünschen anpassen. Dabei handelt es sich um eine Version des Ihnen bereits bekannten Tiny Editors, der standardmäßig bei Joomla! dabei ist. Sollten Sie im Backend für Ihren User einen anderen Editor ausgewählt haben, so wird dieser hier angezeigt. Sie haben aber in den SEBLOD-Optionen jederzeit die Möglichkeit, auf einen anderen Editor umzustellen, vorausgesetzt natürlich, dass Sie einen weiteren Editor installiert haben.

Bei der Erstellung des Mailtextes stehen uns diverse Möglichkeiten zur Verfügung. So können Sie mit dem Editor beispielsweise PHP-Code ausführen und sich über die PHP-Date-Funktion das Sendedatum ausgeben lassen. Dies ist nur ein Beispiel, PHP lässt sich hier vortrefflich einsetzen, um noch weit mehr Informationen zu übergeben.

Zudem können Sie auf Joomla!-eigene Werte zugreifen, wie z. B. den Seitennamen [sitename] oder die Seiten-URL [siteurl]. Die Werte können auch via PHP ausgelesen und genutzt werden. Es gibt eine Liste mit nutzbaren Parametern[1]. Dort finden Sie weitere Informationen zu den Konfigurationswerten. Unglücklicherweise findet sich jedoch derzeit keine Liste mit allen nutzbaren Joomla!-Werten.

Neben der Nutzung von PHP-Code oder internen Werten steht Ihnen aber auch die Möglichkeit zur Verfügung, auf SEBLOD-Werte zuzugreifen. Sie können somit z. B. das Label/die Bezeichnung eines Feldes, seinen Wert oder viele weitere Attribute auslesen. Der Aufruf erfolgt dabei jeweils über folgenden Code:

001

$cck->getAttribut('fieldname');

Dabei müssen Sie Attribut durch den Namen des jeweiligen Attributs ersetzen. Wollen Sie also zum Beispiel das Label eines bestimmten Feldes auslesen, müssen Sie den Code anpassen:

001

$cck->getLabel('name_ihres_feldes');

Sie haben so die Möglichkeit, auch Werte auszulesen, die sich nicht direkt auf den Inhalt des Feldes beziehen. Das mag für unser Kontaktformular nun wenig Sinn haben. Es gibt aber bei komplexeren Formularen oder Anwendungen durchaus vielfältig Möglichkeiten, diese Werte sinnvoll zu nutzen.

Zu guter Letzt will ich Ihnen an dieser Stelle noch eine Möglichkeit zeigen, wie Sie die Werte der Felder auslesen und per Mail sauber formatiert ausgeben. Sicherlich ist das an dieser Stelle der wichtigste und auch interessanteste Weg, den Inhalt seiner Mail zu befüllen. Wie Sie schon in den vorangegangenen Abschnitten gemerkt haben, ließen sich auch einfach alle Felder oder ein einzelnes Feld unformatiert auslesen und versenden.

Wollen Sie nun aber eine sauber strukturierte Mail erhalten, müssen Sie den Editor mit einem bestimmten Format füttern.

Einzelne Felder lesen Sie aus, indem Sie den Namen der Felder mit zwei Rauten »einkleiden«. Sie können sich die Rauten wie ein öffnendes und ein schließendes Tag aus dem HTML-Bereich vorstellen. Felder werden also innerhalb des Editors immer in folgendem Format ausgelesen: #name_des_feldes#.

Nicht zu vergessen ist jedoch, dass Sie natürlich auch statischen Text nutzen können, um den Text unserer Mail ansprechend zu gestalten. Im Folgenden möchte ich Ihnen einen Beispieltext vorstellen, den ich Ihnen nachstehend genauer erklären werde.

16.1.7    Der Inhalt im Detail

Mailinhalt im Editor:

001

Sehr geehrter [admin],

002

Sie haben eine Nachricht der Webseite [sitename] erhalten. Der Kunde #kunde_name# möchte Kontakt zu Ihnen aufnehmen. Er hat folgendes

Anliegen #kunde_anliegen#.

003

Der Kunde hat Ihnen folgende Nachricht hinterlassen:

004

#kunde_nachricht#

005

Kontaktdaten des Kunden:

006

Name: #kunde_name#

Adresse, Ort: #kunde_adresse1#, #kunde_adresse2#

Telefonnummer des Kunden: #kunde_telefon#

Mail des Kunden: #kunde_email#

007

Bitte setzen Sie sich umgehend mit dem Kunden in Verbindung.

Screenshot 6

Bild 16.6: Der Inhalt der Mail im Editor.

Sie haben nun eine Mischung diverser verschiedener Werte und Texte vorgenommen. Sie starten mit einem statischen Text und dem Aufruf des Joomla!-Parameters für den Namen des Admins. Dieser wird die Mail gesendet bekommen, wir sprechen ihn somit direkt an. In den folgenden Zeilen teilen wir ihm mit, dass er eine Mail der Webseite bekommen hat. Den Namen der Webseite lesen wir wieder aus den Joomla!-Parametern aus.

Dann folgt das Auslesen der ersten Felder. Wir geben den Inhalt des Feldes kunde_ name weiter. So übermitteln wir das Anliegen des Kunden. Wir erinnern uns: Es handelt sich um eine einfache Drop-down-Auswahl, deren Wert wir als Text per Mail übermitteln. So verhält es sich auch mit den weiteren SEBLOD-Feldern, die wir alle auslesen und in den Inhalt unserer Mail verpacken.

Das Gute an dieser Arbeitsweise mit dem Editor-Feld ist, dass Sie den kompletten Inhalt der Mail nach eigenen Vorstellungen formatieren können.

Bitte denken Sie daran, dass Ihnen neben den hier vorgestellten Möglichkeiten natürlich auch die Formatierungsoptionen des Editors zur Verfügung stehen, denn das Ergebnis ist letztlich reines HTML. Sie können also sogar ein Bild einbauen, Sie können Text fett oder kursiv setzen, Absätze einfügen oder gar Tabellen einbauen, wenn Ihnen der Sinn danach steht.

Wie bei SEBLOD im Allgemeinen gilt: Auch mit der Mailfunktion und dem Editor ist nahezu alles Vorstellbare machbar.

Damit kommen wir dem Ziel schon einen ganz großen Schritt näher. Wir haben alle Felder erstellt, das Formular (Site Form) zusammengesetzt und die Mailfunktion bis ins Detail ausgearbeitet. Nun fehlt eigentlich nur noch die Anzeige auf unserer Webseite, mit der wir uns im letzten Abschnitt beschäftigen wollen.

16.1.8    Darstellung des Formulars

Damit die Kunden unser erstelltes Formular auch nutzen können, müssen wir es natürlich im Frontend aktivieren und darstellen. Das wird vielen von Ihnen wahrscheinlich keinerlei Probleme machen. Ich möchte der Vollständigkeit halber diesen Schritt allerdings kurz erklären.

Erstellen Sie bitte einen neuen Menüpunkt, dem Sie wie üblich einen Namen geben. Wählen Sie als Menütyp SEBLOD/Formular und dann den Namen Ihres Inhalts- bzw. Formulartyps aus. In unserem Fall handelt es sich um den Inhaltstyp Kontaktformular.

Nun haben Sie alle Schritte unternommen, und Ihr Formular sollte auf der Seite zu sehen sein. Wechseln Sie bitte in das Frontend Ihrer Seite und prüfen Sie, ob alles so funktioniert, wie es sollte.

16.1.9    Berechtigungen

Und jetzt stehen Sie vermutlich vor einem Problem: Denn Sie bekommen kein Formular zu sehen, sondern nur eine Fehlermeldung, dass Sie derzeit keine Berechtigung haben, den Inhalt der Seite anzusehen.

Genau so wird es auch Ihren Kunden gehen, die mit einem Gast- oder einem öffentlichen Profil Ihre Seite besuchen. Alle registrierten User bzw. Admins werden das Formular im eingeloggten Zustand sehen. Das hat jedoch bei dieser Variante nur bedingt Sinn, wir wollen den User ja nicht zu einer Registrierung zwingen.

Daher müssen wir uns die Berechtigungen noch einmal anschauen. Diese sorgen dafür, dass die Formularfelder nicht sichtbar sind. Ein kleiner Hinweis an dieser Stelle: Gleiches gilt, wenn Sie dem Kunden die Möglichkeit bieten, einen Text zu übermitteln, zum Beispiel wenn Sie ein kleines Redaktionssystem aufgebaut haben. Sobald Sie dem Kunden Texteingabemöglichkeiten bieten, müssen Sie auch die Berechtigungen anpassen.

Beachten Sie, dass es sich hierbei um die Berechtigungen in SEBLOD selbst handelt. Diese hängen zwar auch mit den Joomla!-Berechtigungen zusammen, jedoch sind beide getrennt steuerbar. Allerdings ist das Berechtigungen-Feld in SEBLOD 3.x sehr gut versteckt, was oftmals zu Irritationen führt.

Schauen Sie sich den unteren Screenshot an, auf dem ich Ihnen zeige, wohin Sie klicken müssen, um die richtige Ansicht zu erhalten

Screenshot 7

Sie müssen nun bei Inhaltserstellung den Wert auf Erlaubt setzen und zudem noch einmal auf den rechten Button Berechtigungen klicken. Dort wählen Sie Öffentlich aus und setzen bei Aktion Erstellen den Wert ebenfalls auf Erlaubt. Jetzt sind die Einstellungen korrekt, und das Formular wird angezeigt.

Erstellen von Inhalt

Ein Hinweis zu diesem Thema, denn es mag etwas missverständlich sein: Wir sollten uns immer ins Gedächtnis rufen, dass das Formular in gewisser Weise Inhalte erstellt, selbst wenn es sich nur um den Versand einer Mail handelt. Für SEBLOD ist das »Erstellen von Inhalt«. Und wenn dazu die Berechtigungen nicht ausreichen, dann ist das Erstellen unmöglich.


Nun haben Sie Ihr eigenes Kontaktformular mit SEBLOD erstellt und gelernt, was Sie mit dem Mailfeld alles anstellen können.

16.2         Erweiterung zum Beschwerdeformular

Nachdem ich Ihnen auf den letzten Seiten vorgestellt habe, wie man ein Kontaktformular aufbaut, möchte ich Ihnen nun näherbringen, wie Sie dieses Formular erweitern und zu einem Beschwerdeformular ausbauen können. Beschwerdeformular ist exemplarisch zu verstehen, um Ihnen weitere Möglichkeiten darzulegen. Natürlich lassen sich auf diesem Wege auch viele andere Anwendungen erstellen. Allerdings sind wir mit dem Beschwerdeformular zumindest thematisch sehr nah an unserer vorangegangenen Anwendung.

Aufgrund der thematischen Nähe und da wir einige Felder, die wir auf den letzten Seiten bereits erstellt haben, wieder benutzen werden, führen wir beide Anwendungen zusammen.

Erstellen Sie also bitte zuerst einen neuen App Ordner, den Sie als Unterordner des bereits vorhandenen Ordners Kontaktformular erstellen. So haben Sie alle Felder beider Formulare gesammelt in einem »großen« Hauptordner. Und nur die zusätzlichen Felder, die wir für unser neues Formular benötigen, werden in den neuen Ordner Beschwerdeformular gespeichert.

Dies hat den Vorteil, dass Sie später – für den Fall, dass Sie Ihre App weitergeben oder anderweitig nutzen wollen – alles sauber und kompakt abgebildet haben und sehr einfach herunterladen und wieder neu installieren können.

16.2.1     Grundlagen des Beschwerdeformulars

Nachdem Sie einen Ordner erstellt haben, benötigen Sie einen neuen Inhaltstyp. Wir beginnen wieder mit dem Erstellen der verschiedenen Felder. Da wir viele Felder schon vorab für unser Kontaktformular erstellt haben, brauchen wir nur noch einige zusätzliche Felder, mit denen der Kunde seine Beschwerde genau kategorisieren kann.

Screenshot 8

Bild 16.8: Das Beschwerdeformular.

Bevor Sie jedoch frei heraus einfach Felder anlegen, möchte ich Sie an dieser Stelle einmal kurz bremsen.

Unser Kontaktformular war eine einfache Sache, wenige Felder, einfach und übersichtlich. Geht es wie jetzt jedoch um ein Beschwerdeformular oder sonstige Formulare, die einen komplexeren Hintergrund haben, kann man schnell die Übersicht verlieren.

Daher ist es sinnvoll, das ganze Vorhaben in Form einer MindMap (siehe Screenshot) oder ganz einfach auf Papier zu skizzieren. So haben Sie einerseits einen Überblick über alle zu erstellenden Felder, zudem ist es gut möglich, dass Ihnen beim Skizzieren oder Notieren Ihres Formulars Unstimmigkeiten auffallen oder Verbesserungen, die Sie direkt einfließen lassen können.

Auch wenn das natürlich zusätzlicher Aufwand ist – Sie werden sich, sobald Sie loslegen und sich verzettelt haben, freuen, wenn Sie alles ganz genau notiert haben.

Daher zeige ich Ihnen an dieser Stelle einen Screenshot, den ich mit dem kostenlosen Tool Mindmeister[2] erstellt habe, damit können Sie einfach solche Maps erstellen, die mir beim Erzeugen meines Formulars geholfen hat oben.

Screenshot 9

Bild 16.9: Der logische Aufbau des Beschwerdeformulars.

Sie können anhand des Screenshots den Aufbau des Formulars erkennen. Wir nutzen jeweils nur einfache Drop-down-Auswahlen, natürlich können Sie Ihr Formular mit eigenen Feldern befüllen. Ihrem Einfallsreichtum sind keinerlei Grenzen gesetzt.

Ich will das oben gezeigte Schema noch einmal in Worte fassen, um Ihnen die Funktionsweise des Formulars zu verdeutlichen:

Der Kunde startet zuerst mit einem einzigen Drop-down-Feld, in dem er auswählen kann, ob es sich um eine Beschwerde, einen Kontakt oder eine Störungsmeldung handelt. Je nachdem, wofür er sich entscheidet, werden – davon abhängig – neue Felder angezeigt.

Wählt der Kunde beispielsweise »Beschwerde« aus, erscheint ein weiteres Dropdown-Feld mit den Auswahlmöglichkeiten »Mitarbeiterbeschwerde«, »Beschwerde Service« und »Beschwerde Preis«. Und auch hier ergeben sich später neue Möglichkeiten, je nachdem, was der Kunde auswählt.

Damit wird schon an dieser Stelle deutlich, was bei dieser Art von Formular am wichtigsten ist: die Abhängigkeit verschiedener Felder voneinander.

Erstellen wir zuerst unsere Felder. Im Fall des Beschwerdeformulars müssen dafür mindestens sechs neue Felder erstellt werden.

Es handelt sich dabei jeweils immer um eine simple Einfachauswahl. Da wir den Rahmen an dieser Stelle nicht sprengen wollen, erläutere ich nur für ein einzelnes Feld den Aufbau.

Bei allen anderen Feldern ist der Aufbau ähnlich, da es sich ja jeweils um den gleichen Feldtyp handelt, nur der Inhalt der Auswahl ist bei jedem Feld anders.

Wir vergeben also zuerst einen Namen bzw. einen Titel für das Feld, woraus dann passend unser Alias entsteht. Auch an dieser Stelle will ich noch einmal mahnend eingreifen: Bitte vergeben Sie vor allem bei komplexen Formularen sinnvolle Feldtitel, denn vor allem wenn Sie später die Abhängigkeiten der Felder festlegen müssen, werden Sie froh sein, wenn Sie erkennen können, welches Feld mit einem anderen Feld verbunden ist.

Unser erstes Feld lautet Anliegen Level 1, es wird gespeichert im Ordner Beschwerdeformular. Als Typ wählen Sie an dieser Stelle bitte Wählen –> Einfach.

Im Bereich Konstruktion legen Sie die Feldinhalte fest, also das, was dem Kunden zur Auswahl stehen soll.

In unserem Fall sind das die Werte Beschwerde, Kontakt und Störung. Natürlich vergeben wir auch bei der Bezeichnung einen aussagekräftigen Titel: Anliegen des Kunden. Im Feld Wähle Bezeichnung legen Sie fest, was in Ihrem Feld zu sehen sein soll, wenn der Kunde noch keine Auswahl getroffen hat.

Im Bereich Standard Wert brauchen wir aktuell keinerlei Angaben zu machen. Wir hätten hier aber die Möglichkeit, eine Vorauswahl für den Kunden zu treffen.

16.2.2 Speichern oder nicht?

Der nächste Punkt ist essenziell. Sie erinnern sich sicherlich, dass wir bei unserem Kontaktformular keine Inhalte gespeichert haben. Es hat ja keinen Sinn, Kontaktanfragen in der Joomla!-Datenbank zu speichern. Etwas anders könnte es sich bei Beschwerden gestalten.

Denn einerseits könnten wir die Beschwerden ganz simpel per Mail versenden (was wir auch auf jeden Fall tun werden). Zusätzlich hätten wir auch die Möglichkeit, alle eingehenden Beschwerden in Beiträgen zu speichern und diese zum Beispiel im Listenformat wieder auszugeben. Das wäre vor allem dann sinnvoll, wenn man Joomla! bzw. seine Webseite auch als Beschwerdedatenbank benutzen möchte.

Das würde in diesem Fall den Rahmen der Erklärung sprengen, trotzdem will ich es nicht ganz unerwähnt lassen.

Sie können beispielsweise alle Beschwerden in einer Kategorie speichern, diese Kategorie nur den Beschwerdebearbeitern sichtbar machen (Berechtigungen!) und genau diese Kategorie dann im Blog- oder einem speziell erstellten Listenformat zugänglich machen.

All dies ist problemlos möglich, erfordert aber zusätzliche Bearbeitung, die wir uns an dieser Stelle ersparen wollen. Ich gehe davon aus, dass Sie mit dem bereits erworbenen Grundwissen in diesem Buch selbst in der Lage sind, derlei Listenansichten zu erstellen.

Um es also kurz zu machen: Auch im Fall des Beschwerdeformulars speichern wir unsere Inhalte nicht, sondern übermitteln sie ganz einfach per Mail.

Wählen Sie also im Bereich Speicher unter Format/Position Kein aus. Somit werden die übermittelten Inhalte nicht in der Datenbank gespeichert.

16.2.3 Der Grundaufbau des Formulars

Erstellen Sie zuerst die weiteren benötigten Felder nach dem bereits bekannten Schema. Natürlich können Sie dieses Formular nach Belieben erweitern oder vereinfachen.

Wir erstellen also zunächst einen neuen Inhaltstyp, den wir Beschwerdeformular nennen, und können dort damit beginnen, die einzelnen Felder dem Seitenformular zuzuweisen.

Wie ich schon eingangs erwähnte, nutzen wir einige Felder aus dem Kontaktformular mit. Denn den Namen des Kunden und seine Telefonnummer haben wir als Feld bereits erstellt, und wir wollen unsere Arbeit so einfach wie möglich halten.

Auch dabei stehen uns mehrere Möglichkeiten zur Verfügung, denn wir könnten an dieser Stelle auch mit Gruppen arbeiten und die bereits bekannten Felder in eine Gruppe auslagern. Aber auch das will ich hier nur erwähnen, damit Sie es nicht vergessen. Im Rahmen dieses Kapitels bleiben wir beim konventionellen Weg und ziehen die Felder alle händisch in das Seitenformular.

Damit ist unsere Hauptaufgabe an dieser Stelle eigentlich erledigt. Wie schon beim Kontaktformular wird Ihnen aber auffallen, dass Sie das neue Beschwerdeformular nicht sehen können, sobald Sie es mit einem Menüpunkt verknüpft haben.

Das liegt an den Berechtigungen, die tatsächlich für jeden neuen Inhaltstyp neu definiert werden müssen.

16.2.4 Abhängigkeiten von Feldern

Unser Formular ist nun erstellt, aber wie Sie nach dem Festlegen der Berechtigungen wohl festgestellt haben, werden alle unsere eingebundenen Drop-down-Felder angezeigt. Und genau so soll unser Formular ja nicht sein. Wenn wir uns an den Screenshot erinnern, den ich Ihnen zu Beginn gezeigt habe, dann wird deutlich, dass einige Felder erst erscheinen sollen, wenn in einem Feld davor ein bestimmter Wert festgelegt wurde. Das bedeutet: Die verschiedenen Felder in den verschiedenen Ebenen müssen voneinander abhängig gemacht werden.

Zum Glück bietet SEBLOD auch diese großartige Funktion, die es uns ermöglicht, sehr komplexe Formulare sehr übersichtlich für den Kunden darzustellen.

Wir begeben uns an dieser Stelle wieder in das Joomla!-Backend und rufen dort über Konstruktion und Formulare & Inhaltstypen unseren Inhaltstyp Beschwerdeformular auf.

Wechseln Sie in das Register Seitenformular und klicken Sie anschließend auf die Nummer 5. Nun erscheinen im Bereich der Felder Verweise, die Sie anklicken können. Wenn Sie noch keine Abhängigkeit festgelegt haben, erscheint dort zuerst Hinzufügen, später findet sich der Verweis Bearbeiten, wenn Sie bereits Abhängigkeiten festgelegt haben.

16.2.5 Abhängigkeiten im Detail

Das Abhängigkeiten-Feld ist auf den ersten Blick etwas irreführend, denn tatsächlich müssen Sie »das Pferd von hinten aufzäumen«. Soll heißen, der hintere, rechte Bereich ist der Trigger oder Auslöser, der dafür sorgt, dass etwas passiert.

Wenn der Kunde im Feld Anliegen den Wert Beschwerde auswählt, soll ein neues Drop-down-Feld mit dem Titel Anliegen Level 2 erscheinen.

Somit ist die Auswahl des Wertes Beschwerde der Trigger oder Auslöser, der dafür sorgt, dass etwas passiert. Getriggert wird jedoch, und das ist im ersten Moment noch etwas verwirrend, das neu erscheinende Feld. Das bedeutet, Sie müssen den Trigger natürlich im Feld Anliegen Level 2 festlegen.

Dieser Trigger findet sich im Abhängigkeiten-Feld auf der rechten Seite. Schauen Sie sich dazu einfach den nachfolgenden Screenshot an, der das Ganze noch besser illustriert.

Screenshot 10

Bild 16.10: Abhängigkeiten von Feldern in SEBLOD.

Im ersten Drop-down-Feld legen Sie fest, welches der erstellten Felder als Trigger dienen soll. Wir erinnern uns: Wir möchten, um das zweite Level bzw. die zweite Ebene freizuschalten, die erste Ebene als Trigger benutzen. Wählen Sie also nun das Feld Anliegen Level1 aus.

Als Nächstes legen Sie im Feld danach die Bedingung fest. Die Felder sind zum Teil nicht sauber oder gar nicht übersetzt, lassen Sie sich davon jedoch nicht irritieren. Derzeit arbeitet ein größeres Team der SEBLOD-Developer an einer sauberen deutschen Übersetzung, damit werden auch die etwas kryptischen Bezeichnungen durch sauberen Text ersetzt.

Mit ein wenig Englischkenntnissen oder notfalls einem Übersetzungstool lässt sich dies jedoch leicht nachvollziehen.

In unserem Fall nutzen wir die Vergleichsfunktion is equal, was so viel bedeutet wie ist gleich. Bevor wir alles zusammensetzen, kommen wir zum letzten Feld. Das befüllen Sie, indem Sie auf die kleinen orangefarbenen Pfeile klicken, worauf sich ein Pop-upFenster öffnet, das Ihnen die Werte aus Ihrem Feld Anliegen Level1 anzeigt. Wir wählen hier Beschwerde aus. Um auch das noch einmal deutlich zu zeigen, habe ich einen weiteren Screenshot hinzugefügt.

Screenshot 11

Bild 16.11: Bedingungen von Feldern.

Damit haben wir eine erste Bedingung erstellt. Wenn also der Wert im Feld Anliegen Level 1 gleich Beschwerde ist, passiert etwas. Was dann passiert, legen Sie auf der linken Seite unter Status fest. Dort haben Sie die Möglichkeit, aus verschiedenen vorgegebenen Werten auszuwählen. Auch dazu zeige ich Ihnen ein Bild.

Screenshot 12

Bild 16.12: Bedingungen von Feldern 2.

Größtenteils sind die Status selbsterklärend. Um das noch einmal auf unser Beispiel zu beziehen: Unsere Bedingung ist, dass im Feld Anliegen Level 1 der Wert gleich Beschwerde sein muss. Dann kann man auswählen, dass das Feld (nur zur Erinnerung, wir befinden uns gerade im Feld Anliegen Level 2) sichtbar ist, verborgen wird etc.

Logischerweise sorgen wir an dieser Stelle dafür, dass der Wert ist sichtbar ausgewählt wird. Somit ist dieses Feld auch nur dann sichtbar, wenn die entsprechende Bedingung erfüllt ist.

Nur am Rande und zur Vertiefung: Wenn Sie mit Textfeldern arbeiten würden, dann könnte so eine Abhängigkeit zum Beispiel auch so genutzt werden, dass bei Eintragen eines bestimmten Wertes in ein Textfeld in einem anderen Textfeld ein anderer Wert angezeigt wird. Wie so oft haben Sie mit SEBLOD einfach unzählige Möglichkeiten.

 

16.2.6 Das Beschwerdeformular fertigstellen

Sie haben auf den letzten Seiten so viel Wissen angehäuft, dass ich Ihnen nun bei den letzten Schritten des Beschwerdeformulars nicht mehr auf der Schulter sitzen muss, oder?

Legen Sie die Abhängigkeiten für alle weiteren Felder nach dem Beispiel fest, das ich Ihnen erläutert habe. Vermutlich werden Sie jetzt auch verstehen, warum ich die ganze Zeit darauf gepocht habe, dass Sie Ihre Feldnamen sauber vergeben, denn jetzt wird es unter Umständen kompliziert, wenn Sie mehrere Level bzw. Ebenen miteinander verknüpfen wollen.

Zum Abschluss möchte ich ein weiteres Mal darauf hinweisen, dass sowohl das Kontaktformular als auch das Beschwerdeformular jeweils sehr einfache Beispiele sind, die sich massiv erweitern lassen.

Sie haben nun die ersten Schritte gelernt und haben mit diesem Wissen die Möglichkeit, nahezu alle Arten von Formularen problemlos umzusetzen. Ab sofort brauchen Sie dafür sicherlich keine eigene Komponente mehr, alles lässt sich mit SEBLOD bauen.

Viel Spaß dabei …

 


[1] http://docs.joomla.org/JApplication/getCfg

[2] http://www.mindmeister.com/de


webdesign von time4mambo

www.time4joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters. The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.