tags - Tags einbinden | ab Version 3 |
Um eine Tag-Datenbank auf einer Seite einzubinden, gibt es das Tag tags:
<tags db="datenbank">
Dieses lädt alle Tags die in datenbank gespeichert sind und wertet die Seite ab dieser Stelle damit aus:
<meintag>...</meintag> <tags db="datenbank"> <meintag>...</meintag>
Das erste Auftreten des Tags meintag wird also nicht ausgewertet, da seine Definition erst nach dem Laden der Tags aus datenbank in Kraft tritt.
Es gibt auch einen gleichnamigen Perl-Befehl tags, der sich genauso wie das Tag tags verhält:
<perl> tags "tagdb"; </perl>
Es können auch mehrere Tag-Datenbanken eingebunden werden:
<tags db="tabdb1"> <tags db="tabdb2">
Die Reihenfolge ist wichtig, denn falls in tagdb2 gleichnamige Tags vorkommen, überschreiben diese diejenigen in tag-db1. Sie können allerdings angeben, ob sie dieses Überschreiben wollen:
Durch die Angabe
tags "tabdb2", "+";
werden nur Tags übernommen, die noch nicht definiert sind.
Wichtig ist dies auch bei include: Standardmässig übernimmt eine eingebundene Seite alle Tag-Definitionen. Will man dies nicht, so muss man im include angeben, dass die Tags gelöscht werden sollen:
<include src="seite2" tags="*">
Somit sind nur die normalen baseportal-Tags gültig. Will man auch diese Tags verhindern, bedarf es der Angabe:
<include src="seite2" tags="-">
Damit sind wirklich überhaupt keine Tags mehr definiert. Die Angabe dieser Parameter ist auch im tags-Befehl möglich. So kann man in einer neuen Seite mit
tags "*";
bestimmen, dass, auch wenn diese Seite mit bereits definierten Tags aufgerufen wird, keine Tags ausser den baseportal-Tags ausgeführt werden. Natürlich kann dabei auch gleich eine bestimmte Tag-Datenbank eingebunden werden:
tags "tagdb", "*";
oder als Tag:
<tags db="tagdb" tags="*">
Hier eine Übersicht:
Parameter | Beschreibung |
---|---|
+ | Tag nur hinzufügen, wenn nicht schon vorhanden |
* | Alle bisher definierten Tags löschen, bis auf die baseportal-Tags |
- | Alle Tags löschen, auch die baseportal-Tags |
Der Parameter tags kann auch verwendet werden um nur bestimmte Tags aus einer Tags-Datenbank zu laden:
<tags db="tagdb" tags="tag1,tag2">
Lädt nur die Tags tag1 und tag2 aus der Tag-Datenbank tagdb.
Dies kann auch mit Tag-Gültigkeitsangaben gemischt werden:
<perl> tags "tagdb", "+tag1,tag2"; </perl>
Lädt nur die Tags tag1 und tag2 aus der Tag-Datenbank tagdb, sofern sie nicht schon definiert wurden.
Es ist auch möglich Tags ohne eine Tag-Datenbank zu definieren:
<tags tags="uc,lc">
Definiert die Tags "uc" und "lc" - diese müssen spätestens bei der ersten Verwendung als Routine definiert worden sein:
<perl> sub uc { uc($_); } sub lc { lc($_); } </perl>
Es werden also die Perl-Funktionen uc() und lc() aufgerufen, so dass die Seite:
<uc>Dies ist ein Text</uc><br> <lc>Noch mehr Text...</lc>
zu folgender Ausgabe führen würde:
DIES IST EIN TEXT noch mehr text...
Die Definition von Tags ohne Datenbank funktioniert auch als Perl-Befehl:
<perl> tags "uc,lc"; </perl>
Für den seltenen Fall, dass nur ein einziges Tag definiert werden soll, muss dies so angegeben werden:
<perl> tags "", "meintag"; </perl>
Würde das erste "" weggelassen, würde es wie eine Tag-Datenbank-Definition aussehen.
Die Definition der Tag-Routinen kann in eine eigene Seite ausgelagert und mit
<include src="subs" tags="tag1,tag2">
geladen werden.
Weiterhin können Tags gesammelt in einem Hash definiert werden:
%meinetags= ( menu => sub { ... }, adress => sub { ... }, ); tags \%meinetags;