Rechercher : dans
Par :

Menu DHTML et liens relatifs

Dernière réponse le 4 déc 2008 à 18:09:24 Ben, le 22 jun 2007 à 00:54:56 
 Signaler ce message aux modérateurs

Bonjour,

je suis en train de créer un site web.
Pour la navigation je souhaiterais avoir un menu déroulant type DHTML/javascript.

J'ai trouvé des freewares sympa pour aider à la tâche fastidieuse de la création de menu complexes avec de nombreux sous menus. Le seul hic, c'est que je n'arrive pas à les faire fonctionner avec des liens relatifs.

Hors, c'est pour moi une nécessité, car mon site web ne sera pas forcément hébergé à la même adresse, et pourra être consultable en local ou via un CD rom par exemple.
Ce qui fait que si j'indique tous les liens en dur, le menu devient inutilisable au moindre changement de nom du domaine où le site sera hébergé...

Comment puis-je faire? Par exemple pour que la racine du site soit définie par l'endroit où se trouve le fichier javascript, et qu'ensuite les liens relatifs soient créés en prenant comme référence l'endroit où est placé le fichier javascript.
J'espère ne pas aoir été trop confus.

Merci d'avance.

Configuration: Windows XP
Firefox 2.0.0.4

1

gryzzly, le 22 jun 2007 à 04:00:06

Salut,

avec un exemple :

racine du site
     - dossier 1
               - dossier 1.1
                         - fichier 1.1.1
               - fichier 1.1
               - fichier 1.2

     - dossier 2
               - fichier 2.1

     - fichier 1
     - fichier 2


* avec le fichier 1, tu veux appeler le fichier 2.1 :
<a href="dossier2/fichier 2.1"> lien </a>
ou
<a href="./dossier2/fichier 2.1"> lien </a> 


le ./ signifie que tu appelles un fichier dans le même dossier (donc ici, ./ = dossier racine , dossier2/ = tu rentres dans le dossier2, fichier2.1 = tu appelles le fichier 2.1

* avec le fichier 1.1, tu veux appeler le fichier 1.2 :
<a href="fichier 2.1"> lien </a>
ou
<a href="./fichier 2.1"> lien </a>  


* avec le fichier 1.1.1, tu veux appeler le fichier 2 qui est à la racine du site :
<a href="../../fichier 2"> lien </a>

le ../ signifie que tu remonte dans l'arboressence.
ici, tu l'appelles 2 fois car :
1) tu est dans le dossier 1.1, ../ --> tu es dans le dossier 1
2) tu es dans le dossier 1, ../ --> tu es dans le dossier racine

* de n'importe ou dans l'arboresence, tu veux retourner a la page d'index du site :
<a href="/"> lien </a>

car / signifie racine du site (et par defaut, la page index s'ouvre si elle s'appelle index.html (.htm, .php...)
Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

2

bowbow13, le 22 jun 2007 à 08:53:19

Menu en liste avec du javascript ca te fait un menu déroulant ^^
et sans logiciel

Répondre à bowbow13

3

Ben, le 22 jun 2007 à 12:17:40

Merci, c'est ce que j'ai déjà fait.
Le problème c'est:

qu'en partant de la page principale: tous les liens fonctionnent.

ex:
racine du site avec une page index
et un sous répertoire html

les liens du menu déroulant font entrer dans le sous répertoire html et pointent vers la bonne page.


Par contre si je pars d'une page quelconque du site, comme les liens relatifs sont désigné par rapport à la page en cours, et non par rapport à la racine du site, il en résulte qu'aucun lien n'est valide.

ex: je suis déjà dans une page du répertoire html, les liens relatifs pointent vers un répertoire html qui n'existe pas.


En dernier recours, j'ai pensé mettre toutes les pages html en vrac à la racine du site...mais bon, question organisation c'est pas le mieux.

Répondre à Ben

4

gryzzly, le 22 jun 2007 à 12:39:53

Bonjour,

Réponse ici :

menu dhtml et liens relatifs#1

;-) Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

5

Ben, le 22 jun 2007 à 16:43:21

Merci, j'ai bien compris comment faire des liens relatifs. C'est pas ça mon problème. Le problème des liens relatifs, c'est qu'ils indiquent un lien relatif, par rapport à la page en cours. Je voulais savoir comment faire en sorte que le lien relatif soit défini en fonction d'un fichier de référence, et non en fonction de la page en cours, ce qui m'aurais permis de définir un menu une fois pour toute.

dire par exemple que les liens relatifs sont à interpréter par rapport à tel fichier qui se trouve dans tel répertoire.


mais bon, tant pis, j'ai trouvé la parade, je vais créer autant de nouveau menu qu'il y aura de sousrépertoire....les liens relatifs étant alors en fonction du sous répertoire dans lequel on se trouve

Répondre à Ben

6

gryzzly, le 22 jun 2007 à 16:49:32

Loool

on la refait :

