INCLURE dynamique...

Bonjour :slight_smile:

Voici mon petit cas d'école sur lequel je bataille depuis un moment :

J'ai une page avec un menu de navigation comportant différents
boutons, je voudrais que l'orsqu'on clique sur un de ces boutons,
une page Html précise, par la méthode INCLURE, s'affiche dans
le contenu de la page actuelle... commen faire ça ?

Je ne sais pas si je suis assez clair dans mon explication,
je vais tenter une autre approche...

J'ai 5 pages Html, contenant différentes boucles, que j'aimerais
pouvoir INCLURE séparément à l'intérieur de la page actuelle,
simplement en cliquant sur des boutons existants dans un menu
de navigation... aurait-il un moyen de faire ça assez simplement ?

J'ai un peu regardé dans la doc SPIP les balises SELF et ENV,
mais j'avoue ne pas trop saisir le rôle exact de ces balises,
et encore moins comment les utiliser...

Toute aide est la bienvenue... merci :slight_smile:

J'ai une page avec un menu de navigation comportant différents
boutons, je voudrais que l'orsqu'on clique sur un de ces boutons,
une page Html précise, par la méthode INCLURE, s'affiche dans
le contenu de la page actuelle... commen faire ça ?

Je ne sais pas si je suis assez clair dans mon explication,
je vais tenter une autre approche...

J'ai 5 pages Html, contenant différentes boucles, que j'aimerais
pouvoir INCLURE séparément à l'intérieur de la page actuelle,
simplement en cliquant sur des boutons existants dans un menu
de navigation... aurait-il un moyen de faire ça assez simplement ?

Il serait beaucoup simple, à ce qu'il me semble, d'inclure le menu dans
chacune des 5 pages plutôt que l'inverse.

André Vincent

Andre Vincent <andrevincent <at> videotron.qc.ca> writes:

Il serait beaucoup simple, à ce qu'il me semble, d'inclure le menu dans
chacune des 5 pages plutôt que l'inverse.

Merci André pour votre réponse, seulement, c'est bien le cas pour l'instant...

En fait, j'ai 5 pages différentes, dont une partie du code est identique
(toute la structure en somme), et je voudrais justement ne garder qu'une
seule page avec la structure, et qui aurait pour rôle d'accueillir les autres
codes Html par des simples INCLURE, mais je n'y arrive pas, je ne sais pas
si le langage de SPIP permet de le faire, ou s'il faut plutôt passer par
du code PHP (langage que je ne maîtrise absolument pas)...

Bref, je cherche encore, et je reste ouvert à toute piste pouvant m'aider...
Enfin, à défaut, je garderai mes 5 pages complètes...

Merci encore :slight_smile:

Le 15/08/06, FredoMkb a écrit :

En fait, j'ai 5 pages différentes, dont une partie du code est identique
(toute la structure en somme), et je voudrais justement ne garder qu'une
seule page avec la structure, et qui aurait pour rôle d'accueillir les autres
codes Html par des simples INCLURE, mais je n'y arrive pas, je ne sais pas
si le langage de SPIP permet de le faire, ou s'il faut plutôt passer par
du code PHP (langage que je ne maîtrise absolument pas)...

Bref, je cherche encore, et je reste ouvert à toute piste pouvant m'aider...
Enfin, à défaut, je garderai mes 5 pages complètes...

J'ai l'impression qu'ajax répondrait à tes besoins.
http://www.phportail.net/articles/68-premiere-approche-avec-ajax.php
Maintenant, il faut l'implémenter...

--
Jacques

Marre de "*quoter comme un goret*" avec OE : (Rappel: quoter n'est

pas coder) http://www.aminautes.org/forums/configurer/oe/QF_doc.html

Où placer sa réponse ?
[Mini-FAQ] Repondre par courrier ou dans les news ?

Jacques J. <confluents <at> gmail.com> writes:

J'ai l'impression qu'ajax répondrait à tes besoins.
phportail - phportail
Maintenant, il faut l'implémenter...

Merci Jacques pour cette piste, mais je ne suis décidement pas
assez compétent pour implémenter une telle solution...

C'est dommage, car je pensais qu'il y avait peut-être un moyen pas trop
compliqué à utiliser, mais là, après pas mal de tentatives, je cale, alors
je vais finalement laisser les 5 pages séparées, ce sera le plus simple...

