Tags
Aus Contao Community Documentation
Auszeichnungen zum Kategorisieren von Elementen.
Erweiterungs-Übersicht | |
---|---|
Name des Entwicklers | Helmut Schottmüller (hschottm) |
Entwickler Webseite | https://github.com/hschottm/tags |
Version der Erweiterung | 3.2.0 |
Kompatibilität mit Contao Version | 3.2.0 - 3.2.3 |
Link zum Extension Repository | http://www.contao.org/erweiterungsliste/view/tags.de.html |
Den Entwickler unterstützen | http://aurealis.de/spenden.html |
Anmerkung | Versionen ältere Contao-Versionen verfügbar |
Inhaltsverzeichnis
Modul tags (Auszeichnungen)
tags ist ein Contao-Modul zum Erstellen und Anzeigen von Auszeichnungen innerhalb von Contao. Mit Hilfe des Moduls lassen sich für Entwickler mit geringem Aufwand Auszeichnungen für beliebige Contao Datacontainer (Tabellen) hinzufügen. Es ist zu beachten, dass zum vollständigen Funktionieren der Erweiterung die Mootools Unterstützung im Contao Seitenlayout aktiviert sein muss. Das Modul stellt ein Eingabefeld-Widget zur Verfügung, das für den aktuellen Datacontainer, in dem es eingesetzt wird, die Auszeichnungen in der Datenbank ablegen und auslesen kann. Die Auszeichnungen werden dabei als kommagetrennte Liste von den Autoren eingegeben oder können, falls JavaScript aktiviert ist, per Mausklick hinzugefügt oder entfernt werden (dies gilt allerdings nur für bereits bestehende Auszeichnungen).
In der vorliegenden Abbildung sieht man, dass das title-Attribut der URL einer Auszeichnung die Anzahl der Verwendung derselben anzeigt, d.h. neben dem Namen der Auszeichnung wird die Anzahl der Verwendungen in Klammern hinter den Namen ausgegeben. Mathematik (8) bedeutet also z.B., dass die Auszeichnung Mathematik insgesamt 8 Mal verwendet wird.
Es ist zu beachten, dass pro Contao Datacontainer nur ein Eingabefeld für Auszeichnungen verwendet wird, da die Auszeichnungen immer nur für den gesamten Datacontainer vergeben werden und nicht für das zugrund liegende Eingabefeld.
Hinweise für Entwickler von eigenen Erweiterungen
Nutzer, die Auszeichnungen nur Verwenden wollen und diese nicht in eigene Erweiterungen integrieren wollen, können den folgenden Absatz einfach überspringen.
Hinzufügen von Auszeichnungsfeldern in Contao Datacontainer
Um ein Auszeichnungs-Eingabefeld in einen Contao Datacontainer einzufügen, werden die folgenden Schritte benötigt:
- Um das Eingabefeld anzuzeigen, muss für den Datacontainer ein entsprechendes Datenbankfeld existieren. Da die Auszeichnungen nicht in diesem Datenbankfeld gespeichert werden, sondern in der speziell vom tags-Modul bereitgestellten Datenbanktabelle tl_tag, reicht es, ein möglichst kleines Datenbankfeld zu erzeugen.
- Das Eingabefeld muss in das DCA Konfigurationsarray eingefügt werden
Ein neues Datenbankfeld erstellen Sie in der config/database.sql-Datei des gewünschten Moduls. Ein Beispiel ist z.B.
CREATE TABLE `tl_literature` ( `tags` CHAR(1) NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Um das Feld mit diesem Namen in das DCA-Konfigurationsarray zu integrieren, muss es in eine der Paletten des Konfigurationsarrays eingefügt werden und eine Felddefinition erstellt werden, also z.B.
'' Palettes 'palettes' => array( 'default' => 'title,author,description,tags,content' ), '' Fields 'fields' => array( 'tags' => array( 'label' => &$GLOBALS['TL_LANG']['MSC']['tags'], 'inputType' => 'tag' ) ),
Mit $GLOBALS['TL_LANG']['MSC']['tags'] stellt das tags-Modul bereits einen Standardbezeichner für ein Auszeichnungsfeld zur Verfügung. Man kann diesen natürlich jederzeit gegen eigene Spracheinträge austauschen.
Beim Speichern eines Datacontainers werden während der Validierung der Daten die Auszeichnungen identifiziert und in der Datenbanktabelle tl_tag gespeichert. Abgelegt wird die ID des aktuellen Datacontainers (Tabellenfeld id), der Tabellenname des Datacontainers (Tabellenfeld from_table) und die Auszeichnung (Tabellenfeld tag).
Optionen für das Evaluation-Array des Feldes
Schlüssel | Wert | Beschreibung |
---|---|---|
table | Quelltabelle string | Name der Quelltabelle, aus der die Auszeichnungen gebildet werden sollen. Der Standard ist der Name des aktuellen DCA Datencontainers. |
isTag | true/false boolean | Gibt an, ob der Inhalt des Feldes als Tag gespeichert werden soll oder nicht. Der Standard ist true. Wenn der Inhalt des Feldes nicht als Tag gespeichert werden soll, wird der Feldinhalt ganz normal als kommagetrennte Zeichenkette in der Datenbank abgelegt. |
maxtags | Anzahl integer | Gibt die maximale Anzahl der Auszeichnungen an, die in der Tag Cloud zum Auswählen der Auszeichnungen angegeben werden. Wenn die Anzahl der verfügbaren Auszeichnungen größer ist, als maxtags, werden die Auszeichnungen mit den wenigsten Vorkommnissen nicht mehr angezeigt. |
Verwenden von Auszeichnungen im Contao-Frontend
Für die Verwendung im Contao-Frontend ist das Modul Tag Cloud vorgesehen. Das Modul erstellt eine HTML-Liste der für einen oder mehrere Datacontainer verwendeten Auszeichnungen. Um die Liste als Tag Cloud darzustellen, müssen die zugehörigen CSS-Selektoren mit Stilen versehen werden. Zwei Beispieldateien tags_oxygen.css und tags_orange.css finden sich im tl_files/tags-Verzeichnis des Installationspakets der tags-Erweiterung. Es empfiehlt sich an, sich an diesen Stilen zu orientieren, da es bei der Verwendung der Top 10 Auszeichnungen darauf ankommt, welche Elemente der Tag Cloud durch die CSS-Stile sichtbar gemacht werden und welche nicht.
Im Eingabefeld Maximale Anzahl von Auszeichnungen kann man eine maximale Anzahl der anzuzeigenden Auszeichnungen für die Tag Cloud festlegen. Ein Wert von 0 oder kein Wert zeigt immer alle verfügbaren Auszeichnungen an. Bei einem Wert kleiner als die maximale Anzahl der verfügbaren Auszeichnungen werden nur die häufigsten Auszeichnungen gemäß der Vorgabe im Eingabefeld angezeigt. Es ist zu beachten, dass es dadurch möglich ist, dass nicht alle Auszeichnungen angezeigt werden. Man sollte für die Benutzer einen Hinweis vorhalten, der auf diesen Umstand aufmerksam macht.
Im Eingabefeld Anzahl der Auszeichnungsgrößen kann man die Anzahl der verfügbaren CSS Selektoren für die Tag Cloud festlegen. Der Standardwert 4 erzeugt vier unterschiedliche Gruppen von Auszeichnungen mit den Selektoren size1, size2, size3 und size4, man kann also maximal 4 unterschiedliche Größen von Auszeichnungen im Frontend ausgeben. Es ist darauf zu achten, dass man immer für alle möglichen CSS Selektoren ein CSS-Element vorhält.
Das Kontrollkästchen Auszeichnungs-Klassennamen verwenden fügt einen zusätzlichen CSS Klassennamen für jede Auszeichnung hinzu, der aus dem Namen der jweiligen Auszeichnung besteht. Damit können einzelne Auszeichnungen individuell per CSS angepasst werden. Leerzeichen in den Auszeichnungsnamen werden für die CSS-Klassennamen in Unterstriche umgewandelt.
Mit dem Auswahlfeld Tag Cloud Template kann man das Template bestimmen, das für die Generierung der Tag Cloud im Frontend verwendet werden soll. Standardmäßig ist dies das Template mod_tagcloud. Man kann sich aber auch eigene Templates erstellen und hier verwenden. Diese müssen dann lediglich mit der Zeichenkette mod_tagcloud beginnen, also z.B. mod_tagcloud_spezial etc.
Das Kontrollkästchen Zugehörige Auszeichnungen zeigt im Frontend bei Auswahl mindestens einer Auszeichnung eine Liste weitere Auszeichnungen an, die im Zusammenhang mit der ausgewählten Auszeichnung vergeben wurden. Durch einen Klick auf eine dieser zugehörigen Auszeichnungen kann die Suche nach ausgezeichneten Objekten weiter eingeschränkt werden. Natürlich funktioniert die Anzeige der zugehörigen Auszeichnungen nur dann, wenn sich das Tag Cloud Modul auf einer Seite befindet, die sich in der Weiterleitung der Tag Cloud Hyperlinks befindet, da die Tag Cloud sonst keinerlei Kenntnis von bereits ausgewählten Auszeichnungen haben kann.
Das Kontrollkästchen Top 10 Auszeichnungen erzeugt über der Tag Cloud eine weitere Tag Cloud, welche die 10 häufigsten Auszeichnungen beinhaltet, in der Reihenfolge des häufigsten Auftretens. Gleichzeitig ist dieses Kontrollkästchen ein Selektor, der bei Aktivierung zwei weitere Kontrollkästchen erzeugt:
- Top 10 Auszeichnungen sind aufgeklappt: Wenn dieses Kontrollkästchen aktiviert ist, sind die Top 10 Auszeichnungen beim Öffnen der Seite aufgeklappt, d.h. die Liste der Auszeichnungen ist sichtbar.
- Alle Auszeichnungen sind aufgeklappt: Wenn dieses Kontrollkästchen aktiviert ist, ist die Tag Cloud mit allen Auszeichnungen beim Öffnen der Seite aufgeklappt, d.h. die Liste der Auszeichnungen ist sichtbar.
Man wählt unter Weiterleitung zu Seite eine interne Contao-Seite aus, damit die Auszeichnungen der Tag Cloud mit Hyperlinks versehen werden. Die gewählte Seite wird dann immer mit dem URL-Parameter tag=TAGNAME aufgerufen, also z.B. http://www.meineseite.de/weiterleitung.html?tag=typolight.
Bei Einschränkung auf Tabelle(n) wählt man normalerweise immer nur den Datacontainer aus, für den die Tags gespeichert wurden.
Die Felder Quell-Tabelle für Auszeichnungen und Tabellenfeld für Auszeichnungen werden mit den Standardeinträgen tl_tag und tag vorbelegt und sollten nur dann geändert werden, wenn man die Tags aus einer eigenen Tabelle beisteuern will.
Mit den Feldern CSS-Id/Klasse kann man zusätzliche CSS-ID's oder Klassen vergeben, die dann im umschließenden DIV-Container der Tag Cloud eingebettet werden. Dadurch hat man die Möglichkeit individuelle Stile für die Tag Clouds einzusetzen.
Im Frontend sieht die Tag Cloud dann z.B. folgendermaßen aus:
bzw. mit aktivierten Top 10 Auszeichnungen:
bwz. mit aktivierten Top 10 und zugehörigen Auszeichnungen:
Werden zwei Tag Clouds (Top 10 + Alle) oder die zugehörigen Auszeichnungen angezeigt, bindet Contao ein JavaScript ein, das die jeweiligen Tag Clouds bei Mausklick auf den Titel einklappt bzw. ausklappt. Ist kein JavaScript aktiviert, so werden die dreieckigen Klappsymbole nicht angezeigt. Für einen optimale Zusammenarbeit mit der JavaScript-Erweiterung sollte man die installierten CSS-Dateien tags_oxygen.css oder tags_orange.css in die Seite einbinden.
Die folgenden Contao-Elemente können mit Tags versehen werden:
- Nachrichtenbeiträge
- Artikel
- Inhaltselemente
- Kalender/Events
Weiterleitung zu Seiten über eine Tag Cloud
Damit eine sinnvolle Weiterleitung aus einer Tag Cloud vorgenommen werden kann, muss die Seite, zu der weitergeleitet wird, den tag-Parameter in der URL interpretieren können. Hierin liegt die Hauptarbeit, wenn die Tag-Unterstützung für bestehende Contao-Datacontainer vorgenommen werden soll.
Die folgenden Contao-Module reagieren auf einen Aufruf aus einer Tag Cloud heraus und zeigen nur die Elemente an, die mit der ausgewählten Auszeichnung versehen wurden:
- Modul Nachrichtenarchiv: Es werden alle Nachrichten angezeigt, die mit der Auszeichnung versehen sind.
- Modul Nachrichtenliste: Es werden alle Nachrichten angezeigt, die mit der Auszeichnung versehen sind.
- Modul Globale Artikelliste: Es werden Links auf alle Artikel angezeigt, die mit der Auszeichnung versehen sind.
- Modul Eventliste: Es werden alle Events der ausgewählten Kalender im ausgewählten Zeitraum angezeigt, die mit der gesuchten Auszeichnung versehen sind.
- Modul Auszeichnungsobjekte: Es werden Inhaltselemente (Seiten, Artikel, Inhaltselemente) in einer Liste angezeigt, die mit einer bestimmten Auszeichnung versehen sind.
Ausgabe von Auszeichnungslisten zu Nachrichtenbeiträgen
Bei der Ausgabe von Nachrichtenbeiträgen gibt es die Möglichkeit, unterhalb des Nachrichtenbeitrags die zum Beitrag zugehörigen Auszeichnungen anzeigen zu lassen. Zu diesem Zweck kann die Ausgabe der Auszeichnungen in den Frontend-Modulen zur Nachrichtenanzeige, Nachrichtenleser, Nachrichtenliste und Nachrichtenarchiv, aktiviert werden.
Mit der Option Auszeichnungen ignorieren werden von der Liste alle zur Filterung verwendeten Auszeichnungen verworfen.
Wenn man die Option Nachrichten-Auszeichnungen anzeigen auswählt, erscheint zusätzlich ein Auswahl-Feld für eine Weiterleitungsseite, die aufgerufen wird, wenn aus eine der Auszeichnungen geklickt wird. Hier wählt man die Seite aus, auf die man auch aus der Tag Cloud heraus weiterleitet oder aber natürlich jede beliebige andere Seite, wenn man eine spezielle Behandlung der zu einer Nachrichten angeklickten Auszeichnungen wünscht.
Um, wie bei den Tag Clouds die Namen der individuellen CSS-Klassen der jeweiligen Auszeichnungen anzuzeigen, wurde die Option "Auszeichnungs-Klassennamen verwenden" eingeführt. Diese verwendet die individuelle CSS-Klasse in allen Auszeichnungen, die unterhalb eines Nachrichtenbeitrags angezeigt werden.
Damit eine Ausgabe der Auszeichnungen im Frontend auch wirklich ausgeführt wird, muss man außerdem die Nachrichtenvorlage des Moduls anpassen. Speziell für diesen Zweck wurde mit der tags-Erweiterung das Template news_full_tags erstellt, das den entsprechenden HTML-Code zur Ausgabe der Auszeichnungen unterhalb eines Nachrichtenbeitrags bereitstellt. Wenn man ein anderes Template für die Ausgabe verwenden will und die Ausgabe der Auszeichnungen zu einem Nachrichtenbeitrag wünscht, sollte man den im Template news_full_tags hinzugekommenen Quellcode kopieren und in das gewünschte Template einfügen:
<?php if ($this->showTags): ?> <?php if (count($this->taglist)): ?> <ul class="tag-chain"> <?php $counter = 0; foreach ($this->taglist as $tag): ?> <li class="tag-chain-item<?php if ($counter == 0) echo ' first'; ?> <?php if ($counter == count($this->taglist)-1) echo ' last'; ?> <?php if ($this->showTagClass) echo ' ' . $tag['class']; ?>"><?php echo $tag['url']; ?></li> <?php $counter++; endforeach; ?> </ul> <?php endif; ?> <?php endif; ?>
Für die Ausgabe der Auszeichnungen enthalten die in der Erweiterung mitgelieferten CSS-Dateien tags_orange.css und tags_oxygen.css weitere CSS-Selektoren, die für eine grundlegende Formatierung der Auszeichnungslisten sorgen. Ein Nachrichtenbeitrag mit den dazugehörigen Auszeichnungen könnte dann z.B. folgendermaßen aussehen:
Inhaltselemente
Die tags-Erweiterung erweitert des Contao Inhaltselement Überschrift und fügt in den Experten-Einstellungen einen zusätzlichen Parameter Nur bei Auszeichnungen anzeigen ein. Wird dieses Feld ausgewählt, dann zeigt Contao die Überschrift nur dann an, wenn auf der betreffenden Seite Auszeichnungen verwendet werden, d.h. wenn von einer Tag Cloud über eine Auszeichnung auf die Seite verzweigt wird. Zu erkennen ist die am Paramter tag in der URL der Seite.
Dieses Feld kann in Kombination mit dem Insert Tag {{tags_used}} z.B. dazu eingesetzt werden, eine für ausgewählte Tags passende Überschrift anzuzeigen, z.B. Auswahl der Teilnehmer {{tags_used}} => Auswahl der Teilnehmer (Kongress+Oktober+Hamburg)
Insert Tags
tags führt die folgenden Insert Tags für Contao ein:
- {{tags_used}}: Wird ersetzt durch eine Liste der aktuell verwendeten Auszeichnungen, z.B. (Contao+Erweiterung+tags)
- {{tags_news::news_id}}: Wird ersetzt durch eine Liste der für einen Nachrichtenbeitrag vergebenen Auszeichnungen, z.B. zeigt {{tags_news::1}} die Auszeichnungen des Nachrichtenbeitrags mit der ID 1 an.
- {{tags_event::event_id}}: Wird ersetzt durch eine Liste der für einen Kalendereintrag vergebenen Auszeichnungen, z.B. zeigt {{tags_event::1}} die Auszeichnungen des Kalendereintrags mit der ID 1 an.
- {{tags_article::article_id}}: Wird ersetzt durch eine Liste der für einen Artikel vergebenen Auszeichnungen, z.B. zeigt {{tags_article::1}} die Auszeichnungen des Artikels mit der ID 1 an.
- {{tags_article_url::article_id}}: Wird ersetzt durch eine Liste der für einen Artikel vergebenen Auszeichnungen als URL auf den zugehörigen Artikel, z.B. zeigt {{tags_article_url::1}} die Auszeichnungen des Artikels mit der ID 1 an und verlinkt jede Auszeichnung mit der Seite des Artikels.
- {{tags_content::content_id}}: Wird ersetzt durch eine Liste der für ein Inhaltselement vergebenen Auszeichnungen, z.B. zeigt {{tags_content::1}} die Auszeichnungen des Inhaltselements mit der ID 1 an.
Ausgabe in Feeds
Mit Version 1.7.2 ist auch die Ausgabe von tags zu Events (Kalendereinträgen) in Kalender-Feeds möglich, mit Version 1.7.3 die Ausgabe von tags zu Nachrichtenbeiträgen in News-Feeds. Standardmäßig werden diese Auszeichnungen als HTML-Liste nach der Beschreibung des Events bzw. des Nachrichtenbeitrags ausgegeben. Falls eine Ausgabe nicht erwünscht ist, so muss die folgende globale Variable updatesicher mit einem negativen Booleschen Wert überschrieben werden:
$GLOBALS['tags']['showInFeeds'] = false;
Diese Zeile fügt man dann am besten z.B. in die Datei system/config/localconfig.php ein. Die Darstellung der Auszeichnungen im Newsfeed kann über das Template tags_feed beeinflusst werden.
Zusätzliche TPYOlight-Module
Die tags-Erweiterung führt die folgenden neuen Contao-Module ein:
Globale Artikelliste
Mit der globalen Artikelliste kann man eine Liste aller verfügbaren Artikel einer Contao-Installation ausgeben lassen. In dieser Form ist das Modul natürlich nur bedingt sinnvoll. Wenn man die Ausgabe der Artikel einschränken möchte, wählt man besser das Core-Modul Artikelliste, das eine Artikelliste einer bestimmten Seite ausgeben kann. Die globale Artikelliste sollte hauptsächlich dazu verwendet werden, um aus einer Tag Cloud heraus aufgerufen zu werden. In diesem Fall wird eine Liste aller Artikel ausgegeben, die mit der ausgewählten Auszeichnung versehen wurden.
Verwendete Auszeichnungen
Dieses Modul zeigt die auf einer Seite aktuell verwendeten Auszeichnungen an. Durch Anklicken der Auszeichnungen lässt sich nach eben diesen Filtern. Alle Auszeichnungen können zurückgesetzt werden. Einzelne Auszeichnungen können durch Anklicken aus der Auswahl entfernt werden.
Einstellungen für Nachrichtenmodule
Für die Nachrichtenmodule Nachrichtenliste, Nachrichtenarchiv und Nachrichtenleser gibt es eine Einstellung, die verhindert, dass diese Module auf Tags reagieren (Auszeichnungen ignorieren). Falls z.B. eine Nachrichtenliste der letzten Nachrichten ausgegeben wird, so würde sich die Ausgabe ändern, wenn die Seite über eine Tag Cloud aufgerufen wird. Um dies zu verhindern, kann diese Option ausgewählt werden.
Auszeichnungsobjekte
Mit dem Frontend-Modul Auszeichnungsobjekte kann eine Liste eines bestimmten Inhalts-Objekttyps angezeigt werden. Als Objekttyp stehen die drei Inhaltstypen Seiten, Artikel oder Inhaltselemente zur Verfügung. Der Objekttyp ist das Element, das in der Liste verlinkt wird, wenn eine Auszeichnung existiert. Bei einem ausgewählten Objekttyp Seiten werden also Links auf Contao-Seiten angezeigt, bei einem Objekttyp Artikel werden Links auf Contao Artikel angezeigt etc.
Die Einschränkung auf Datenquelle legt fest, welche Auszeichnungen in der Liste verarbeitet werden sollen. Wird hier z.B. tl_article gewählt, werden nur Artikelauszeichnungen berücksichtigt. Wird tl_content ausgewählt, werden nur Auszeichnungen von Inhaltselementen berücksichtigt.
Über Seiten muss man die Seite auswählen, die zur Erstellung der Objektliste verwendet werden soll. Wenn die Seite Unterseiten besitzt, so werden diese ebenfalls für die Generierung der Objektliste verwendet. Das heißt, es werden nur Auszeichnungen berücksichtigt, die für Inhalts-Objekte vergeben wurden, die sich auf der ausgewählten Seite oder deren Unterseiten befinden.
Beispiel:
- Objekttyp: Seiten
- Einschränkung auf Datenquelle: tl_article
- Seiten: Startpunkt der aktuellen Website
Für ausgewählte Auszeichnungen wird eine Liste von Links auf Seiten angezeigt, bei deren Artikel die Auszeichnungen vergeben wurden. Berücksichtigt werden alle Seiten der aktuellen Website.
--Hschottm 23:25, 24. Nov. 2011 (CET)