menu dhtml et liens relatifs#1

lien "relatif absolu" lol :

<a href="/dossier/fichier.ext"> lien </a>

/ = racine
dossier/ = dossier
fichier.Ext = fichier
Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

7

Ben, le 22 jun 2007 à 19:40:25

MDR. C'est un dialogue de sourd. lol Bon je vais essayer d'être clair:

J'ai le répertoire racine:

ROOT
dans lequel j'ai un fichier
index.html
et :
menu.js
liensmenu.js


j'ai 1 sous répertoire
SUBDIR
dans lequel j'ai 2 fichiers:
fichier1.html
fichier2.html






dans les fichiers de configs js , les liens vers les pages sont indiqués relativement:
/index.html
/SUBDIR/fichier1.html
/subdir/fichier2.html


ensuite, chaque page appelle le script du menu , ainsi dans
index.html ça appelle le fichier /menu.js et lien /menu.js
et dans les fichiers1.html, et fichier2.html, ça appelle: /../menu.js et /../liensmenu.js

il en résulte que mon menu s'affiche bien sur chaque page (ça applele relativement le bon fichier de config).
Par contre les liens fonctionnent sur la page index
mais ne fonctionnent pas sur fichier1.html et fichier2.html, car alors ils pointent vers un fichier qui n'existe pas : index.html dans le répertoire SUBDIR, et un sous répertoire qui n'existe pas dans le sous répertoire SUBDIR. (liens /index.html et liens /SUBDIR/fichier1.html etc...

bref voilà mon problème. SUis-je contraint de creer un nouveau fichier liensmenus.html, dans chaque sous repertoire, et appeler alors ce fichier, dans les pages html de ce sous répertoire pour que les liens fonctionnent (en modifiant donc les liens relatifs). Ou puis-je faire en sorte de faire comprendre que tous les liens seront à interpréter par raport à une référence, qui est le répertoire root, et ainsi n'avoir qu'un seul fichier de config des liens.

Répondre à Ben

8

gryzzly, le 22 jun 2007 à 19:49:38

Punaise,

tu le fais exprès ou quoi ??????

<a href="/dossier/fichier.ext"> lien </a>

/ = racine
dossier/ = dossier
fichier.Ext = fichier 


quelque soit la page, le dossier, ca appelle fichier.ext du dossier lui meme a la racine !! Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

12

Ben, le 22 jun 2007 à 20:22:09

En mettant le lien comme tu l'indiques, cela ne fonctionnera pas en local (a moins de placer le dossier à la racine du lecteur), car ça envoie directement à la racine. De même , si le site est hébergé au sein d'un gros site institutionnel, cela oblige à placer le dossier à la racine. Mais bon, merci quand même pour ta persévérance.

Je me suis résigné a faire un menu, avec des liens différents pour chaque sous dossier.

Répondre à Ben

13

gryzzly, le 22 jun 2007 à 20:28:11

Ca fonctionne en local, je l'ai testé avant de le donner !

ca marche que si le dossier est à la racine ? tu veux qu'il soit ou ? dans un sous dossier ?

<a href="/dossier1/dossier2/dossier3/dossier4/fichier.ext"> lien </a>

ca fonctionne aussi... je viens de vérifier
Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

14

gryzzly, le 22 jun 2007 à 20:46:15

Preuve :

http://marmottemanu.free.fr/share/ccm/d1/f1.html

(le lien vers d1/d2/d3/d4/f1.html est toujours le même dans toutes les pages !!!!!

et nulle par il y a écrit le nom du domaine!!!)

CQFD !


Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

15

Ben, le 22 jun 2007 à 21:08:14

Oui gryzzly, je suis d'accord avec toi. Quand tu connais l'arborescence, cela marche, car tu connais toute l'arborescence depuis la racine. Dès lors tu peux indiquer/ pour retourner à la racine puis indiquer la suite du chemin vers ton fichier.

Mais si je télécharges toutes tes pages web. Que je les mets dans un dossier X (en gardant ton arborescence au sein de ce dossier), et que je réupload ce dossier sur le serveur, cela ne marchera plus, car si j'indique: / , ça retourne à la racine, mais il te manquera ensuite le maillon pour permettre le passage depuis la racine, au répertoire X.

D'où l'utilisation des ../ pour ne remonter que d'un certain nombre de niveau dans l'arborescence. Mais dès lors, il faut modifier chacun de ces liens relativement à la page où l'on se trouve.

Répondre à Ben

17

s.spark, le 22 jun 2007 à 21:18:24

Oui mais le vrai problème c'est que tu n'as pas été clair dans ton souhait, je ne me souviens pas avoir lu "le problème c'est que je change mes fichiers de dossier", tu as simplement dis que les lien relatif ne fonctionne pas, alors que si.
Ceux qui veulent savoir comment utiliser eMule Paradise contactez moi par email.

Répondre à s.spark

18

s.spark, le 22 jun 2007 à 21:32:21

Et même comme ca je ne vois pas ou est le problème N'utilise pas la racine tous simplement je n'en vois pas l'utilité.
Ceux qui veulent savoir comment utiliser eMule Paradise contactez moi par email.

Répondre à s.spark

16

gryzzly, le 22 jun 2007 à 21:11:12

Excuses moi... MAIS lorsque tu construit un site : le fichier index.html (page d'accueil) est toujours à la racine (sinon, y'a deja un défaut dans ta facon de proceder)... après, si tu as des problemes, faut pas s'etonner ;-)

y'a des "normes" a respecter un minimum.

sinon après faut travailler en php. Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

19

Ben, le 22 jun 2007 à 21:56:36

Oui, je sais bien qu'il y a des normes a respecter. Le problème c'est que mon site fait partie d'un travail universitaire, qui sera ensuite intégré au site de l'université en question. A partir de ce moment là, je ne serai plus propriétaire de mon travail. En clair, pour que les liens soit pérennes, il faut que je trouve un système pour que si le webmestre en question décide de ballader mon site au sein de son serveur, que mes liens soient toujours fonctionnels, quelque soit les transbahutage qu'il subit, ou changement de nom de domaine.

Mais bon, j'ai trouvé la parade, fastidieuse certes, mais ça marche.

Il est bien évident que si j'avais été propriétaire du serveur sur lequel serait mis en ligne le site, cela aurait été beaucoup plus facile.

Répondre à Ben

20

s.spark, le 22 jun 2007 à 22:29:08

Il est de coutume de donner la solution sur le forum, sinon c'est plus un forum. Et je maintien ce que j'ai, tu n'as pas besoin de la racine me semble t-il (je parle des fichier qui en appel d'autre).
Ceux qui veulent savoir comment utiliser eMule Paradise contactez moi par email.