Merci encore... :slight_smile:

On Tue, 2006-08-15 at 17:49 +0000, FredoMkb wrote:

En fait, j'ai 5 pages différentes, dont une partie du code est identique
(toute la structure en somme), et je voudrais justement ne garder qu'une
seule page avec la structure, et qui aurait pour rôle d'accueillir les autres
codes Html par des simples INCLURE

  Donc, tu as une page unique /spip.php?page=menu et dedans des liens
vers /spip.php?page=menu&centre=xyz
  Dedans, tu peux donc faire <INCLURE{fond=(#ENV{centre,defaut})}> ce
qui va inclure le squelette "defaut.html" si "centre" n'est pas défini,
et xyz.html si centre=xyz

  Attention cependant aux effets de bord comme centre=/machin/truc qui
permettrait d'afficher n'importe quel fichier du disque, ou
centre=un_squelette_de_page_privee
  Il faudrait donc plutot faire <INCLURE{fond=(#ENV{centre}|centre)}>
et définir une fonction "centre" dans mes_fonctions ou un plugin, qui
valide qu'il n'y a pas d'horreurs dans la variable.

--
À+, Pif.

Est-ce que quelque chose de ce genre pourrait t'aider dans ton approche:
<BOUCLE_principale(ARTICLES) {id_article}>

  <BOUCLE_site(MOTS){id_article}{titre = Site}>
  <INCLURE(article-site.php3){id_article}{lang}>
  </BOUCLE_site>

  <BOUCLE_1G(MOTS){id_article}{titre = Plan}>
  <INCLURE(article-1G.php3){id_article}{lang}>
  </BOUCLE_1G>

  <BOUCLE_1D(MOTS){id_article}{titre = Vue}>
  <INCLURE(article-1D.php3){id_article}{lang}>
  </BOUCLE_1D>

  <BOUCLE_2P(MOTS){id_article}{titre = PlanVue}>
  <INCLURE(article-2P.php3){id_article}{lang}>
  </BOUCLE_2P>

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

  <//B_2P>
  <//B_1D>
  <//B_1G>
  <//B_site>

</BOUCLE_principale>
<//B_principale>

Mais je ne suis pas sûr d'avoir pigé ton problème.
ADB

FredoMkb a écrit :

Jacques J. <confluents <at> gmail.com> writes:

J'ai l'impression qu'ajax répondrait à tes besoins.
phportail - phportail
Maintenant, il faut l'implémenter...

Merci Jacques pour cette piste, mais je ne suis décidement pas assez compétent pour implémenter une telle solution...

C'est dommage, car je pensais qu'il y avait peut-être un moyen pas trop compliqué à utiliser, mais là, après pas mal de tentatives, je cale, alors je vais finalement laisser les 5 pages séparées, ce sera le plus simple...

Merci encore... :slight_smile:

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

ADB <adupinbe <at> noos.fr> writes:

Est-ce que quelque chose de ce genre pourrait t'aider dans ton approche:
<BOUCLE_principale(ARTICLES) {id_article}>

[...]

Mais je ne suis pas sûr d'avoir pigé ton problème.

Merci ADB pour ta proposition, mais j'ai déjà essayé plusieurs choses
avec les boucles SPIP, et àmha ce n'est pas vraiment la bonne approche...

Disons que le mécanisme de ce que je souhatais faire se rapproche
du comportement des pages avec des frames, où il y aurait un premier
frame contenant un menu avec des boutons, et chaque bouton
afficherais dans le frame central une page Html différente...

Évidement, comme je ne souhaite pas utiliser des frames, je cherchais
une solution avec des INCLURE propres à SPIP, mais je n'arrive pas
à passer le paramètre correctement, et ça foire la plupart du temps...

Je pense que c'est réalisable, mais je ne maîtrise pas encore toutes
les subtiités du langage de SPIP, alors bon, je tente des trucs, mais
pour l'instant je pedale pas mal dans la choucroute... :wink:

Merci en tout cas :slight_smile:

christian lefebvre <christian.lefebvre <at> atosorigin.com> writes:

Donc, tu as une page unique /spip.php?page=menu et dedans des liens
vers /spip.php?page=menu&centre=xyz

Oui, c'est tout-à-fait ça, mais comme la syntaxe exacte de l'Url à utiliser
m'échappe complétement, j'ai essayé plusieurs choses sans grand
succès pour l'instant...

Dedans, tu peux donc faire <INCLURE{fond=(#ENV{centre,defaut})}> ce
qui va inclure le squelette "defaut.html" si "centre" n'est pas défini,
et xyz.html si centre=xyz

Je me doutais bien que la balise ENV avait un rôle important dans ce type
de manipulations, mais j'avoue ne pas avoir bien pigé son utilisation...

Ton exemple va sûrement m'aider à y voir plus clair, je vais le tester
cette après-midi, en espérant que ça va marcher... :wink:

Attention cependant aux effets de bord comme centre=/machin/truc qui
permettrait d'afficher n'importe quel fichier du disque, ou
centre=un_squelette_de_page_privee

Disons que chaque bouton pointera exactement sur la page concernée,
mais c'est vrai que si un utilisateur modifie l'Url manuellement, difficile
alors de prévoire tous les cas de figure, si j'ai bien compris ta remarque...

Il faudrait donc plutot faire <INCLURE{fond=(#ENV{centre}|centre)}>
et définir une fonction "centre" dans mes_fonctions ou un plugin, qui
valide qu'il n'y a pas d'horreurs dans la variable.

Ok, je vois à peu près le but de la maneuvre, mais, honnêtement,
je suis pour l'instant incapable de me débrouiller tout seul avec Php,
et même si j'arrive à bidouiller des petites choses (non sans mal),
là ça dépasse clairement mes compétences...

Je vais déjà essayer avec ta première piste, en espèrant que les
"effets de bord" seront inexistants ou, au pire, bénins, dans le cas
contraire, je verais ce que j'arrive à faire avec du Php...
Mmm, je sens que je vais encore avoir besoin de vos lumières :slight_smile:

Merci beaucoup Christian, et à tous ceux qui ont cherché des
solutions à mon petit problème... je vous tiens au courant :slight_smile:

Bonjour :slight_smile:

> Donc, tu as une page unique /spip.php?page=menu et dedans des liens
> vers /spip.php?page=menu&centre=xyz

> Dedans, tu peux donc faire <INCLURE{fond=(#ENV{centre,defaut})}> ce
> qui va inclure le squelette "defaut.html" si "centre" n'est pas défini,
> et xyz.html si centre=xyz

Merci beaucoup Christian, et à tous ceux qui ont cherché des
solutions à mon petit problème... je vous tiens au courant

Et bien, c'est gagné Christian, ta méthode a l'air de très bien fonctionner...

Pour ce qui est des "effets de bord", j'ai en effet de problèmes d'affichage
lorsque l'Url est modifée manuellement et qu'elle ne correspond à aucun
fichier d'inclusion existant (erreur 404 en plein milieu de la page :-/)

Pire encore, si jamais je change l'argument, et je met, par exemple,
le nom d'une page Html du squelette, ou de la distrib de Spip, la page
ciblée s'affiche entièrement dans celle existante, ce qui produit
un affichage pour le moins confus et désagrable... bref, c'est la cata !

Tu avais donc raison de m'avertir sur les effets inatendus possibles...

Alors, suivant ton conseil, je vais me pencher donc à étudier une solution
en utilisant un code Php de vérification, afin d'être sûr que la page ciblée
appartient bien au squelette actif, mais, comme je n'ai jamais fais ça avant,
je ne sais pas encore si je vais m'en sortir... on verra bien... si je repasse
par ici avec des questions à faire pâlir un débutant, alors ça voudra dire
que je galère grave :smiley: :wink:

Mais bon, en attendant, la première syntaxe est fonctionnelle, par rapport
à toutes mes tentatives ratées :-(, et elle me permet déjà d'avancer sur
la réalisation du squelette, je verrais à la fin comment faire pour le code
Php de vérification.

Merci en tout cas Christian pour ton aide, elle m'a permis de faire
ce que j'avais en tête, et d'avancer à grands pas dans mon projet :slight_smile:

Merci aussi à tous les autres qui ont participé à cet échange...

a+ :slight_smile: