SPIP-Filter

In «Die Syntax der SPIP-Tags» haben wir gesehen, daß es möglich ist, das Verhalten und das Erscheinungsbild der Tags zu modifizieren, indem man ihnen Filter zuordnet.

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

Die Filter 1, 2, ..., n werden nacheinander auf #TAGNAME angewandt.

Die Filter der Seitendarstellung

-  majuscules übergibt den Text in Großbuchstaben. Verglichen mit der strtoupper()-Funktion von PHP hat es die zusätzliche Fähigkeit, Buchstaben mit Accent zu verarbeiten.

-  justifier übergibt den Text im Blocksatz (<P align=justify>).

-  aligner_droite übergibt den Text mit rechtsbündiger Ausrichtung (<P align=right>).

-  aligner_gauche übergibt den Text mit linksbündiger Ausrichtung (<P align=left>).

-  centrer zentriert den Text (<P align=center>).

Die Filter für Datumsangaben

Die folgenden Filter werden auf Datumsangaben angewandt (beispielsweise ((#DATE).

-  affdate zeigt das Datum in Textform an, beispielsweise als «13. Januar 2001».

-  jour zeigt den Tag (als Zahl) an.

-  mois zeigt den Monat (als Zahl) an.

-  annee zeigt das Jahr an.

-  [SPIP 1.0.2] heures zeigt die Stunden einer Datumsangabe an (die von SPIP gelieferten Datumsangaben enthalten nicht nur den Tag, sondern zudem die Uhrzeit).

-  [SPIP 1.0.2] minutes zeigt die Minuten einer Datumsangabe an.

-  [SPIP 1.0.2] secondes zeigt die Sekunden an.

-  nom_jour zeigt den Namen des Tages an (Montag, Dienstag...).

-  nom_mois zeigt den Namen des Monats an (Januar, Februar...).

-  saison zeigt die Jahreszeit an (Winter, Sommer...).

Text-Filter

Die meisten dieser Filter wurden mit der Version [SPIP 1.4] eingeführt.

-  liens_ouvrants transformiert die SPIP-Links, die zu externen Sites führen, in Links vom «Popup»-Typ, für deren Anzeige ein neues Fenster geöffnet wird; das ist äquivalent zu dem target=blank von HTML. N.B.: Die Entwickler von SPIP halten dergleichen generell für eine Unhöflichkeit, da die Surfer sehr gut selber wissen, ob sie das Öffnen eines neuen Fensters wünschen oder nicht - mit diesem System drängt man es ihnen auf. Man hat es jedoch mit allzugroßem Nachdruck gefordert, da sind wir eingeknickt ;-)

-  supprimer_numero bewirkt die Entfernung der Nummer von einem Titel, wenn man beispielsweise Artikel {par num titre} sortieren, die Nummern aber nicht anzeigen möchte (da sie lediglich zur Angabe der Sortierreihenfolge gedacht sind). Das Format der erkannten Numerierungs-Präfixe ist «XX. Titel», wobei XX eine Zahl aus n Ziffern ist (n ist unbeschränkt).

-  PtoBR transformiert Absatz-Umbrüche zu einfachen Zeilenumbrüchen; damit kann man eine Seitendarstellung «zusammenziehen», beispielsweise im Inneren einer Zusammenfassung.

-  taille_en_octets erlaubt die Transformation einer gegebenen Aneinanderreihung von Bytes (25678906) zu einer lesbareren Zeichenkette («24.4 Mo»).

-  supprimer_tags ist eine grundsätzliche und brutale Unterdrückung sämtlicher <...>

-  textebrut ähnelt dem Filter supprimer_tags, wirkt aber auf etwas subtilere Weise, indem es insbesondere die Absätze und <br> zu Zeilenumbrüchen und die geschützten Leerzeichen zu einfachen Leerzeichen transformiert. Kann beispielsweise benutzt werden, um aus #DESCRIPTIF ein beschreibendes META-Tag zu erzeugen: [<meta name='description' content='(#DESCRIPTIF|textebrut)'>]

Filter für Logos

-  fichier [SPIP 1.4]. Wenn man dieses Filter auf ein Logo anwendet, erhält man direkt den Namen der mit dem Logo korrespondierenden Datei.

-  ||andere Filter Im Gegensatz zu früheren Versionen erlaubt [SPIP 1.4], Filter «nach Art des Hauses» auf die Logos anzuwenden: die Logik verläuft hier etwas von hinten durch die Brust ins Auge, da es nötig war, die Kompatibilität mit SPIP 1.3 zu gewährleisten. Die Analyse stellt sich folgendermaßen dar:

  • wenn das erste «Filter» nicht der Ausrichtung dient, vermutet SPIP, daß es sich um eine URL handelt, und erzeugt einen mit Logo versehenen Link zu dieser Adresse;
  • wenn das erste Filter eines zur Ausrichtung ist, vermutet SPIP, daß das zweite «Filter» eine URL ist;
  • die folgenden Filter sind dann tatsächlich Filter im eigentlichen Sinne (inklusive der in mes_fonctions.php3 deklarierten Filter «nach Art des Hauses»);
  • um ein beliebiges Filter ohne Übergabe einer URL anzuwenden, muß man zwei senkrechte Striche anbringen. Ein Beispiel: <?php $logo = '[(#LOGO_RUBRIQUE||texte_script)]'; ?> erlaubt die Beschaffung des Logos in der PHP-Variablen $logo, um diese dann weiter zu behandeln (die Bedeutung von |texte_script erfahren Sie weiter unten).

-  Mit SP<font color="yellow">IP 1.7.1 wurde das Filter reduire_image eingeführt, welches erlaubt, eine maximale Anzeigegröße für Logos anzugeben.

Dieses Filter kann man beispielsweise in folgender Form auf ein Artikel-Logo anwenden:

Nach diesem Beispiel erscheint das Logo in rechtsbündiger Ausrichtung in einer maximalen Größe von 130 Pixel.

NB. Wenn die Option «Vorschaubilder automatisch generieren» in den «Erweiterten Einstellungen» der Konfiguration der Website aktiviert ist, sind diese Logos in reduzierter Größe Bild-Dateien, die der Server automatisch für die vom Server akzeptierten Formate berechnet (idealerweise ist dazu die Erweiterung GD2 auf dem Server installiert; GD2 akzeptiert üblicherweise die Formate JPG und PNG). Wenn diese Option nicht aktiviert ist, wird eine vollständige Version des Bildes angezeigt, diese jedoch mit einer direkt in HTML festgelegten Anzeigegröße.

Technische Filter

Diese Filter wurden mit [SPIP 1.4] eingeführt.

-  entites_html transformiert einen Text zu HTML-Entitäten, die man dann in ein Formular eingeben kann, z.B.: [<textarea>(#DESCRIPTIF|entites_html)</textarea>]

-  texte_script transformiert einen beliebigen Bereich zu einer Zeichenkette, die mit völliger Sicherheit in PHP oder JavaScript verwendet werden kann; z.B.: <?php $x = '[(#TEXTE|texte_script)]'; ?>. Achtung: verwenden Sie das Zeichen «'» und nicht das Zeichen «"» : das doppelte Anführungszeichen kann hier katastrophale Resultate hervorrufen, wenn Ihr Text das Dollar-Symbol $ enthält (nur teilweise Anzeige, Anzeige von völlig anderen Dingen, Absturz von PHP usw.).

-  attribut_html gibt eine Zeichenkette zurück, die ohne Schaden als HTML-Attribut benutzt werden kann; wenn man beispielsweise einen Mouseover-Text an einem normalen Link zu einem Artikel anbringen möchte, verwendet man

<a href="#URL_ARTICLE" [ title = "(#DESCRIPTIF|supprimer_tags|attribut_html)" ]>#TITRE</a>.

-  [SPIP 1.6] führte das Filter |sinon ein, das angibt, was angezeigt werden soll, wenn das «zu filternde» Elemente leer ist: also zeigt [(#TEXTE|sinon{"hier ist kein Text."})] den Text an; wenn der Text leer ist, wird «hier ist kein Text.» angezeigt.

Eigene Funktionen einbringen

Die Filter von SPIP sind PHP-Funktionen, deren erster Parameter den Wert eines SPIP-Tags (z.B. #TEXTE) enthält. Sie können direkt die üblichen Funktionen von PHP benutzen, aber auch Ihre eigenen erzeugen; nach folgendem Modell:

<?php
function mein_filter($texte){
   $texte = (Gehacktes in PHP) ...;
   return $texte;
}
?>

Damit Sie die Dateien von SPIP nicht modifizieren müssen (die möglicherweise bei der nächsten Aktualisierung überschrieben werden), können Sie Ihre persönlichen Funktionen in einer Datei namens mes_fonctions.php3 installieren: wenn SPIP eine Datei mit diesem Namen findet, wird sie automatisch einbezogen.

Beispielsweise hat ARNO* das Filter enlettres entwickelt, das in der Standard-Distribution nicht enthalten ist. Dieses Filter schreibt eine Zahl in Buchstaben ([(#DATE|annee|enlettres)] =  «zweitausendzwei»); dieses Filter kann unter http://www.uzine.net/spip_contrib/a... heruntergeladen werden; wenn Sie es benutzen wollen, müssen Sie es in Ihre mes_fonctions.php3-Datei schreiben.

Seit [SPIP 1.5] ist es möglich, Parameter an die Filter zu übergeben. Die Syntax ist

Das Filter muß auf folgende Weise in mes_fonctions.php3 definiert sein:

Man kann auch eine beliebige PHP-Funktion aufrufen oder sich an die in SPIP oder in mes_fonctions.php3 definierten Funktionen anlehnen, mindestens an diejenigen, bei denen die Reihenfolge der Argumente stimmt (der zu bearbeitende Text muß unbedingt das erste Argument sein). Wenn man beispielsweise den Text auf eine gegebene Länge kürzen will (50 Zeichen), könnte man folgendes verwenden:

[(#TEXTE|couper{50})].

Autor klaus++, wshSchlegel Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands