[spip-dev] INCLURE et eval

Salut

J'ai un pb avec un fichier en INCLURE dans un squelette

<INCLURE(menutot.php3){id_rubrique}>

L'erreur produite

Fatal error: Call to undefined function: afficher_script_layer() in
/srv/www/htdocs/foresight_new/inc-public.php3(10) : eval()'d code on line 48

Les fonctions : test_layer et afficher_script_layer n'existent plus dans le
fichier inc_layer.php3 ;-( Elles ont été remplacées par autre chose ou
déplacées dans un autre fichier ?

A+ Yann

Oui: test_layer calculait plusiers fois la même chose alors maintenant il y a la globale $bowser_layer qui vaut vide si les chouches ne sont pas dispo, et ce qu'affichait afficher_script_layer auparavant.

Donc mets:

  echo $GLOBALS['browser_layer'];

là où tu mettais afficher_script_layer() auparavant.

      Emmanuel

Fatal error: Call to undefined function: afficher_script_layer() in
/srv/www/htdocs/foresight_new/inc-public.php3(10) : eval()'d code on
line 48

Salut,

Je rebondis la dessus Dèesse, actuellement en faisant des scripts PHP
dans la partie ouverte d'un site Spip, il peut arriver qu'on plante un
truc dans un fichier squelette qu'on est justement en traint de construite.
Le numéro de ligne produisant l'erreur est le bon, par contre le nom du
fichier reste toujours inc-public.php3

Te serait il possible crois tu de porter une petite modif au compilo afin
qu'il indique quel fichier est dommageable et non comme toujours le
inc-public, par exemple en faisant remonter le dernier __FILE__ inclut. Ou
alors cela est irréalisable ?

bonne soirée,

Alex

Salut,
J'ai un petit souci de compréhension sur le passage de parametres :
<BOUCLE_article_principal(ARTICLES) {id_article}>
#ID_SECTEUR
<INCLURE(menu.php3){id_rubrique=#ID_SECTEUR}{lang}>
</BOUCLE_article_principal>

avec dans menu.html :
<BOUCLE_article_principal(RUBRIQUES){id_rubrique}>
#ID_RUBRIQUE
</BOUCLE_article_principal>

ne semble pas marcher (j'ai bien le numero de secteur, mais menu ne rentre
pas dans la boucle)
alors qu'avec

<BOUCLE_article_principal(ARTICLES) {id_article}>
<INCLURE(menu.php3){id_rubrique}{lang}>
</BOUCLE_article_principal>

ou
<BOUCLE_article_principal(ARTICLES) {id_article}>
<INCLURE(menu.php3){id_rubrique=9}{lang}>
</BOUCLE_article_principal>

ca marche ...
Moi pas comprendre !
Une explication ?
un autre moyen pour affecter la une valeur venant d'une balise à un
parametre ?

Merci.

J'ai l'impression que ce critere n'est pas opérant ...
normal ?
bug connu ?
j'ai rien compris ?

appel : http://monsite/article.php3?id_article=1&lang=en

dans article=1.html :

<BOUCLE_article_principal(ARTICLES) {id_article}{!lang_select}>
#LANG
</BOUCLE_article_principal>

resultat : fr (l'article 1 est francais)

PS : j'ai essayé avec et sans
$forcer_lang="true";
article.php3

Ce n'est pas au niveau du compilo que ca se passe mais au niveau de l'exécution du code compilé;
la solution existe, c'est de redéfinir le gestionnaire d'erreur. Fil avait essayé mais ça fait
considérablement chuter les performances. Dans ces cas-là il faut mettre avant le eval un
spip_log(<NOM_DU_SQUELETTE>)
pour regarder dans spip.log ce qui c'est passé.

      Emmanuel

On va finir par lui attribuer la guérison des maladies incurables aussi à mon compilateur !

Les valeurs passées dans la balise INCLURE ne peuvent être que des constantes,
pas des champs. De nouveau ce serait une extension légitime que je garde sous le coude.

      Emmanuel

Ce n'est pas au niveau du compilo que ca se passe mais au niveau de
l'exécution du code compilé;
la solution existe, c'est de redéfinir le gestionnaire d'erreur. Fil
avait essayé mais ça fait
considérablement chuter les performances. Dans ces cas-là il faut
mettre avant le eval un
spip_log(<NOM_DU_SQUELETTE>)
pour regarder dans spip.log ce qui c'est passé.

l'utilisation de spip.log c'est pas mal en effet, c'est peut être aussi
la possibilité là de gerer le trap de l'erreur et d'afficher un bout
(colorisé :wink: de la fin de ce log, je vais essayer de bricoler ca pour
voir ce qu'il est possible de réaliser

++a.lex

On va finir par lui attribuer la guérison des maladies incurables aussi
à mon compilateur !

Pourquoi, ca le fait pas encore ?
:wink:

Les boucles sont tellement magiques, que je croyais que INCLURE avait suivi.
Désolé.

Bon, dans le cas que je posais, il suffit de passer directement le secteur
et de le reprendre en critère, mais ca serait effectivement bien pratique de
pouvoir passer des choses un peu plus dynamiques...

Merci.

Oups, il y avait une erreur dans mon squelette (passer {lang?} dans mon
inclure ...)

Désolé pour le bruit

De nouveau ce serait une extension légitime que je
garde sous le coude.

Tiens, pour que l'accoudoir soit bien confortable, et surtout parce que ca
me semble intéressant : que penses-tu de la généralisation du {critère?},
qui n'ajouter le critère que si il est dans l'url (et peut etre dans le
contexte appelant, je ne sais pas trop comment lang? est traité).

Ca répond à un besoin tout bête : rubrique identique à l'article mais
présentant le premier article selon un tri particulier.

Aujourd'hui, il faut faire une rubrique :

<BOUCLE_article_principal(ARTICLES){id_rubrique}{lang?}{par titre}{0,1}>

<INCLURE(article.php3){id_article}{lang}>

</BOUCLE_article_principal>

<:aucun_article:>

<//B_article_principal>

et un article

<BOUCLE_article_principal(ARTICLES){id_article}>

</BOUCLE_article_principal>

alors qu'on pourrait avoir

<BOUCLE_article_principal(ARTICLES) {id_article?}{id_rubrique?}{lang?}{par
titre}{0,1}>

Vu que l'API est en réflexion et que l'API est la pour "servir" des
fonctionnalités, ca me parait important de réfléchir avant au "jusqu'ou on
veut aller" dans la syntaxe Spip.
Mais c'est juste une réflexion comme ca . pas une demande.

Et tant que je suis dans des considérations générales sur la syntaxe, cela
pourrait aussi s'appliquer aux INCLURE, et peut etre le % pourrait etre
généralisé pour le passage de paramètres (critere {mon_critere=%mon_id}
=>url?mon_id=12)

C'était mes 2 cents du week end ...

@++