retrouver les paramètres d'appel d'un modèle ??

B'jour tout le monde,

je me lance dans l'écriture d'un plugin, et j'ai quelques soucis :frowning:
En résumé, pas moyen de retrouver les paramètres d'appel d'un modèle...

Qui peut m'aider ?
Bonnes fêtes tatous
Francois

-------------------------------------------------
1) Je veux pouvoir mettre dans un article :
<objets|ide=6|niveau=5>

-------------------------------------------------
2) j'ai un fichier modeles/objets.php avec ces quelques lignes, avec LE
pb dans le calcul de la balise !

-------------------------------------------------
[(#REM)<!-- récupération des paramètres -->]
#SET{ide,#ENV{ide}}
#SET{niveau,#ENV{niveau}}

[(#REM) Calcul de la balise
[(#OBJETS{[(#GET{ide})],[(#GET{niveau})]})]
[(#REM) <!-- CA CA MARCHE... mais c'est moche
$ide = '[(#GET{ide})]';
$niveau = '[(#GET{niveau})]';
echo "ide : $ide", niveau : $niveau<br>";
reste du code
-->]
-------------------------------------------------

3) un fichier de calcul de la balise balise/objets.php
-------------------------------------------------
<?php

function balise_OBJETS($p){
ET LA PAS MOYEN DE RETROUVER MES PARAMÈTRES !!!!!

}
-------------------------------------------------

Le 30.12.16 à 09:48, Francois Sauterey a écrit :

B'jour tout le monde,

je me lance dans l'écriture d'un plugin, et j'ai quelques soucis :frowning:
En résumé, pas moyen de retrouver les paramètres d'appel d'un modèle...

Qui peut m'aider ?
Bonnes fêtes tatous
Francois

-------------------------------------------------
1) Je veux pouvoir mettre dans un article :
<objets|ide=6|niveau=5>

-------------------------------------------------
2) j'ai un fichier modeles/objets.php avec ces quelques lignes, avec LE
pb dans le calcul de la balise !

-------------------------------------------------
[(#REM)<!-- récupération des paramètres -->]
#SET{ide,#ENV{ide}}
#SET{niveau,#ENV{niveau}}

[(#REM) Calcul de la balise
[(#OBJETS{[(#GET{ide})],[(#GET{niveau})]})]
[(#REM) <!-- CA CA MARCHE... mais c'est moche
$ide = '[(#GET{ide})]';
$niveau = '[(#GET{niveau})]';
echo "ide : $ide", niveau : $niveau<br>";
reste du code
-->]
-------------------------------------------------

3) un fichier de calcul de la balise balise/objets.php
-------------------------------------------------
<?php

function balise_OBJETS($p){
ET LA PAS MOYEN DE RETROUVER MES PARAMÈTRES !!!!!

}
-------------------------------------------------

pourquoi veux tu passer par une balise spécifique? c'est très rare de devoir créer ses propres balise.
Le problème en tous cas n'est pas du fait d'avoir un modèle, mais de récuperer la balise (même topo dans un squelette standard).

Il y a deux possibilités, si tu tiens à avoir ta balise spécifique:
- sois tu peut recuperer avec un code tarabiscoté l'env
- sois tu passe ton env au contenu de la balise, et tu le recupère à l'intérieur

la seconde option me parait plus propre et plus pérenne, ca permet d'avoir d'autre chose que le env (par exmple du set/get)

http://code.spip.net/fr/archives/compilateur/article/creer-des-balises-personnalisees-9

Mais bon, la balise perso c'est pas forcément nécessaire

--
Maïeul

Le 30/12/2016 à 09:48, Francois Sauterey a écrit :

[(#REM) Calcul de la balise
[(#OBJETS{[(#GET{ide})],[(#GET{niveau})]})]

En fait j'ai oublié de préciser que mon problème était LÀ. c'est à dire que
[(#OBJETS{5,999})]
fonctionne parfaitement ( mais ne répond pas à mon cahier des charges
qui est de contrôler les paramètres *dans l'article*) mais pas avec GET
ou ENV. Où est l'erreur de syntaxe, de logique ou de je ne sais quoi ?

pour répondre à Maïeul, je ne choisie peut-être pas la solution la plus
simple, mais voilà mon problème.
J'ai des objets non-spip, dont je veux contrôler l'affichage *dans le
corps d'un article*? D'où l'utilisation d'un modèle.
Ensuite dans ce modèle, comment *calculer* un contenu ? Il m'a semblé
(mais peut-être n'est-ce pas la bonne solution) qu'une balise était la
méthode "la plus spip".
Quelqu'un en voit une autre ?

Bref je balise... Je m'inspire bien sûr de l'article cité par Maïeul,
mais comme c'est l'appel dans le modèle qui foire, je n'avance pas :frowning:

En contextualisant un peu:
disons que j'ai un limesurvey, et que dans un article je veuille afficher:

<h2>Enquêtes en cours:</h2>
[LISTE DES ENQUETES EN COURS ]

<h2>Résultats des enquêtes terminées</h2>
[LISTE DES ENQUETES TERMINEES ]

Le corps de mon article serait:
<h2>Enquêtes en cours:</h2>
<enquetes|mode=actif>

<h2>Résultats des enquêtes terminées</h2>
<enquetes|mode=fini>

Mon modèle serait alors

#SET{mode,#ENV{mode}
[(#ENQUETES|mode=#GET{mode})]

D'ailleurs pourquoi passer par #ENV/#SET/#GET ? et pas #ENV directement ?

Z'avez plus simple ?

Francois

Le 30.12.16 à 11:06, Francois Sauterey a écrit :

Le 30/12/2016 à 09:48, Francois Sauterey a écrit :

[(#REM) Calcul de la balise
[(#OBJETS{[(#GET{ide})],[(#GET{niveau})]})]

En fait j'ai oublié de préciser que mon problème était LÀ. c'est à dire que
[(#OBJETS{5,999})]
fonctionne parfaitement ( mais ne répond pas à mon cahier des charges
qui est de contrôler les paramètres *dans l'article*) mais pas avec GET
ou ENV. Où est l'erreur de syntaxe, de logique ou de je ne sais quoi ?

pour répondre à Maïeul, je ne choisie peut-être pas la solution la plus
simple, mais voilà mon problème.
J'ai des objets non-spip, dont je veux contrôler l'affichage *dans le
corps d'un article*? D'où l'utilisation d'un modèle.
Ensuite dans ce modèle, comment *calculer* un contenu ? Il m'a semblé
(mais peut-être n'est-ce pas la bonne solution) qu'une balise était la
méthode "la plus spip".
Quelqu'un en voit une autre ?

Bref je balise... Je m'inspire bien sûr de l'article cité par Maïeul,
mais comme c'est l'appel dans le modèle qui foire, je n'avance pas :frowning:

En contextualisant un peu:
disons que j'ai un limesurvey, et que dans un article je veuille afficher:

<h2>Enquêtes en cours:</h2>
[LISTE DES ENQUETES EN COURS ]

<h2>Résultats des enquêtes terminées</h2>
[LISTE DES ENQUETES TERMINEES ]

Le corps de mon article serait:
<h2>Enquêtes en cours:</h2>
<enquetes|mode=actif>

<h2>Résultats des enquêtes terminées</h2>
<enquetes|mode=fini>

Mon modèle serait alors

#SET{mode,#ENV{mode}
[(#ENQUETES|mode=#GET{mode})]

D'ailleurs pourquoi passer par #ENV/#SET/#GET ? et pas #ENV directement ?

Z'avez plus simple ?

Francois

Pas sur d'avoir tout compris, mais à mon avis tu n'a pas besoin de #SET/#GET, tu peux passer en #ENV directement
Après je me demande s'il y a pas une technique supplémentaire pour interpéter l'argument s'il contient un #ENV.

Par contre je comprend toujours pas pourquoi tu a besoin de passer par une balise. Concrètement elle ferait quoi cette balise?

----
Maïeul

Le 30/12/2016 à 13:35, Maïeul a écrit :

Pas sur d'avoir tout compris, mais à mon avis tu n'a pas besoin de
#SET/#GET, tu peux passer en #ENV directement
Après je me demande s'il y a pas une technique supplémentaire pour
interpéter l'argument s'il contient un #ENV.

En effet, je m'en passe très bien pour un affichage directe

Par contre je comprend toujours pas pourquoi tu a besoin de passer par
une balise. Concrètement elle ferait quoi cette balise?

récupérer, traiter, afficher une liste d'objet *non spip* en fonction
des paramètres passés.

Bon tan pis pour la balise, je mets du code directement dans le calcul
du modèle...

Francois

Le 30.12.16 à 13:41, Francois Sauterey a écrit :

Le 30/12/2016 à 13:35, Maïeul a écrit :

Pas sur d'avoir tout compris, mais à mon avis tu n'a pas besoin de
#SET/#GET, tu peux passer en #ENV directement
Après je me demande s'il y a pas une technique supplémentaire pour
interpéter l'argument s'il contient un #ENV.

En effet, je m'en passe très bien pour un affichage directe

Par contre je comprend toujours pas pourquoi tu a besoin de passer par
une balise. Concrètement elle ferait quoi cette balise?

récupérer, traiter, afficher une liste d'objet *non spip* en fonction
des paramètres passés.

Bon tan pis pour la balise, je mets du code directement dans le calcul
du modèle...

Francois

bah il y a pas besoin d'une balise spéciale.
Si ce sont des objets sql, il suffit de déclarer une base externe, c'est carrément plus simple

--
Maïeul

Le 30.12.16 à 13:41, Francois Sauterey a écrit :

Le 30/12/2016 à 13:35, Maïeul a écrit :

Pas sur d'avoir tout compris, mais à mon avis tu n'a pas besoin de
#SET/#GET, tu peux passer en #ENV directement
Après je me demande s'il y a pas une technique supplémentaire pour
interpéter l'argument s'il contient un #ENV.

En effet, je m'en passe très bien pour un affichage directe

Par contre je comprend toujours pas pourquoi tu a besoin de passer par
une balise. Concrètement elle ferait quoi cette balise?

récupérer, traiter, afficher une liste d'objet *non spip* en fonction
des paramètres passés.

Bon tan pis pour la balise, je mets du code directement dans le calcul
du modèle...

Francois

et quelque soit le problème, pas de raison de mettre du PHP dans le squelette, sauf si tu utilise des test de sessions

--
Maïeul

Le 30/12/2016 à 13:43, Maïeul a écrit :

bah il y a pas besoin d'une balise spéciale.
Si ce sont des objets sql, il suffit de déclarer une base externe, c'est
carrément plus simple

Déclarer une autre base - Programmer avec SPIP 4

Oui, c'est une autre voie que j'ai commencer à explorer en parallèle...
modèle + autre_base + boucle à partir des paramètre du
<objets|ide=XX|niveau=YY>

Merci de ton aide

Francois

Le 30.12.16 à 13:49, Francois Sauterey a écrit :

Le 30/12/2016 à 13:43, Maïeul a écrit :

bah il y a pas besoin d'une balise spéciale.
Si ce sont des objets sql, il suffit de déclarer une base externe, c'est
carrément plus simple

Déclarer une autre base - Programmer avec SPIP 4

Oui, c'est une autre voie que j'ai commencer à explorer en parallèle...
modèle + autre_base + boucle à partir des paramètre du
<objets|ide=XX|niveau=YY>

Merci de ton aide

Francois

c'est à mon avis ce qui est le plus SPIPIEN.

--
Maïeul

Le 30/12/2016 à 13:51, Maïeul a écrit :

c'est à mon avis ce qui est le plus SPIPIEN.

Il me reste quand même un soucis : quid d'un masque logique dans les
critère de boucle ?

Il me faudrait un truc genre
|niveau & 16 /* modèle
{niveau & 16 } ou {niveau & 16 = 1}

Je n'en trouve aucune trace...

Le 30.12.16 à 16:59, Francois Sauterey a écrit :

Le 30/12/2016 à 13:51, Maïeul a écrit :

c'est à mon avis ce qui est le plus SPIPIEN.

Il me reste quand même un soucis : quid d'un masque logique dans les
critère de boucle ?

Il me faudrait un truc genre
|niveau & 16 /* modèle
{niveau & 16 } ou {niveau & 16 = 1}

Je n'en trouve aucune trace...

j'ai pas compris ton besoin…

--
Maïeul

Le 30/12/2016 à 18:28, Maïeul a écrit :

j'ai pas compris ton besoin…

Hum... prenons des qualités que devraient posséder toute personne "comme
il faut" :wink:
1 aimable
2 honnête
4 généreux
8 franc
etc... avec comme valeur une puissance de 2.
Si une personne est *et* aimable *et* généreuse on lui attribut la
valeur 1+4 =5
Le choix des puissance de 2 est nécessaire car il n'y a qu'une seule
décomposition possible de 5 (ou tout autre combinaison).

Ensuite si on veut toutes les personnes généreuses, elles vont vérifier
le test : qualite & 4 == VRAI

C'est ce que je voudrais pouvoir faire...

Francois

Le 2016-12-30 20:16, Francois Sauterey a écrit :

Le 30/12/2016 à 18:28, Maïeul a écrit :

j'ai pas compris ton besoin…

Hum... prenons des qualités que devraient posséder toute personne "comme
il faut" :wink:
1 aimable
2 honnête
4 généreux
8 franc
etc... avec comme valeur une puissance de 2.
Si une personne est *et* aimable *et* généreuse on lui attribut la
valeur 1+4 =5
Le choix des puissance de 2 est nécessaire car il n'y a qu'une seule
décomposition possible de 5 (ou tout autre combinaison).

Ensuite si on veut toutes les personnes généreuses, elles vont vérifier
le test : qualite & 4 == VRAI

C'est ce que je voudrais pouvoir faire...

Francois

Bonjour

Je n'avais jamais trop regardé à quoi servent les opérandes sur les bits en SQL en pensant que c'était un truc-d'informaticien-qui-ne-me-concerne-pas...
En fait c'est super intéressant ! Merci François pour cette question qui m'a permis de comprendre enfin à quoi ça servait :slight_smile:

Il s'agirait donc de l'opérateur logique & qui est décrit dans les manuels SQL comme "AND au niveau du bit" ?
Je ne sais pas s'il a été implémenté dans les boucles SPIP ?

J'avais vu passer un post sur la possibilité de passer des critères en SQL dans une boucle SPIP mais je ne me souviens plus où.
J'ai cherché pour voir si une regex pouvait faire le job mais il semble que non. Mais j'ai simplement effectué une recherche basique sans creuser davantage.

Si quelqu'un a une réponse à cette question ça m'intéresse !

pw

Le 31/12/2016 à 11:00, p.weber@free.fr a écrit :

Bonjour

Je n'avais jamais trop regardé à quoi servent les opérandes sur les bits
en SQL en pensant que c'était un
truc-d'informaticien-qui-ne-me-concerne-pas...
En fait c'est super intéressant ! Merci François pour cette question qui
m'a permis de comprendre enfin à quoi ça servait :slight_smile:

Il s'agirait donc de l'opérateur logique & qui est décrit dans les
manuels SQL comme "AND au niveau du bit" ?
Je ne sais pas s'il a été implémenté dans les boucles SPIP ?

J'avais vu passer un post sur la possibilité de passer des critères en
SQL dans une boucle SPIP mais je ne me souviens plus où.
J'ai cherché pour voir si une regex pouvait faire le job mais il semble
que non. Mais j'ai simplement effectué une recherche basique sans
creuser davantage.

Si quelqu'un a une réponse à cette question ça m'intéresse !

Oui c'est bien ce que je cherche à faire : "AND au niveau du bit", et il
ne s'agit en effet pas *que* d'un truc d'informaticien :wink:
J'ai eu beau me torturer les méninges, je n'ai pas trouvé de moyen
d'astuce triviale pour faire faire à SPIP ce calcul...
Une commande pour nos gentils développeurs ?

Belles fin d'année
Francois

Le 31/12/2016 à 17:41, Francois Sauterey a écrit :

J'avais vu passer un post sur la possibilité de passer des critères en
SQL dans une boucle SPIP mais je ne me souviens plus où.
J'ai cherché pour voir si une regex pouvait faire le job mais il semble
que non. Mais j'ai simplement effectué une recherche basique sans
creuser davantage.

Oui, tu peux utiliser le critère where avec du SQL.

Ce critère a été documenté en novembre, mais l'article n'est pas encore publié, me demande bien pourquoi.

Mais tu peux te créer un compte sur www.spip.net/ecrire (lien "s'inscrire") et tu pourrais lire la doc (proposée à l'évaluation pour l'instant) :
http://www.spip.net/ecrire/?exec=article&id_article=6396

Oui c'est bien ce que je cherche à faire : "AND au niveau du bit", et il
ne s'agit en effet pas *que* d'un truc d'informaticien :wink:
J'ai eu beau me torturer les méninges, je n'ai pas trouvé de moyen
d'astuce triviale pour faire faire à SPIP ce calcul...
Une commande pour nos gentils développeurs ?

Sinon il faudrait donc développer un nouveau critère.
C'est documenté à droite à gauche, il y a des exemples dans certains plugins, mais ce n'est pas trivial...

--
nicod_

-----
Maïeul Rouquette
www.maieul.net

Le 31 déc. 2016 à 11:00, p.weber@free.fr a écrit :

Le 2016-12-30 20:16, Francois Sauterey a écrit :

Le 30/12/2016 à 18:28, Maïeul a écrit :

j'ai pas compris ton besoin…

Hum... prenons des qualités que devraient posséder toute personne "comme
il faut" :wink:
1 aimable
2 honnête
4 généreux
8 franc
etc... avec comme valeur une puissance de 2.
Si une personne est *et* aimable *et* généreuse on lui attribut la
valeur 1+4 =5
Le choix des puissance de 2 est nécessaire car il n'y a qu'une seule
décomposition possible de 5 (ou tout autre combinaison).
Ensuite si on veut toutes les personnes généreuses, elles vont vérifier
le test : qualite & 4 == VRAI
C'est ce que je voudrais pouvoir faire...
Francois

Bonjour

Je n'avais jamais trop regardé à quoi servent les opérandes sur les bits en SQL en pensant que c'était un truc-d'informaticien-qui-ne-me-concerne-pas...
En fait c'est super intéressant ! Merci François pour cette question qui m'a permis de comprendre enfin à quoi ça servait :slight_smile:

Il s'agirait donc de l'opérateur logique & qui est décrit dans les manuels SQL comme "AND au niveau du bit" ?
Je ne sais pas s'il a été implémenté dans les boucles SPIP ?

J'avais vu passer un post sur la possibilité de passer des critères en SQL dans une boucle SPIP mais je ne me souviens plus où.
J'ai cherché pour voir si une regex pouvait faire le job mais il semble que non. Mais j'ai simplement effectué une recherche basique sans creuser davantage.

Si quelqu'un a une réponse à cette question ça m'intéresse !

pw

a ma connaissance cela n'a pas été implanté en SPIP. Cela vaudrait la peine de fair des tests simple (genre {& truc}) et sinon créer un nouveau critère. Voir par exemple
https://contrib.spip.net/NouveauCritere

Le 31/12/2016 à 19:09, nicod_ a écrit :

Oui, tu peux utiliser le critère where avec du SQL.

Ce critère a été documenté en novembre, mais l'article n'est pas encore
publié, me demande bien pourquoi.

Mais tu peux te créer un compte sur www.spip.net/ecrire (lien
"s'inscrire") et tu pourrais lire la doc (proposée à l'évaluation pour
l'instant) :
SPIP

Whaou... Ça marche !!!
Merci beaucoup

Francois

bon allez j’espère qu'on aura le plaisir de connaître ze plugin

Le 01/01/2017 à 16:06, Francois Sauterey a écrit :

Le 31/12/2016 à 19:09, nicod_ a écrit :

Oui, tu peux utiliser le critère where avec du SQL.

Ce critère a été documenté en novembre, mais l'article n'est pas encore
publié, me demande bien pourquoi.

Mais tu peux te créer un compte sur www.spip.net/ecrire (lien
"s'inscrire") et tu pourrais lire la doc (proposée à l'évaluation pour
l'instant) :
SPIP

Whaou... Ça marche !!!
Merci beaucoup

Francois

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Station de Fécondation Abeille Noire de Mormal
http://sfanm.shost.ca/
----
« Si l’abeille disparaissait de la surface du globe, l’homme n’aurait plus que quatre années à vivre »
signé : Albert Einstein.« citation apocryphe »