Die Syntax der Schleifen

Basis-Syntax

Die vereinfachte Syntax einer Schleife ist die folgende:

<BOUCLEn

>(TYP){Kriterium1}{Kriterium2}...{KriteriumX}>
  HTML-Code + SPIP-Tags
</BOUCLE<i>n</i><code>

Man hat in der Erläuterung der Schleifen und der Tags gesehen, dass HTML-Code + SPIP-Tags so oft wiederholt wird, wie die Schleife aus der Datenbank entnommene Elemente geliefert bekommt (also einmal, mehrmals oder null mal).

Hier ist die wichtige Zeile:

<BOUCLEn(TYP){Kriterium1}{Kriterium2}...{KriteriumX}>

-  Das Element BOUCLE ist die Anweisung, die anzeigt, dass es sich um eine SPIP-Schleife handelt; daher darf man es nicht modifizieren. Anders ausgedrückt: alle SPIP-Schleifen beginnen mit der Anweisung BOUCLE.

-  Das Element n ist wahlweise der Name der Schleife oder die Nummer der Schleife. Dieses Element kann der Webmaster sich für jede Schleife, die er verwendet, frei aussuchen. Weiter unten wird man sehen, dass es möglich ist (und darin besteht der einzige Sinn dieses Manövers), mehrere Schleifen in einem Skelet zu verwenden: es ist deshalb unerlässlich, ihnen Namen zu geben, durch die sie identifiziert werden können.

Wenn Sie Ihre Schleifen nummerieren wollen, sieht die Syntax (z.B. für Schleife Nummer 5) folgendermaßen aus:

<BOUCLE5...>
...
</BOUCLE5>

Wenn Sie Ihren Schleifen Namen geben wollen (das ist im allgemeinen praktischer, Ihr Code ist dann besser lesbar), müssen diese Namen unbedingt mit dem Symbol «_» beginnen (das gewöhnlich Unterstrich genannt wird). Zum Beispiel:

<BOUCLE_unterrubriken...>
...
</BOUCLE_unterrubriken>

-  Das Element (TYP). Dieses Element ist wesentlich: es zeigt an, welchen Elemente-Typ man erhalten möchte. Die Syntax ist wichtig: der TYP wird in Klammern angegeben (ohne Leerzeichen), er wird in Großbuchstaben geschrieben, und dieser TYP muss unbedingt einem der in SPIP vordefinierten Typen (die man in der vorliegenden Dokumentation findet) entsprechen: ARTICLES, RUBRIQUES, AUTEURS, BREVES usw.

Für das voranstehende Beispiel erhält man dann:

<BOUCLE_unterrubriken(RUBRIQUES)...>
...
</BOUCLE_unterrubriken>

-  Die Kriterien {Kriterium1}{Kriterium2}... Sie zeigen zum einen an, nach welchen Kriterien man die Elemente aus der Datenbank auswählen will (die in dieser Rubrik enthaltenen Unterrubriken anzeigen; die anderen Rubriken anzeigen, die auf demselben hierarchischen Niveau angesiedelt sind wie die aktuelle Rubrik...), zum anderen auch die Art und Weise, wie man die Elemente einordnen oder auswählen will (Artikel nach ihrem Datum einordnen, nach ihrem Titel... nur die ersten drei Artikel anzeigen, die Hälfte der Artikel anzeigen...). Je nachdem wie man die Kriterien kombiniert, kann man sehr leicht sehr leistungsfähige Anfragen erzeugen; etwa von der Art «die Liste der 5 letzten Artikel von diesem Autor anzeigen»:

<BOUCLE_selber_autor(ARTICLES){id_auteur}{par date}{inverse}{0,5}>
...
</BOUCLE_selber_autor>

Die verschiedenen Kriterien und deren Syntax werden im Folgenden für jeden einzelnen Schleifentyp erklärt (einige Kriterien funktionieren mit allen Schleifentypen, einige sind spezifisch für bestimmte Schleifentypen).

Vollständige Syntax

Die bisher vorgestellte Syntax kann mit konditionalen Elementen vervollständigt werden. Die vorstehend beschriebene Schleife zeigt die im Inneren der Schleife enthaltenen Elemente eines nach dem anderen an. SPIP erlaubt darüber hinaus die Angabe dessen, was man vor und nach der Schleife anzeigen will, falls sie einen oder mehrere Suchtreffer enthält, und das, was man anzeigen will, wenn in der Schleife kein Element gefunden wird.