Répondre à s.spark

21

Ben, le 22 jun 2007 à 23:24:44

J'ai donné ma solution...je crée un menu avec des liens relatifs différents, en fonction du sous répertoire dans lequel je me trouve, puisque il n'y a pas moyen d'indiquer un répertoire qui serait considéré comme la racine du site à partir duquel tous les autres liens seraient définis.

Répondre à Ben

9

s.spark, le 22 jun 2007 à 19:52:04

Salut,

Je sort d'une sieste alors j'ai rien compris, alors je vais te répondre une soluce qui te conviendra je l'espère.

Dans ton code au lieu de mettre http:\\www.monsite.com/fichier.js en valeur absolu, tu mets en php:

<?php echo "http:\\" . $_SERVER['HTTP_HOST']; ?>/fichier.js

Autre exemple :
<?php echo "http:\\" . $_SERVER['HTTP_HOST']; ?>/SUBDIR/fichier1.html 


$_SERVER['HTTP_HOST'] contiens le domaine/sous domaine demandé dans l'url (www.monsite.com).
Ceux qui veulent savoir comment utiliser eMule Paradise contactez moi par email.

Répondre à s.spark

10

gryzzly, le 22 jun 2007 à 19:55:12

et dans les fichiers1.html, et fichier2.html, ça appelle: /../menu.js et /../liensmenu.js 


/../ ca veut rien dire .... Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

11

RAD ZONE, le 22 jun 2007 à 19:56:24

Par contre les liens fonctionnent sur la page index
mais ne fonctionnent pas sur fichier1.html et fichier2.html, car alors ils pointent vers un fichier qui n'existe pas : index.html dans le répertoire SUBDIR, et un sous répertoire qui n'existe pas dans le sous répertoire SUBDIR. (liens /index.html et liens /SUBDIR/fichier1.html etc...


mais c est normal !!! puisque les pages 1.html et 2.html son dans un sous dossier comment veut tu que les meme liens que la page index soit bon sur ces page ????????

passe en lien absolu !!!

RAD La plus grande erreur que puisse faire un homme est d'avoir peur d'en faire une.

Répondre à RAD ZONE

22

matthiieu, le 11 jun 2008 à 10:44:01

Bonjour
voila g un soucis je voudrais savoir comment on peut faire un menu en DHTML
svp merci de me repondre
a bientot

Répondre à matthiieu

23

 harfharf, le 4 déc 2008 à 18:09:24

Bonjour,

Je reviens sur le sujet puisque je suis tombé dessus en cherchant la solution d'un problème similaire.
Une bonne solution se trouve ici (en tout cas dans la problématique décrite plus bas) :
http://www.commentcamarche.net/forum/affich 2275938 probleme de liens pour les pages
(topic de crabs)

Mon soucis était de faire monter des images dans un menu include à differents niveaux d'arborescence.
En créant une variable $RACINE et en lui indiquant le chemin à suivre selon les pages ça fonctionne et ça peux aussi s'appliquer aux images appelées en CSS par du javascript.

Répondre à harfharf
Collection CommentÇaMarche.net