Die Syntax der SPIP-Tags

Jeder Schleifentyp erlaubt die Auswahl von Elementen aus der SPIP-Datenbank: von Artikeln, von Rubriken, von Meldungen usw. Genaugenommen besteht jedes dieser Elemente wiederum selbst aus Elementen: einem Titel, einem Datum, einem Text usw. Im Inneren einer Schleife muss daher angegeben werden können, an welcher Stelle des HTML-Codes man dieses oder jenes Element genau platzieren möchte.

Vereinfachte Funktionsweise

Ein SPIP-Tag befindet sich innerhalb einer SPIP-Schleife (weil man wissen muss, ob man ein Element eines Artikels, einer Rubrik usw. bearbeiten will). Der Name dieser Tags ist im Allgemeinen einfach zu verstehen, und wir geben für jeden Schleifentyp eine vollständige Liste der Tags an, die man in einer Schleife dieses Typs verwenden kann.

Ein Tag beginnt immer mit einem einleitenden Doppelkreuz-Zeichen ( # ).

Zum Beispiel zeigen wir eine Liste der Namen der Artikel folgendermaßen an:

<BOUCLE_artikel(ARTICLES){id_rubrique}>
    <li> #TITRE
</BOUCLE_artikel>

Wenn die Schleife ausgeführt wird, wird das SPIP-Tag #TITRE jedesmal durch den Titel des betreffenden Artikel ersetzt:

<li> Titel des Artikel Nummer&nbsp;1
<li> Titel des Artikel Nummer&nbsp;2
...
<li> Titel des letzten Artikels

Hier ist nichts besonders kompliziert: man muss nur innerhalb des HTML-Codes den Namen des gewünschten Elements angeben, und dieser wird durch den aus der Datenbank entnommenen Inhalt ersetzt.

Optionale Codes

In der Praxis ist ein Element des Inhalts häufig von HTML-Code begleitet, der nicht angezeigt werden darf, wenn dieses Element nicht vorhanden ist, da anderenfalls die genaue Seitendarstellung beeinträchtigt wird.

Ein Beispiel: es gibt ein SPIP-Tag, mit dem man den einleitenden Titel (frz. surtitre) eines Artikels anzeigt. Nun haben zahlreiche Artikel gar keinen einleitenden Titel.

Vervollständigen wir das vorstehende Beispiel:

<BOUCLE_artikel(ARTICLES){id_rubrique}>
    <li> #SURTITRE<br>
     #TITRE
</BOUCLE_artikel>

was uns in klassischer Weise eine Liste der Artikel anzeigt, von nun an mit der Anzeige von Titel und einleitendem Titel eines jeden Artikels. Was passiert aber, wenn der Artikel keinen einleitenden Titel hat? Man erhält den Code: «<LI><BR>», was ein Aufzählungszeichen gefolgt von einer Leerzeile erzeugt.

Folgendes wollen wir haben: der Code «<BR>» soll nur dann angezeigt werden, wenn für diesen Artikel ein einleitender Titel existiert.

Die Syntax des SPIP-Tags wird dann zu:

[ voranstehender optionaler Text (#TAGNAME) nachstehender optionaler Text ]

Das Tag, das für die Option ausschlaggebend ist, steht in Klammern, und der gesamte optionale Text steht in eckigen Klammern. Der voranstehende optionale Text und der nachstehende optionale Text werden nur dann angezeigt, wenn in der Datenbank ein mit dem eingeschlossenen Tag korrespondierendes Element existiert.

Aus unserem Beispiel wird:

<BOUCLE_artikel(ARTICLES){id_rubrique}>
    <li> [(#SURTITRE)<br>]
    #TITRE
</BOUCLE_artikel>

Man erhält dann als Resultat der Datenbankabfrage: wenn es für den jeweiligen Artikel einen einleitenden Titel gibt, wird er angezeigt, und nach ihm steht <BR>; wenn es keinen einleitenden Titel gibt, bleibt selbst das <BR> unsichtbar.

Filterung der Resultate

Häufig möchte man ein aus der Datenbank entnommenes Element modifizieren, sei es, um eine andersartige Anzeige zu erhalten (beispielsweise, um den gesamten Titel in Großbuchstaben auszugeben), sei es, um sich einen aus diesem Element ableitbaren Wert zu verschaffen (beispielsweise um den Wochentag anzuzeigen, der mit einem Datum korrespondiert).

Bei SPIP kann man auf aus der Datenbank beschaffte Elemente direkt Filter anwenden, indem man sie in der Syntax der SPIP-Tags angibt, was folgendermaßen aussieht:

[ voranstehende Option (#TAGNAME|Filter1|Filter2|...|Filtern) nachstehende Option ]

Die Syntax ist also, nach dem Namen des Tags innerhalb der Klammern die anzuwendenden Filter aufeinander folgen zu lassen, welche man voneinander durch einen senkrechten Strich (gewöhnlich als pipe bezeichnet) trennt.

Anmerkung. Tatsächlich sind die Filter PHP-Funktionen. Sie können also zusätzlich zu den SPIP-eigenen Funktionen direkt PHP-eigene Funktionen benutzen (unter der Bedingung, dass diese Funktionen mit einem einzigen Argument funktionieren).

Hier sehen Sie einige Filter, die von SPIP bereitgestellt werden:

-  majuscules, übergibt den Text in Großbuchstaben (leistungsfähiger als die korrespondierende PHP-Funktion, die bei Zeichen mit Accent nicht korrekt arbeitet); ein Beispiel:

[(#TITRE|majuscules)]

-  justifier, bildet den Text im Blocksatz ab (entspricht also <P align=justify>); ein Beispiel:

[(#TEXTE|justifier)]

Die vorliegende Dokumentation widmet einen Artikel den mit SPIP gelieferten Filtern.

Umgehen der Bearbeitung durch SPIP

SPIP unterzieht alle aus der Datenbank entnommenen Texte einer typographischen Bearbeitung. Insbesondere setzt es geschützte Leerzeichen vor bestimmte Symbole (Semikolon, Fragezeichen usw.; dies gilt nicht für die deutsche Fassung) und analysiert die Abkürzungen für die Seitendarstellung.

In bestimmten Fällen werden Sie diese Behandlung umgehen wollen, um sich direkt den Rohtext zu beschaffen, so wie er in der Datenbank steht. Zu diesem Zwecke genügt es, an das SPIP-Tag ein Stern-Zeichen (*) anzuhängen. Das ergibt:

[ voranstehende Option (#TAGNAME*|Filter1|Filter2|...|Filtern) nachstehende Option ]

Filter mit mehreren Variablen

Achtung, dieser Teil richtet sich nur an erfahrene Benutzer.  [SPIP 1.5] erlaubt die Übergabe von Parametern in den Filtern. Die Syntax ist

[(#TAGNAME|Filter{arg1, arg2}|...)]

Die Funktion Filter muss auf die folgende Weise in der Datei mes_fonctions.php3 definiert werden:

<?php
    function Filter($text, $arg1='Voreinstellungswert 1', $arg2='Voreinstellungswert 2')
    {
        ....Berechnungen....
        return (eine Zeichenkette);
    }
?>

Eine derartige Funktion muss also als erstes Argument den Text übergeben bekommen, der bearbeitet werden soll (das ist in unserem Falle der Text von #TAGNAME).

Autor wshSchlegel Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands, òc lengadocian, русский, українська