De voorwaarde where verwacht één enkel argument, de conditie van een (MY)SQL-query. SPIP gebruikt deze waarde en combineert ze met de andere voorwaarden die mogelijk in ed lus zijn opgenomen.
Voorbeelden
Met de voorwaarde where kan eenvoudig een OR worden toegepast:
<BOUCLE_ou(ARTICLES){statut=redac}{where id_rubrique=10 OR id_rubrique=20}>
Er kunnen eenvoudig MYSQL functies mee worden gedaan:
<BOUCLE_yr(ARTICLES){where YEAR(date_creation)>1970}
Je kunt er sub-queries mee maken (in dit geval in plugin info_site
):
{where id_organisation IN (SELECT id_objet FROM spip_projets_liens WHERE objet='organisation' AND id_projet=#ID_PROJET)}
Met de voorwaarde where kun je een voorwaarde maken waarbij de twee testelementen velden uit een tabel zijn: zoek artikelen die dezelfde id_rubrique en id_secteur hebben
<BOUCLE_where(ARTICLES){where id_rubrique = id_secteur}>
Merk op dat het in al deze gevallen mogelijk zou zijn geweest om af te zien van where:
- avec {id_rubrique IN #LISTE{10,20}}
- avec {date_creation>1970-01-01}
- met een join (verbinding) in de SPIP-lus
- met een allesomvattende lus
Notatie van de conditie
Wanneer er een komma in de uitdrukking voorkomt, wat vaak gebeurt in een MYSQL-functieoproep, moet je de voorwaarde opnemen in een tag #VAL
.
Voorbeeld:
{where #VAL{"DATE_ADD(date_debut,INTERVAL 2 WEEK)<date_fin"}}
Zijn de voorwaarden complex, dan moet je de query voorbereiden in een #SET
:
#SET{where,ici calcul complexe}
<BOUCLE_articles_racine(ARTICLES) {...}{where #GET{where}}>
Conditionele where
Je kunt ook een vergelijking maken met de omgevingswaarden, indien van toepassing: {where?}