Das ergibt:

<Bn>
    voranstehender optionaler HTML-Code
<BOUCLEn(TYP){Kriterium1}{Kriterium2}...{KriteriumX}>
    HTML-Code + SPIP-Tags
</BOUCLEn>
    nachstehender optionaler HTML-Code
</Bn>
    alternativer HTML-Code
<//Bn>

Der voranstehende optionale HTML-Code (vor ihm steht ein <Bn>; n ist wiederum die Nummer bzw. der Name der Schleife) wird nur dann angezeigt, wenn in der Schleife mindestens ein Suchtreffer bestätigt wird. Er wird dann vor den Resultaten der Schleife angezeigt.

Der nachstehende optionale HTML-Code (nach ihm steht ein </Bn>) wird nur dann angezeigt, wenn in der Schleife mindestens ein Suchtreffer bestätigt wird. Er wird dann nach den Resultaten der Schleife angezeigt.

Der alternative HTML-Code (nach ihm steht ein <//Bn>) wird anstelle der Schleife angezeigt (und damit genau an derselben Stelle wie die voranstehenden und nachstehenden optionalen Codes), wenn die Schleife keine Resultate gefunden hat.

Beispielsweise zeitigt der Code:

<B1>
    Diese Rubrik enthält die folgenden Elemente:
    <UL>

<BOUCLE1(ARTICLES){id_rubrique}>
    <LI>#TITRE
</BOUCLE1>

    </UL>
</B1>
    Diese Rubrik enthält keinen Artikel.
<//B1>

die folgenden Resultate:

-  Wenn es einen einzigen Artikel gibt:

    Diese Rubrik enthält die folgenden Elemente:
    <UL>
      <LI> Titel des Artikels
    </UL>

-  Wenn es mehrere Artikel gibt:

    Diese Rubrik enthält die folgenden Elemente:
    <UL>
      <LI> Titel des Artikels Nummer 1
      <LI> Titel des Artikels Nummer 2
      ...
      <LI> Titel des letzten Artikels
    </UL>

-  Wenn es gar keinen Artikel gibt:

    Diese Rubrik enthält keinen Artikel.

Anmerkung: Die Art und Weise, auf die SPIP die Schleifen interpretiert, verbietet es, eine Schleife zwischen <B1> und <BOUCLE1> anzubringen. Im Gegensatz dazu ist es möglich, zusätzliche Schleifen in die im optionalen Bereich gelegenen Partien nach der Definition <BOUCLE1...> einzustellen. Wenn Sie wirklich eine Schleife in den nachstehenden optionalen Teil einbauen müssen, muss dies mittels eines <INCLURE()>-Kommandos geschehen; näheres hierzu weiter unten.

Die Kriterien der Umgebung in Kaskadenschaltungen

Jede Schleife führt die Auswahl aus den aus der Datenbank entnommenen Elementen nach Maßgabe der Kriterien durch. Diese Kriterien korrespondieren mit der Umgebung, in der sich die Schleife befindet.

Ein Beispiel: wenn man eine Schleife der Art «die in dieser Rubrik enthaltenen Artikel anzeigen» vorsieht, muss man wissen, um welche Rubrik es sich handelt. Das ist es, was man als die Umgebung bezeichnet.

-  Die von der URL gelieferte Umgebung

Wenn eine Seite einer SPIP-Site besucht wird, enthält ihre Adresse im allgemeinen eine Variable. Ein Beispiel:

-  rubrique.php3?id_rubrique=15

Diese Variable definiert dann eine erste Umgebung: die Schleife «die in dieser Rubrik enthaltenen Artikel anzeigen» muss dann als «die in der Rubrik Nummer 15 enthaltenen Artikel anzeigen» aufgefasst werden.

Wenn man die Adresse mit demselben Template-Code als

-  rubrique.php3?id_rubrique=7

angibt, wird aus der Interpretation dieser Schleife einleuchtenderweise «die in der Rubrik Nummer 7 enthaltenen Artikel anzeigen».

-  Die von den anderen Schleifen gelieferte Umgebung

Im Inneren einer Schleife wird die Umgebung durch jedes Element der Schleife modifiziert. Wenn man Schleifen innerhalb anderer Schleifen anordnet, vererbt man damit die verschachtelten Umgebungen der einen in die anderen.

Also muss man in der folgenden Struktur:

<BOUCLE_artikel: die Artikel in dieser Rubrik anzeigen>     
    <LI>Den Titel des Artikel anzeigen
        <BOUCLE_autoren: die Autoren dieses Artikels anzeigen>
            Autoren-Name
        </BOUCLE_autoren>
</BOUCLE_artikel>

die Dinge folgendermaßen auffassen:

-  die erste Schleife (BOUCLE_artikel) zeigt die Artikel gemäß der von der URL gelieferten Umgebung (beispielsweise id_rubrique=15) als Funktion der Rubrik an;

-  in dieser Schleife erhält man einen oder mehrere Artikel;

-  «innerhalb» eines jeden dieser Artikel hat man eine andere Umgebung (nämlich diejenige des Artikels, beispielsweise id_article=199);

-  bei der zweiten Schleife (BOUCLE_autoren), die im Inneren der ersten Schleife installiert ist, kommt’s bei jeder ihrer aufeinanderfolgenden Ausführungen (sie wird für jeden Artikel der ersten Schleife einmal ausgeführt) darauf an: aus «die Autoren dieses Artikels anzeigen» wird nacheinander «die Autoren des ersten Artikels anzeigen», «die Autoren des zweiten Artikels anzeigen» und so fort in der Folge.

Man sieht, dass man durch die Verschachtelung der aufeinanderfolgenden Schleifen verschiedenartige Schleifen erhält, von denen die einen die anderen einschließen, welche dann vom Resultat der Schleifen abhängig sind, innerhalb derer sie selbst gelegen sind. Schließlich hängt die allererste Schleife (diejenige, die alle anderen enthält) von einem Parameter ab, der in der Adresse der Seite festgelegt ist.

Eingeschlossene Schleifen und aufeinanderfolgende Schleifen

So wie man Schleifen ineinander verschachteln kann (dann hängt jede eingeschlossene Schleife vom Resultat der Schleife ab, innerhalb derer sie gelegen ist), kann man Schleifen ebensogut aufeinanderfolgend anordnen; aufeinanderfolgende Schleifen üben keinen wechselseitigen Einfluss aufeinander aus.

Beispielsweise besteht die Seite einer Rubrik typischerweise aus den folgenden Elementen:

<BOUCLE_rubrik(RUBRIQUES){id_rubrique}>
    Titel der Rubrik
      <BOUCLE_artikel(ARTICLES){id_rubrique}>
          <LI> Titel des Artikels
      </BOUCLE_artikel>

      <BOUCLE_unterrubriken(RUBRIQUES){id_rubrique}>
          <LI> Titel der Unterrubrik
      </BOUCLE_unterrubriken>
</BOUCLE_rubrik>
    Hier gibt es keine Rubriken.
<//B_rubrik>

Die erste Schleife (BOUCLE_rubrik) hängt von der in der URL der Seite übergebenen Variablen ab (beispielsweise id_rubrique=15).

Die folgenden Schleifen (BOUCLE_artikel und BOUCLE_unterrubriken) sind im Inneren der ersten Schleife angebracht. Wenn es also keine Rubrik Nummer 15 gibt, erhält die erste Schleife auch kein Resultat (dann wird der alternative Code «Hier gibt es keine Rubriken.» angezeigt); in diesem Falle werden die beiden eingeschlossenen Schleifen völlig ignoriert. Wenn es aber eine Rubrik Nummer 15 gibt, werden diese beiden Unter-Schleifen analysiert.

Man stellt auch fest, dass diese beiden Schleifen aufeinanderfolgend angeordnet sind. Deshalb arbeiten sie in Abhängigkeit von der ersten Schleife, aber unabhängig voneinander. Wenn es in der Rubrik Nummer 15 keine Artikel gibt (BOUCLE_artikel), wird trotzdem die Liste der Unterrubriken der Rubrik Nummer 15 angezeigt (BOUCLE_unterrubriken); umgekehrt genauso.

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

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