[SPIP Zone] Récupérer l'id de l'article appelant dans le modèle img.html

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.

Etant donné que je vais utiliser les URLs propres, il ne m'est pas possible d'utiliser le $QUERY_STRING pour chercher l'id.

Existe-t-il un moyen de récupérer cet identifiant autrement qu'en passant un paramètre "à la main" au moment où on insère le raccourci <img> dans le texte de l'article ?

Merci à tous de votre aide.

mathbouq a écrit :

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.
  
#ENV{id} je pense

Stephane a écrit :

mathbouq a écrit :

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.
  
#ENV{id} je pense

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

Et si tu bouclais sur les documents avec un test sur leur ID par rapport à
ENV{id} ?
(c'est une proposition comme une autre, je ne pane rien à la syntaxe des
modeles)

-----Message d'origine-----
De : spip-zone-bounces@rezo.net [mailto:spip-zone-bounces@rezo.net] De la
part de mathbouq
Envoyé : mercredi 21 novembre 2007 17:13
À : spip-zone@rezo.net
Objet : Re: [SPIP Zone] Récupérer l'id de l'article appelant dans le modèle
img.html

Stephane a écrit :

mathbouq a écrit :

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour
aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci
<img> sont affichées en format vignette (filtre image_reduire appliqué à
la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui
affiche toutes les images insérées dans l'article en question à leur
format "normal" (et le lien pointe directement sur l'ancre de l'image
correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de
revenir à la page précédente, là encore en pointant sur l'ancre de la
vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens
suscités (notamment le premier : celui qui pointe vers la page où sont
affichées toutes les images de l'article), j'ai besoin de connaître
l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser
cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.
  
#ENV{id} je pense

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça
ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je
veux faire, car dans mon cas une image peut être associée à plusieurs
articles.

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

mathbouq a écrit :

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

pardon, j'avais mal compris.
non tu ne peux pas avoir l'id de l'article, il n'est pas dans le contexte.
ceci dit, c'est assez normal qu'il n'y soit pas puisque le meme cache peut servir à <img12> dans plusieurs articles

@++

Quelques pistes en vrac :

en faisant un modèle à partir du raccourcie <img|art=1> tu peux récupérer cet identifiant dans le modèle au moyen de #ENV{art}
Je ne sais pas si cela te suffit...

Sinon il y a peut être des info dans le dossier prive de la dist 193
dans lequel tu peut faire écrire par exemple <diaporama> à tes rédacteurs le code de editer_article peux transformer avec un replace par <img|art=len°darticle>

spip 2 avant spip 193... ?

Le 21 nov. 07 à 16:38, mathbouq a écrit :

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour
aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci
<img> sont affichées en format vignette (filtre image_reduire appliqué à
la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui
affiche toutes les images insérées dans l'article en question à leur
format "normal" (et le lien pointe directement sur l'ancre de l'image
correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de
revenir à la page précédente, là encore en pointant sur l'ancre de la
vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens
suscités (notamment le premier : celui qui pointe vers la page où sont
affichées toutes les images de l'article), j'ai besoin de connaître
l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser
cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.

Etant donné que je vais utiliser les URLs propres, il ne m'est pas
possible d'utiliser le $QUERY_STRING pour chercher l'id.

Existe-t-il un moyen de récupérer cet identifiant autrement qu'en
passant un paramètre "à la main" au moment où on insère le raccourci
<img> dans le texte de l'article ?

Merci à tous de votre aide.

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Salut,

un truc super con, mais si tu supposes que les documents sont utilisés comme SPIP le prévois à la base: une image insérée à un article est aussi attachée à cette article.

Alors tu peux juste ajouter dans le modèle:

<BOUCLE_art(ARTICLES) {id_document=#ENV{id}}>#ID_ARTICLE</BOUCLE_art>

ça ne marchera bien que si les documents sont dans le texte d'un seul article...

Pierre

mathbouq wrote:

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.

Etant donné que je vais utiliser les URLs propres, il ne m'est pas possible d'utiliser le $QUERY_STRING pour chercher l'id.

Existe-t-il un moyen de récupérer cet identifiant autrement qu'en passant un paramètre "à la main" au moment où on insère le raccourci <img> dans le texte de l'article ?

Merci à tous de votre aide.

Pierre FICHES a écrit :

Quelques pistes en vrac :

en faisant un modèle à partir du raccourcie <img|art=1> tu peux récupérer cet identifiant dans le modèle au moyen de #ENV{art}
Je ne sais pas si cela te suffit...

Je voudrais éviter que les rédacteurs aient à saisir l'identifiant de l'article au moment où ils insèrent l'image dans le texte. Il est sans doute possible de faire ça automatiquement en modifiant légèrement l'interface d'admin, mais je voudrais éviter de toucher au coeur de SPIP, pour ne pas avoir à maintenir ces modifications lors des upgrades (je passerai certainement à la 1.9.3 lorsqu'elle sera stable, pour bénéficier du plugin d'indexation avancée) et autres patchs.

Sinon il y a peut être des info dans le dossier prive de la dist 193
dans lequel tu peut faire écrire par exemple <diaporama> à tes rédacteurs le code de editer_article peux transformer avec un replace par <img|art=len°darticle>

spip 2 avant spip 193... ?

J'attends ce genre de possibilités avec impatience... :slight_smile: Etant donné que la date de sortie de la 1.9.3 n'est pas fixée, je construis mon site sur un système stable (1.9.2c, donc), avec le projet de migrer quand la 1.9.3 (ou la 2, qui sait...) sera stabilisée.

Le 21 nov. 07 à 16:38, mathbouq a écrit :

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour
aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci
<img> sont affichées en format vignette (filtre image_reduire appliqué à
la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui
affiche toutes les images insérées dans l'article en question à leur
format "normal" (et le lien pointe directement sur l'ancre de l'image
correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de
revenir à la page précédente, là encore en pointant sur l'ancre de la
vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens
suscités (notamment le premier : celui qui pointe vers la page où sont
affichées toutes les images de l'article), j'ai besoin de connaître
l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser
cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.

Etant donné que je vais utiliser les URLs propres, il ne m'est pas
possible d'utiliser le $QUERY_STRING pour chercher l'id.

Existe-t-il un moyen de récupérer cet identifiant autrement qu'en
passant un paramètre "à la main" au moment où on insère le raccourci
<img> dans le texte de l'article ?

Merci à tous de votre aide.

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Stephane a écrit :

mathbouq a écrit :

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

pardon, j'avais mal compris.
non tu ne peux pas avoir l'id de l'article, il n'est pas dans le contexte.
ceci dit, c'est assez normal qu'il n'y soit pas puisque le meme cache peut servir à <img12> dans plusieurs articles

@++

D'accord, je comprends.
J'ai finalement opté pour une solution moins élégante, en utilisant les variables HTTP pour reconstruire l'URL. La page sur laquelle j'affiche les images en taille normale est construite par le squelette article.html, lorsqu'un paramètre donné est passé dans l'URL. Il me suffit donc de récupérer l'URL courante lorsque je suis sur l'article, et d'y ajouter le paramètre en question.
Ce n'est pas très élégant, mais en attendant de trouver quelque chose d'un peu plus "SPIP", ça fonctionne.

J'ai vérifié si le cache ne posait pas de problème avec cette solution, et c'est bon. Je ne sais pas trop comment fonctionne le système de cache, mais là, dans deux articles différents, tous les deux cachés, le même raccourci <img> donne bien deux résultats différents.

En bouclant sur l'identifiant de l'élément appelé, je peux récupérer plusieurs "appelants", étant donné qu'une image peut être insérée dans plusieurs articles.
J'ai finalement opté pour une solution utilisant les variables HTTP pour reconstruire une URL, en construisant la page des images "normales" dans le squelette article.html. Il me suffit donc de récupérer l'URL courante et de lui ajouter le paramètre adéquat. Comme je le disais plus tôt, ce n'est pas très élégant, mais ça a le mérite de fonctionner, avant de trouver mieux.

Samy RABIH a écrit :

Et si tu bouclais sur les documents avec un test sur leur ID par rapport à
ENV{id} ?
(c'est une proposition comme une autre, je ne pane rien à la syntaxe des
modeles)

-----Message d'origine-----
De : spip-zone-bounces@rezo.net [mailto:spip-zone-bounces@rezo.net] De la
part de mathbouq
Envoyé : mercredi 21 novembre 2007 17:13
À : spip-zone@rezo.net
Objet : Re: [SPIP Zone] Récupérer l'id de l'article appelant dans le modèle
img.html

Stephane a écrit :
  

mathbouq a écrit :
    

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.
  

#ENV{id} je pense

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Le 21 nov. 07 à 19:18, mathbouq a écrit :

J'attends ce genre de possibilités avec impatience... :slight_smile: Etant donné que
la date de sortie de la 1.9.3 n'est pas fixée, je construis mon site sur
un système stable (1.9.2c, donc), avec le projet de migrer quand la
1.9.3 (ou la 2, qui sait...) sera stabilisée.

ça marche déjà cette fonction sans modifier le coeur de spip et uniquement en langage spip.

ça doit se passer encore dans le dossier dist car il y a un bug : si on créé le fameux dossier privé dans le dossier squelette la barre typo ne suit pas.

pierre

mathbouq a écrit :

Stephane a écrit :
  

mathbouq a écrit :
    

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

pardon, j'avais mal compris.
non tu ne peux pas avoir l'id de l'article, il n'est pas dans le contexte.
ceci dit, c'est assez normal qu'il n'y soit pas puisque le meme cache peut servir à <img12> dans plusieurs articles

@++
    
D'accord, je comprends.
J'ai finalement opté pour une solution moins élégante, en utilisant les variables HTTP pour reconstruire l'URL. La page sur laquelle j'affiche les images en taille normale est construite par le squelette article.html, lorsqu'un paramètre donné est passé dans l'URL. Il me suffit donc de récupérer l'URL courante lorsque je suis sur l'article, et d'y ajouter le paramètre en question.
Ce n'est pas très élégant, mais en attendant de trouver quelque chose d'un peu plus "SPIP", ça fonctionne.
  
Et avec les url propres ?

J'ai vérifié si le cache ne posait pas de problème avec cette solution, et c'est bon. Je ne sais pas trop comment fonctionne le système de cache, mais là, dans deux articles différents, tous les deux cachés, le même raccourci <img> donne bien deux résultats différents.
  
j'ai peut etre dit une betise alors.
ca doit etre calculé systematiquement au calcul de la balise le contenant.

le probleme est en fait que traiter_raccourcis() n'a pas accès au contexte, c'est appelé sur un texte et ca le traite, sans se poser la question d'ou est appelé ce texte.

avec affichage_final, tu doit pouvoir faire ca proprement en te basant sur l'id_article meme en url propres.

@++

Salut,

voici une autre solution un peu plus solide que bidouiller les variables http.

Utilise un filtre sur #TEXTE qui ajoute l'id à l'url de la vignette.

1- dans le modele img.html tu mets un lien incomplet:
<a href="#URL_PAGE{photos_articles}|parametre_url{id_document, #ENV{id}|parametre_url{id_article,@IDAREMPLACER@}}">...

2- dans ton mes_fonctions, tu déclares un filtre:
function ajouter_idarticle($texte,$id_article) {
  return str_replace('@IDAREMPLACER@',$id_article,$texte);
}

3- dans le squelette article, tu fais:

[(#TEXTE|reduire_image|ajouter_idarticle{#ID_ARTICLE})]

Pierre

Mathieu Bouquet wrote:

En bouclant sur l'identifiant de l'élément appelé, je peux récupérer plusieurs "appelants", étant donné qu'une image peut être insérée dans plusieurs articles.
J'ai finalement opté pour une solution utilisant les variables HTTP pour reconstruire une URL, en construisant la page des images "normales" dans le squelette article.html. Il me suffit donc de récupérer l'URL courante et de lui ajouter le paramètre adéquat. Comme je le disais plus tôt, ce n'est pas très élégant, mais ça a le mérite de fonctionner, avant de trouver mieux.

Samy RABIH a écrit :

Et si tu bouclais sur les documents avec un test sur leur ID par rapport à
ENV{id} ?
(c'est une proposition comme une autre, je ne pane rien à la syntaxe des
modeles)

-----Message d'origine-----
De : spip-zone-bounces@rezo.net [mailto:spip-zone-bounces@rezo.net] De la
part de mathbouq
Envoyé : mercredi 21 novembre 2007 17:13
À : spip-zone@rezo.net
Objet : Re: [SPIP Zone] Récupérer l'id de l'article appelant dans le modèle
img.html

Stephane a écrit :
  

mathbouq a écrit :
    

Bonjour à tous,

Je suis actuellement en train de modifier le modèle img.html pour aboutir au fonctionnement suivant :
- lorsque j'accède à un article, les images insérées via le raccourci <img> sont affichées en format vignette (filtre image_reduire appliqué à la balise #TEXTE), et sont cliquables
- lorsqu'on clique sur la vignette, on est renvoyé vers une page qui affiche toutes les images insérées dans l'article en question à leur format "normal" (et le lien pointe directement sur l'ancre de l'image correspondant à la vignette cliquée)
- à côté de l'image affichée au format "normal", un lien permet de revenir à la page précédente, là encore en pointant sur l'ancre de la vignette de départ.

Pour aboutir à ce résultat, et construire les URLs de chacun des liens suscités (notamment le premier : celui qui pointe vers la page où sont affichées toutes les images de l'article), j'ai besoin de connaître l'identifiant de l'article qui appelle le raccourci <img>, pour utiliser cette variable dans le modèle img.html.

A tout hasard, j'ai essayé #ENV{id_article}, mais ça ne fonctionne pas.
  

#ENV{id} je pense

#ENV{id} renvoie l'id de l'élément appelé, donc ici celui de l'image, ça ne renvoie pas l'id de l'appelant. Ca ne convient pas pour ce que je veux faire, car dans mon cas une image peut être associée à plusieurs articles.

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone