8.2.1 Dynamisch
Sie können mit diesem Feldtyp eine Verbindung zu einer Datenbanktabelle herstellen und somit den Inhalt dieser Auswahlbox aus einer Tabelle entnehmen.
In Query wählen Sie zunächst, ob Sie die Abfragen mit den angebotenen Feldern in diesem Feldtyp machen (Konstruktion) oder eine SQL-Anweisung eingeben möchten (Frei). Wer sich ein wenig mit SQL auskennt, findet bei der Konstruktion Folgendes
vor:
SELECT [Optionswert] FROM [Tabelle] WHERE [Wo]
Das, was Sie in Optionsname eintragen, ist der Wert, der in der Auswahlbox ausgegeben wird.
Ein kleines Beispiel dazu: Ich habe in der Datenbank eine neue Tabelle mit dem Namen #__orte und neben der ID eine Spalte mit Postleitzahlen und mit den zugehörigen Städten angelegt.
Bild 8.1: Eine kleine Tabelle zum Üben
In Tabelle trage ich den Namen der Tabelle ein, aus der ich meine Daten beziehen möchte, in meinem Beispiel also #__orte. Achten Sie dabei auf die beiden Unterstriche nach der Raute. SEBLOD ersetzt zur Laufzeit #_ mit dem richtigen Präfix. Ich möchte die Städte in meiner Auswahlbox ausgeben, weshalb ich in Optionsname »ort« schreibe. Abspeichern möchte ich dann aber nur die Postleitzahl, deshalb schreibe ich deren Spaltennamen in Optionswert: »plz«. Das reicht bereits, um eine dynamische Auswahlliste angezeigt zu bekommen.
Bild 8.2: Eine dynamische Auswahlliste.
Wähle ich nun München aus und speichere den Beitrag ab, wird die Postleitzahl abgespeichert, weil ich diese im Optionen Wert angegeben habe.
Um die Verwirrung frühzeitig zu klären:
- Der Optionen Name dient der Anzeige in der Auswahlbox.
- Der Optionen Wert wird abgespeichert.
Sie können natürlich auch in beide den gleichen Namen eintragen. Tragen Sie beispielsweise sowohl in Optionen Name als auch in Optionen Wert »Ort« ein, wird die Stadt in der Auswahlliste nicht nur angezeigt, sondern auch gespeichert.
Wenn entspricht dem SQL-Befehl Where. Sie können in diesem Feld also eine Bedingung angeben. Weiter unten ist ein Beispiel angegeben, wie Sie die Inhalte eines Menüs auslesen können. Die dortige Where-Bedingung: »menutype=‘mainmenu‘« wäre dann der Teil, der in das Wenn-Feld eingetragen wird.
Sortierung nach gibt Ihnen die Möglichkeit, in einer Datenbanktabellenspalte Ihrer Wahl das Auswahlfeld Aufsteigend oder absteigend zu sortieren. Wenn Sie lange Listen haben, können Sie mit Limit die Ausgabe auf eine bestimmte Anzahl beschränken.
Die Optionen-Attribute müssen erst aktiviert werden, indem Sie auf Toggle klicken. Dann erscheinen links unten im Konstruktions-Bereich einige Möglichkeiten für eigene
Attribute.
Würden Sie das direkt in das freie Feld für die SQL-Anweisung eingeben, lautete der SQL-Befehlssatz:
001 |
SELECT ort AS text,plz AS value FROM #__orte |
Wenn Sie mehrere Spalten in der Auswahlliste anzeigen möchten, müssen Sie Query auf Frei stellen, weil Sie das nur mit SQL erreichen können. Um zwei oder mehr Spalten miteinander zu verknüpfen, geben Sie nachfolgenden SQL-Befehlssatz ein:
001 |
SELECT CONCAT(plz, " ", ort) AS text, plz AS value FROM #__orte |
CONCAT() verknüpft die Spalten. Zwischen den Spalten habe ich noch ein Leerzeichen eingefügt. Nun haben Sie eine entsprechende Ausgabe:
Bild 8.3: Spalten verknüpfen
Leider können Sie das aber nicht auch so auf den Speicherbereich, den Value, anwenden. Gespeichert wird nur der Inhalt einer Spalte.
Ein anderes Beispiel, wie Sie die Menüverweise des Hauptmenüs auslesen können und den Verweislink abspeichern, finden Sie direkt in der Dokumentation von SEBLOD:
001 |
SELECT title AS text, link AS value FROM #__menu WHERE menutype='mainmenu' |
Setzen Sie Mehrfach auf Ja, können Sie mehr als einen Eintrag aus der Liste auswählen. In Reihe geben Sie die Höhe der Auswahlbox vor. Der Trenner wird dann bei Mehrfachauswahl im Frontend zwischen den einzelnen Auswahlen angezeigt. Standardmäßig ist das ein Komma.
Die Spracherkennung hat nur Einfluss bei Mehrsprachigkeit auf der Website und bezieht sich darauf, wie ermittelt werden soll, woher der Benutzer kommt und ergo was für eine Sprache dann zur Verfügung gestellt wird. Joomla! hat ein Plug-in für die Steuerung der Sprache, in dem Sie einstellen können, wie sprachlich mit einem Besucher Ihrer Website umgegangen werden soll.
Wenn Sie eine Erweiterung zum Feststellen der GeoIP benutzen, können Sie das hier entsprechend einstellen, wobei ich Ihnen an dieser Stelle nicht sagen kann, ob SEBLOD mit anderen Erweiterungen einwandfrei zusammenarbeitet und sie von allein erkennt oder Sie in SEBLOD Entsprechendes installieren oder programmieren müssen.
Passenderweise stellen Sie bei den Sprachencodes ein, welche Sprachen infrage kommen und für welche Sprache das vorliegende Feld gedacht ist (Standard).
Mit Füge Statische Optionen zu können Sie zusätzliche Auswahlmöglichkeiten in die Liste bringen, wahlweise an den Anfang (Über) oder ans Ende (Unter). Beispielsweise könnten Sie damit die zusätzliche Auswahl »nicht aus Süddeutschland kommend« oder Ähnliches einfügen. Wenn Sie hinter Ihren Optionen noch einen Defaultwert mittels Gleichheitszeichen einfügen, wird bei Auswahl nicht der Text, sondern der
Defaultwert gespeichert. Um im Beispiel zu bleiben, tragen Sie in den Optionen
001 |
Nicht aus Süddeutschland=1 |
ein. Es wird dann die 1 in der Datenbank gespeichert.
Im ersten Feld der Eigenen Attributen können Sie zum Beispiel Folgendes eintragen:
001 |
style="color:red;" |
Die Auswahlliste erscheint dann in roter Schrift. Allerdings werden die eigenen Optionen nach wie vor in der voreingestellten Schriftfarbe angezeigt.
Dabei geben Sie in das erste Feld das Attribut und gegebenenfalls den Wert ein, und im zweiten Feld können Sie die Reihenfolge der Attribute bestimmen. Allerdings haben die Attribute einige Tücken. So war es mir nicht möglich, Attribute im Nachhinein zu löschen, auch hatte ich im Quelltext einige Merkwürdigkeiten im Code, wie diese hier:
001 |
<option produkt="=""" color="red" =""="" style="color:red;" … |
Sie können auch eigene Attribute definieren, wie beispielsweise Produktnummern. Allerdings können Sie entweder überall den gleichen Wert zuweisen, oder Sie müssen hier mittels Programmierung eingreifen. Wenn Sie einen Attributnamen mehrmals benutzen, wird nur der erste angezeigt. Geben Sie beispielsweise das style-Attribut mehrmals an – einmal in roter Farbe, an anderer Stelle mit großer Schrift –, dann wird nur die rote Farbe (in diesem Beispiel) angezeigt, also die erste Definition des Attributs.