Menu DHTML et liens relatifs

Fermé
Ben - 22 juin 2007 à 00:54
 harfharf - 4 déc. 2008 à 18:09
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.
A voir également:

12 réponses

gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 juin 2007 à 04:00
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...)
2
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 juin 2007 à 19:55
et dans les fichiers1.html, et fichier2.html, ça appelle: /../menu.js et /../liensmenu.js 


/../ ca veut rien dire ....
1
menu en liste avec du javascript ca te fait un menu déroulant ^^
et sans logiciel
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 juin 2007 à 12:39
Bonjour,

Réponse ici :

menu dhtml et liens relatifs#1

;-)
0
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
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 juin 2007 à 16:49
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
0
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.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
22 juin 2007 à 19:49
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 !!
0
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.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334 > Ben
22 juin 2007 à 20:28
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
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334 > Ben
22 juin 2007 à 20:46
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 !


0
Ben > gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020
22 juin 2007 à 21:08
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.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334 > gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020
22 juin 2007 à 21:11
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.
0
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
22 juin 2007 à 19:52
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).
0
RAD ZONE Messages postés 5230 Date d'inscription samedi 20 janvier 2007 Statut Contributeur Dernière intervention 17 août 2024 1 360
22 juin 2007 à 19:56
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
0
bonjour
voila g un soucis je voudrais savoir comment on peut faire un menu en DHTML
svp merci de me repondre
a bientot
0
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.
0