SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 276 visiteurs en ce moment

Accueil > Squelettes > Tutoriels pour squelettes > La balise #ENV

La balise #ENV

Fonctionnement et usage divers et variés

25 septembre 2007 – par Maïeul – 60 commentaires

14 votes

Régulièrement, on lit sur la liste ou sur IRC « la balise #ENV, j’y comprends rien » . Tentons ici une explication sur le pourquoi du comment de cette balise...

#ENV, qu’est-ce à dire ?

Si nous lisons la documentation officielle, nous voyons que

[(#ENVxxxx,zzzz)] (depuis SPIP 1.8, SPIP 1.8.1) permet d’accéder à la variable de nom xxxx passée par la requête HTTP. zzzz est une partie optionnelle qui permet de retourner une valeur même si la variable xxxx n’existe pas.

Ah... mais en fait, c’est plus subtil que cela. En réalité, #ENV permet d’accéder aux variables dites d’environnement d’un squelette.

Qu’es aquò variable d’environnement ?

Un squelette SPIP est appelé dans un certain contexte. Par exemple, si vous appelez http://www.spip.net/spip.php?article1 ou bien http://www.spip.net/spip.php?article2, SPIP utilisera le même squelette , article.html, mais ne lui fournira pas les mêmes variables d’environnement.

Mais quelles variables d’environnement sont passées aux squelettes ?

C’est vrai ça, on sait que le squelette reçoit des variables d’environnement, mais lesquelles ?

En préambule, je vais vous donner un « truc » pour savoir quelles variables
d’environnement sont passées à votre squelette.

Il s’agit d’un mode « debug » de SPIP. À la fin de l’adresse d’une page publique, rajoutez &var_mode=debug... Et là ? Surprise ! vous arrivez sur la page de débogage de squelette.

Sur cette page est listé chaque squelette appelé par la page, avec différents
détails...

Ce qui nous intéresse plus particulièrement, c’est la partie #ENV [1]

Prenons l’exemple du squelette de la dist, appelons la page http://site.tld/spip.php?article2&var_mode=debug, nous obtenons ceci

Et voilà la liste des variables d’environnement, avec leurs valeurs... Ainsi, dans cet exemple, si nous écrivons #ENV{id_article} dans le squelette article.html ; nous obtiendrons 2

Bon, d’accord... maintenant, on connaît ce truc, mais bon ... ce serait mieux si on savait d’avance quelles sont ces fameuses variables.

Cas 1 : le squelette de la page

Sans doute le cas le plus simple. Le squelette qui est appelé « directement » quand on accède à une page reçoit comme variables #ENV l’ensemble des variables fournies par l’URL.

Exemple : http://www.site.tld/?page=xxx&var1=val1&

Passera au squelette xxx, les variables d’environnements suivantes :

VariableValeur
page xxx
var1 val1

Cas 2 : les squelettes inclus

Bon, bon... vous incluez un squelette dans votre squelette...

Si vous faites <INCLURE{fond=yy}{var2=val2}> [2], le squelette yy reçoit les variables d’environnement suivantes :

VariableValeur
fond yy
var2 val2

Signalons, au passage que SPIP transmet par défaut, le contexte de langue au squelette inclus.

Ainsi, si vous incluez votre squelette dans un contexte de langue française, le squelette inclus recevra comme variable #ENV« lang » la valeur « fr ». Cependant, il y a possibilité de forcer la variable lang ainsi passée. Il suffit de faire, par exemple<INCLURE{fond=yy}{var2=val2}{lang=en}>.

Signalons aussi le cas des paramètres sans arguments... du genre <INCLURE{fond=yy}{id_article}. Eh bien, dans ce cas, le squelette inclus recevra la variable #ENV « id_article » dont la valeur sera celle de l’id_article courant.

Enfin, signalons la possibilité de passer à un squelette inclus l’ensemble des variables d’environnement du squelette incluant ! Il suffit pour cela d’ajouter le critère {env} dans l’appel de votre INCLURE... Cependant, il est conseillé d’éviter cela : en effet, rappelons qu’un fichier de cache est généré pour chaque combinaison de variable #ENV.

Cas 3 : les modèles

Depuis SPIP 1.9.1, il est possible d’installer des modèles dans un article.

Pour rappel, la syntaxe générale de l’appel d’un modèle est <modelexxx|align|var1=val1|...|varn=valn>

Un modèle, n’est après tout qu’un squelette. Comme tout squelette, il reçoit des paramètres #ENV.

Prenons un exemple simple <modele1|left|variable=valeur>.

Les variables passées sont :

VariableValeur
id 1
id_modele 1
align left
variable valeur
lang Langue du contexte

Depuis SPIP 3, les modèles reçoivent aussi comme variables d’environnement les variables de la page l’appelant. Cependant les arguments passés explicitement au modèle se retrouvent dans #ENV{args/nomdelargument}.

Cas 4 : les formulaires

Rappelons qu’un formulaire est composé de deux fichiers :
-  un squelette
-  un fichier php, chargé de la prise en charge des données.

C’est le fichier php, qui en appelant le squelette, va lui transmettre un certain nombres de variables #ENV. Il faut donc regarder pour chaque formulaire ce qu’il en est (via le mode debug).

Cas 5 : les pages en « article »,« rubrique » etc

Les pages qui fonctionnent en URL propres fournissent leurs variables #ENV selon des règles spéciales.

Si une page fonctionnant en URL propres est une page de type « article », le squelette recevra comme variable d’environnement id_article de la valeur du numéro de l’article concerné...

Il en est de même pour les pages de types rubriques, mot, etc.

Des variables d’environnement de date

Des variables d’environnement calculées automatiquement [3] sont passées à tout les squelettes calculés (sauf les modèles pour SPIP < 3)

Ces variables sont date et date_redac, qui ont pour valeur la date de calcul de la page... Elles servent au calcul des critères {age} et {age_redac}

Forme abrégée

En dehors de toute boucle, #TOTO est strictement égale à #ENV{toto}. Cependant, sauf cas exceptionnel, on préférera la première syntaxe : en effet, #TOTO appelée dans une boucle possédant la balise #TOTO sera compris dans le contexte de cette boucle.

Exemple :

  1. #ID_ARTICLE #ENV{id_article}
  2. <BOUCLE_article(ARTICLES)>
  3. #ID_ARTICLE #ENV{id_article}
  4. </BOUCLE_article>

Télécharger

  • En dehors de la boucle #ID_ARTICLE et #ENV{id_article} sont équivalents.
  • Dans la boucle, en revanche, ils ne le sont pas.

Quelles utilisations ?

De nombreuses utilisations sont possibles, notamment à l’aide des filtres de comparaisons. Cela pourrait être l’objet d’une documentation à part.

La balise #EXPOSE

Citons cependant le plus souvent demandé : l’utilisation de la balise #EXPOSE.

Dans une boucle (OBJETS), où chaque objet à un identifiant unique de la forme id_objet [4], lorsque cet identifiant est égal à la valeur de la variable d’environnement id_objet, la balise #EXPOSE retourne son premier argument ; sinon, son second argument.

Exemple : Soit la page www.domaine.tld/spip.php?page=toto&id_article=2

Supposons que notre site n’ait que deux articles, les numéros 1 et 2.

Si le squelette toto.html contient la boucle suivante

<BOUCLE_toto(ARTICLES)>
l'article n°#ID_ARTICLE #EXPOSE{"est l'article courant", "n'est pas l'article courant"}
</BOUCLE_toto>

Alors le résultat sera

l’article n°1 n’est pas l’article courant
l’article n°2 est l’article courant

/ !\ La syntaxe SPIP prohibe totalement de mettre des boucles entres {}. Seule des balises et filtres peuvent exister.

Conclusion : encore pas mal de rédaction

Voilà ! Il y a encore pas mal de choses à écrire pour saisir toutes les subtilités des variables d’environnement, mais j’espère que cet article, laborieusement écrit à la sueur des mes doigts vous aura permis de comprendre un peu mieux comment les déterminer.

Notes

[1ben oui quoi, c’est un tuto sur #ENV

[2il semble que ce soit la même chose avec #INCLURE, mais j’avoue ne pas avoir saisi la nuance

[3sauf si on force leurs valeurs lors d’un ou #INCLURE

[4par exemple, dans une boucle (ARTICLES), chaque article à un identifiant id_article

Dernière modification de cette page le 9 février 2015

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 6 mars à 01:31, par Gaby En réponse à : La balise #ENV

    J’adore ces articles où on comprend encore moins l’explication que celle de la doc officielle... Totalement inutile et abscons. C’est si compliqué de faire des exemple simple et parlant ?

    • Le 6 mars à 09:30, par Maïeul En réponse à : La balise #ENV

      Cher Monsieur,

      je vous propose donc d’écrire votre propre documentation.

      Je vous signale, en passant, que vous êtes le premier à ne pas comprendre cette documentation.

      Peut être que si vous indiquiez ce que vous ne comprenez pas, ou mieux, ce que vous cherchez à faire, nous pourrions vous aider. Mais il est vrai que la manière dont vous commencez la conversation ne prête guère à l’envie de vous aider.

    Répondre à ce message

  • Le 27 février 2008 à 16:38, par Loiseau2nuit En réponse à : La balise #ENV

    Maïeul, si je puis me permettre, « Je T’Aime !!! » :-D :-D :-D

    • Le 27 février 2008 à 17:14, par Loiseau2nuit En réponse à : La balise #ENV

      En fait, peut être pas encore tout à fait :-P

      Le contexte : sur un site, j’ai 5 rubriques actives dont 2 qui sont des rubriques listant des produits. la première des 2 liste des produits pour les humains (id n°2), la seconde des produits pour les animaux (id n°5).

      après avoir lu ceci :

      Si le squelette toto.html contient la boucle suivante

      <BOUCLE_toto(ARTICLES)>
      l'article n°#ID_ARTICLE #EXPOSE{"est l'article courant", "n'est pas l'article courant"}
      </BOUCLE_toto>

      Alors le résultat sera

      je me suis testé sur le code suivant sur le squelette d’un même inc, qui est appelé par les 2 rubriques produit au niveau du menu de navigation par rubrique :

      <BOUCLE_quelle_rubrique_produit(RUBRIQUES) {id_rubrique=2}>
      #EXPOSE{"
                      <ul>
                              <BOUCLE_gammes(MOTS) {type=Gamme} {tout}>
                                      <li><a href="#URL_MOT"[ class="(#EXPOSE)"]>#TITRE</a></li>
                              </BOUCLE_gammes>
                      </ul>
                      ",
                      "
                      <ul>
                              <BOUCLE_gammes_animales(MOTS) {type=Gamme_animale} {tout}>
                                      <li><a href="#URL_MOT"[ class="(#EXPOSE)"]>#TITRE</a></li>
                              </BOUCLE_gammes_animales>
                      </ul>       
                      "
              }
      </BOUCLE_quelle_rubrique_produit>

      là dessus dans ma page rubrique, j’appelle donc mon inc comme ceci :

      <a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE)]</a>
              <!-- Affichage des autres gammes de produits de la rubrique en cours et uniquement celle-ci-->
                      [(#EXPOSE|=={on}|?{' ',''})
                      <INCLURE{fond=skel_catalogue/inc/list-gammes}{id_rubrique}{id_article}>
                      ]

      M’attendant tout naïvement à recevoir à l’affichage final un truc du style :

      et ce que j’obtiens au final est quelque peu différents, à savoir :

      J’en conclus donc que lorsque l’on veut soit un tronçon de code, soit l’autre, à la différence d’une simple phrase, là il faut adapter la syntaxe d’#EXPOSE d’une manière que je ne visualise pas. Ou alors je ùme suis tout bonnement planté sévère dans mes critère/ma boucle ???

      Alors ? Dois-je demander le divorce maintenant ou est-ce que j’attends un peu ? :-P

      Quoi qu’il en soit, merci à toi qui m’a lu, compris, et qui saura me donner une piste ;)

    • Le 28 février 2008 à 10:19, par Maïeul En réponse à : La balise #ENV

      hum j’ai pas très bien compris ...

      d’abord quel sont les paramètres #ENV que te donne le debuguer pour ton fichier inclut ?

      ensuite quel est le code de ce fichier inclut.

      Et puis je crois me souvenir (but not sur) que l’on peut pas mettre de <INCLURE> entre les parentheèse et les crochets. Mais on peut mettre un #INCLURE

    • Le 28 février 2008 à 10:41, par Loiseau2nuit En réponse à : La balise #ENV

      monsite.tld/spip.php ?rubrique2&var_mode=debug

      squelettes/skel_catalogue/inc/list-gammes.html : squelette résultat code

      #ENV

      fond : skel_catalogue/inc/list-gammes
      id_rubrique : 2
      id_article :
      lang : fr

      1 boucle résultat code        <BOUCLE_quelle_rubrique_produit(RUBRIQUES) {id_rubrique=2}>
      2 boucle résultat code        <BOUCLE_gammes(MOTS) {type=Gamme} {tout}>
      3 boucle résultat code        <BOUCLE_gammes_animales(MOTS) {type=Gamme_animale} {tout}>

      Donc à prioris, l’inc a bien compris où elle se situait. Ce qui est déjà un début, seulement je ne comprend pas pourquoi la boucle n°3 s’execute alors qu’à priori, mon code lui demande spécifiquement de NE PAS s’executer si on se trouve en rubrique 2.

      Or, comme l’inc n’est appelée que par la rubrique 2 et la rubrique 5...

      Quand au code de mon inc, le fichier list-gammes.html, c’est le premier tronçon de code que j’ai envoyé, à savoir celui-ci :

      <BOUCLE_quelle_rubrique_produit(RUBRIQUES) {id_rubrique=2}>
      #EXPOSE{"
                      <ul>
                              <BOUCLE_gammes(MOTS) {type=Gamme} {tout}>
                                      <li><a href="#URL_MOT"[ class="(#EXPOSE)"]>#TITRE</a></li>
                              </BOUCLE_gammes>
                      </ul>
                      ",
                      "
                      <ul>
                              <BOUCLE_gammes_animales(MOTS) {type=Gamme_animale} {tout}>
                                      <li><a href="#URL_MOT"[ class="(#EXPOSE)"]>#TITRE</a></li>
                              </BOUCLE_gammes_animales>
                      </ul>       
                      "
              }
      </BOUCLE_quelle_rubrique_produit>

      quand à l’INCLURE entre parenthèse et crochets, à prioris, c’est dans mon squelette rubrique que cela intervient et ca fonctionnait plutôt bien avant que je ne cherche à rajouter une liste de gammes spécifique à la rubrique animale (la n°5 donc.)

      Ceci dit, je veux bien tester en remplacant mon <INCLURE...> par un #INCLURE mais je ne maitrise pas cette syntaxe, je ne savais d’ailleurs pas qu’elle existait, ne m’étant jamais trop penché sur les mécanismes de la création de mes propres balises.

      Alors c’est grave Docteur ???

      Merci encore en tout cas.

    • Le 2 mars 2008 à 10:34, par Maïeul En réponse à : La balise #ENV

      la raison est assez simple : on ne peut pas mettre entre {} des boucles mais seulement des combinaison de balise ;-)

      faut se débrouiller autrement (avec une boucle test)

    • Le 2 mars 2008 à 10:55, par Loiseau2nuit En réponse à : La balise #ENV

      Seulement des combinaisons de balises ?

      donc si je me résume, en mettant mes 2 listes à puce de Mot-clés dans des inclure je devrais ensuite pouvoir faire un truc du style :

      #EXPOSE{"
                     <INCLURE{fond=list-gammes}>
                     ",
                     "
                     <INCLURE{fond=list-gammes-animales}>      
                     "
             }

      Pour toi ca pourrait marcher ???

      (Dsl j’aurais bien testé de suite, mais je ne suis pas sur ma machine-serveur...)

      J’ai encore un peu de mal avec les boucles test et/ou conditionnelles. Je crois que j’ai encore du pain sur la planche.

      En tout cas merci encore ;)

    • Le 9 février 2015 à 11:32, par Loiseau2nuit En réponse à : La balise #ENV

      Je confirme (7 ans après !!! Mieux vaut tard que jamais ...) ça a marché !
      ... et dans l’absolu ça marche encore vu que je n’ai plus retouché le site depuis (1.9 stable) ^^

      Merci :)

    • Le 9 février 2015 à 11:40, par Maïeul En réponse à : La balise #ENV

      avec SPIP 3, tu peux simplifier les inclusions avec le critère de boucle {si #EXPOSE}. Cela étant, cela implique de lire 2 fois #EXPOSÉ (ou de mettre une boucle condition).

    Répondre à ce message

  • Le 22 février 2013 à 15:10, par emmanuel En réponse à : La balise #ENV

    Bonjour,
    dans mes squelettes, j’utilise la variable #ENVlang pour récupérer la langue courante.
    Lorsque la variable langue est passé dans l’url, je n’ai aucun soucis.
    -  Quand aucune variable langue n’est passé dans l’url, la variable #ENVlang celle-ci est vide, sauf si elle consultée dans un squelette inclus en dehors de toute boucle, où elle prend la valeur « fr ».
    -  Si le squelette est inclus au sein d’une boucle (de l’id_article courant par exemple), celle-ci reste vide.
    Quelqu’un peut-il m’expliquer ce comportement ?
    Merci !

    Répondre à ce message

  • Le 22 juillet 2011 à 00:52, par severo En réponse à : La balise #ENV

    Peut être peut-on ajouter que :
    #ENV{variable}
    et
    #VARIABLE
    donnent le même résultat (me corriger si je dis n’importe quoi, mais il me semble que c’est vrai) ! Evidemment avec des fonctionnalités en moins (valeur par défaut, et les astérisques)

    • Le 6 août 2012 à 16:12, par Maïeul En réponse à : La balise #ENV

      oui, tt a fait. J’ai rajouté, avec une mise en garde.

    Répondre à ce message

  • Le 30 avril 2012 à 17:33, par Figoolu En réponse à : La balise #ENV

    Bonjour,

    J’aimerai savoir si c’est possible de passer plusieurs paramètres pour une variable.
    Je voudrais pouvoir, à partir d’un formulaire, récupérer plusieurs identifiants de rubrique.
    J’essaie d’obtenir « id_rubrique=2,7,11 » par exemple, pour récupérer les articles des rubriques 2, 7 et 11.
    Mais pour l’instant, j’arrive seulement à avoir : « id_rubrique=2&id_rubrique=7&id_rubrique=11 », ce qui, au final, me renvoie « id_rubrique=11 » (seulement la dernière donnée est prise en compte).
    Avez-vous une idée ?

    • Le 30 avril 2012 à 17:40, par Figoolu En réponse à : La balise #ENV

      J’ai oublié de préciser que je récupère mes numéros d’identifiants grâce à un formulaire.
      Je récupère les valeurs avec un tableau (#SET et #GET).
      Donc la valeur n’est pas défini par avance et change en fonction de ce qu’on demande.

    • Le 30 avril 2012 à 17:46, par Maïeul En réponse à : La balise #ENV

      Si s’agis de passer à un squelette inclus, regardez du côté de la balise #ARRAY ou de la balise #LISTE de SPIP 3 (peut être disponible sous SPIP 2 avec bonux).

      S’il s’agit de récuperer via un formulaire, il faut que les attributs « name » de vos formulaires retournent des tableaux, ie, à la place de :

      <input name="id_rubrique[]" …>
      et non pas
      <input name="id_rubrique" …>

      Puis dans votre code SPIP, faire <BOUCLE_articles(ARTICLES){id_rubrique IN id_rubrique}>

    • Le 1er mai 2012 à 11:36, par Figoolu En réponse à : La balise #ENV

      Bonjour,
      merci pour cette réponse très rapide.
      Le problème c’est que mon formulaire et ma recherche ne sont pas dans le même squelette.
      J’utilise le plugin « recherche avancée ». Mon formulaire est dans recherche-avancee.html et ma recherche se trouve dans recherche.html.
      Comment est-ce que je peux faire pour que le tableau que je recupère dans recherche-avancee.html soit envoyé à mon autre squelette pour que la recherche puisse s’effectuer ?

    • Le 2 mai 2012 à 16:45, par Maïeul En réponse à : La balise #ENV

      cela ne change rien au problème, ou alors je l’ai pas compris :)

      Tu pourrais donner le code des tes formulaires ? (utilise la balise code)

    • Le 2 mai 2012 à 16:55, par Figoolu En réponse à : La balise #ENV

      J’ai essayé avec un tableau que j’ai appelé « les_idsrub ».
      Voici ce que j’ai mis dans recherche-avancee.html :

      <!-- SOUS RUBRIQUE -->
              #SET{les_idsrub, #ARRAY}
              <B_surrub>
              #SET{les_idsrub, #ARRAY}
                 <BOUCLE_surrub(RUBRIQUES){racine}>
                      <tr><td>
                      <label>#TITRE </label>
                      </td><td>
                      <select name="id_rubrique" >
                      <option value="" style="color:silver"><:rechercheavancee:allrub:></option>
                      <BOUCLE_sourub(RUBRIQUES){id_parent=#ID_RUBRIQUE}>
                      <option value="#ID_RUBRIQUE" [(#SET{les_idsrub,#GET{les_idsrub}|push{#ID_RUBRIQUE}}?{"SELECTED"})]>#TITRE </option>
                      </BOUCLE_sourub>
                      </select>
                      </td></tr>
                      </BOUCLE_surrub>
         </B_surrub>

      Et j’essaie de récupérer le résultat dans recherche.html :
      -  tout d’abord en récupérant le formulaire

      <INCLURE{fond=formulaires/recherche-avancee}{recherche}{avancee}{id_rubrique}{tri}{titre}>


      -  puis en avec une boucle

      <BOUCLE_rub(RUBRIQUES){id_rubrique IN #GET{les_idsrub}}> .... </BOUCLE_rub>

      C’est ce qui me semblait logique mais mon tableau ne me retourne rien (vu en debug).
      Je n’ai plus d’idée de comment arranger ça.

    • Le 2 mai 2012 à 17:30, par Maïeul En réponse à : La balise #ENV

      oulà ! tu mélange tout les niveaux.

      Il faut bien distinguer le niveau de ce qui relève de SPIP et le niveau de ce qui relève du HTML.

      Là tu rempli un tableau (les_idsrubs) au niveau du squelette recherche-avancee. Or ce que tu cherche c’est que ton formulaire produise, lorsqu’il est rempli, un tableau qui sera passé au squelette.

      Par conséquent le code correcte serait (nonobstant le problème du code html en tableau qui est à améliorer : voir http://www.spip.net/fr_article3791.html)

      <!-- SOUS RUBRIQUE -->
             <B_surrub>
                <BOUCLE_surrub(RUBRIQUES){racine}>
                     <tr><td>
                     <label>#TITRE </label>
                     </td><td>
                     <select name="les_idsrub[]" >
                     <option value="" style="color:silver"><:rechercheavancee:allrub:></option>
                     <BOUCLE_sourub(RUBRIQUES){id_parent=#ID_RUBRIQUE}>
                     <option value="#ID_RUBRIQUE"  [(#ID_RUBRIQUE|in_array{#ENV{les_idrubs}}|oui)selected="selected"]>#TITRE </option>
                     </BOUCLE_sourub>
                     </select>
                     </td></tr>
                     </BOUCLE_surrub>
        </B_surrub>

      et dans recherche.html, mettre :
      <code>
      <INCLURE{fond=formulaires/recherche-avancee}{recherche}{avancee}{les_idsrub}{tri}{titre}>

      Lorsque la personne va remplir le formulaire et le valider, tu devrais obtenir une url contenant des infos du type lesids_rubrique[]=xx&lesids_rubrique[]=yy.

      Par conséquent, la variable d’environnement #ENVlesids_rubrique va être de type « tableau ». Il faudra la passé au squelette inclu.

    Répondre à ce message

  • Le 20 janvier 2010 à 12:54, par filnug En réponse à : La balise #ENV

    décidément Maïeul, votre doc est tjs intéressante !!!

    si j’ai une url ?rubrique1&mots[1]=1&couleurs[1]=4 , comment je fais pour récupérer les id de « mots » ET "couleurs ? du genre : <BOUCLE_mot_art(MOTS){id_mot==(#ENV{mots&couleurs}> ???

    Le but de cette recherche/question est en rapport à ma question pour le plugin « critère mots ». Mon but est d’éviter que mon lien url <a href="[(#SELF|parametre_url{mots&#091;#COMPTEUR_BOUCLE&#093;,#ID_MOT})]"> n’ajoute tout le temps des nouveaux argument dans l’url, mais se contente de 2 maximum. D’où mon idée, d’une fois &mots=#ID_MOT et &couleurs=#ID_MOT

    • Le 22 janvier 2010 à 16:44, par Maïeul En réponse à : La balise #ENV

      comme l’a dit denisb dans son poste, il faut que tu fasse un |array_merge des #ENV (#ENV{mots[1]et#ENV{couleur[1]}. Par exemple

      1. {id_mot IN #ENV{mots[1]}|array_merge{#ENV{couleurs[1]}}}
    • Le 22 janvier 2010 à 17:12, par filnug En réponse à : La balise #ENV

      Merci beaucoup pour tes réponses !!!

    Répondre à ce message

  • Le 23 avril 2010 à 00:06, par Frédéric En réponse à : La balise #ENV

    Bonjour,

    J’aimerais que l’aspect des formulaires de forum change en fonction de l’article auquel se rapporte le forum. J’imagine que c’est possible en récupérant l’ID_ARTICLE dans la page forum.html mais je n’arrive pas à le récupérer... quelqu’un pourrait-il m’aider ?

    Merci !

    • Le 23 avril 2010 à 18:13, par Maïeul En réponse à : La balise #ENV

      Cela n’a pas trait directement au sujet de cet article. Cependant je pense (sans connaitre très bien les squelette par défaut de spip) que #ENV{id_article} devrait faire l’affaire.

    Répondre à ce message

  • Le 21 mai 2010 à 09:52, par Maxime Charruel En réponse à : La balise #ENV

    Bonjour !

    Dans le but de finaliser mon plugin, j’ai besoin de faire passer mes variables d’environnement via un lien javascript. Je m’explique, j’ai ceci :

    1. <?php
    2. $flux .= '<script src="'.lienversmapage.'" type="text/javascript"></script>';
    3. ?>

    Télécharger

    Je voudrais passer #ENV à mapage, quelquechose du genre :

    1. <?php
    2. $flux .= '<script src="(#ENV{'.lienversmapage.'})" type="text/javascript"></script>';
    3. ?>

    Télécharger

    Mais c’est pas ça :P

    Merci !

    • Le 21 mai 2010 à 10:31, par Maïeul En réponse à : La balise #ENV

      rien compris à ce que vous dite !

      pourquoi mettez vous du php ? normalement il n’y a pas besoin de php dans un squelette spip.

      Pouvez vous donner un exemple de type de liens que vous voudriez voir généré.

    • Le 21 mai 2010 à 10:45, par Maxime Charruel En réponse à : La balise #ENV

      En fait, j’ai oublié de préciser que cette ligne de code se trouve dans monplugin.fonctions.php.
      Ma fonction est insert_head, elle doit insérer dans mon head un .js, d’où le :

      1. <script src="'.lienversmapage.'" type="text/javascript"></script>

      L’intégration du .js fonctionne parfaitement, seulement, dans mon .js, j’utilise les balises #ENV{type} et #ENV{page}. J’aurai donc besoin de faire passer mes variables d’environnement. Je suis peut-être sur une mauvaise piste, il y a peut-être une autre solution.

      En gros, j’aimerai que mon lien envoie ceci :

      1. <script src="'.lienversmapage.'&type=#ENV{type}" type="text/javascript"></script>

      Mais ça ne fonctionne pas !
      Merci !

    • Le 21 mai 2010 à 14:11, par Maxime Charruel En réponse à : La balise #ENV

      J’ai ciblé le problème, en fait, vu que mon fichier .js est dans le header, quand je fais #ENV{page} je me retrouve avec le nom du fichier .js (dont je m’en fous complètement :P).
      Je souhaite récupérer le nom de la page (rubrique/article/auteur), seulement voilà, dans l’ordre d’appel, j’ai mon header / mon css / ma page :(

      Je vais voir si, avec un lien, je peux pas récupérer les variables d’environnement !

    • Le 22 mai 2010 à 11:02, par Maïeul En réponse à : La balise #ENV

      malheureusement dans le php on ne peut pas utiliser les balises de spip.

      En revanche je pense que les variables d’environnement se trouve dans le tableau des $GLOBALS

      ceci dit, pourquoi passer par un insert_head si ce n’est pas pour faire un plugin ? autant mettre directement dans le head à partir du du squelette ...

    Répondre à ce message

  • Le 6 mars 2010 à 14:47, par ? En réponse à : La balise #ENV

    Bonjour,

    Article très intéressant mais il reste encore des zones d’ombres pour moi.
    Par exemple :
    J’ai une url du type ?rubr=1,2,3 (encodée avec urlencode de php)

    dans le fichier qui reçoit ce paramètre si je fais
    #ENV{rubr} ça affiche bien 1,2,3
    maintenant, si je mets dans une boucle du type

    <BOUCLE_lieux(ARTICLES){id_secteur=1}{id_rubrique IN #ENV{rubr}}>

    Ca n’affiche que la rubrique 1 (le premier id qu’il rencontre)

    J’ai essayé de faire un filtre dans mes_fonctions.php avec un urldecode mais je ne sais pas où le mettre.

    #ENV|mon_filtre{rubr} renvoie un tableau sérialisé de toutes les variables d’environnement et

    #ENV{rubr}|mon_filtre n’agit pas.

    D’où question : peut-on appliquer un filtre sur #ENV, si oui, comment ?

    Sinon, comment faire pour récupérer ce genre d’url ?

    Merci à toutes et tous

    Serge

    • Le 8 mars 2010 à 11:21, par Maïeul En réponse à : La balise #ENV

      Bonjour,

      je suis vraiment étonné que votre test n’agisse pas. Êtes vous sûr que vos rubrique 1,2,3 soit dans le secteur 1 ?

    Répondre à ce message

  • Le 6 mai 2009 à 16:07, par wal En réponse à : variable « personnalisées » dans l’URL

    bonjour à tous,
    j’ai une petite question : dans spip 2, peux-t’on passer une variable quelconque dans une url (genre monsite/spip.php ?rubrique60&toto=7), et récupérer ensuite cette variable avec la balise #ENVtoto  ?

    merci de vos réponses !

    • Le 6 mai 2009 à 18:09, par Maïeul En réponse à : variable « personnalisées » dans l’URL

      oui, tout à fait ... c’était déjà le cas avant.

      Attention, la variable #ENV n’est passé qu’au premier squelette appelé, pas au squelette inclu, sauf si tu explicite lors de l’appel que tu veux lui passer...

    • Le 6 mai 2009 à 20:05, par wal En réponse à : variable « personnalisées » dans l’URL

      ok merci !
      mais ça marche pas chez moi... si je résume, avec mon url monsite/spip.php ?rubrique60&toto=7, je passe la variable toto au squelette rubrique.html, et je récupère la valeur de toto dans ce squelette grace à la balise #ENVtoto, échec, sauf que ça me retourne systématiquement « échec » ... comprends pas... quelqu’un a deja rencontré ce problème ? j’ai passé l’après midi dessus, rien à faire...

    • Le 13 mai 2009 à 07:45, par MR En réponse à : variable « personnalisées » dans l’URL

      Quelle version de spip utilises-tu ?

      Parce qu’un GROS bug présent dans la v2.0.7 a pour conséquence que seul le premier paramètre de l’URL est récupé par cette balise, donc
      #ENVtoto est vide alors que
      <?php
      $toto 
      $_GET['toto'];
      ?>

      affectera bien 7 à toto !
      Lire :

      http://trac.rezo.net/trac/spip/ticket/1755

      Ce bug est corrigé dans la v2.0.8

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • LinkCheck : vérificateur de liens

    13 février 2015 – 76 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • Publication par email

    28 mars 2013 – 32 commentaires

    Permet de publier vos articles par email Avertissements Ce plugin est expérimental. Le chantier est ouvert, n’hésitez à contribuer. Scénario d’utilisation Claire utilise un site SPIP avec un compte auteur dans lequel elle a renseigné le champs (...)

  • Balises #SWITCH et #CASE

    20 mai 2016 – commentaires

    Ce plugin introduit dans SPIP les balises #SWITCH, #CASE et #CASE_DEFAULT qui reproduisent le fonctionnement des switch... case... default... du php et du C. Utilisation Les balises #SWITCH, #CASE et #CASE_DEFAULT permettent de comparer un (...)

  • Saisies

    27 mars 2010 – 481 commentaires

    Introduction Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeurs (...)

  • CookieChoices

    26 septembre 2014 – 18 commentaires

    Affiche un avertissement à l’usage des cookies en utilisant le script cookiechoices fourni par google Introduction Par défaut, SPIP est respectueux de la vie privée de ses visiteurs et ne pose pas de cookies de traçages ou publicitaires. Ce (...)

Ça spipe par là