Téléchargement
illégal
Posez votre question Signaler

Menu DHTML et liens relatifs

Ben - Dernière réponse le 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.
Lire la suite 

Menu DHTML et liens relatifs »

23 réponses
Réponse
+2
moins plus
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...)
Ajouter un commentaire
Réponse
+1
moins plus
et dans les fichiers1.html, et fichier2.html, ça appelle: /../menu.js et /../liensmenu.js 


/../ ca veut rien dire ....
Ajouter un commentaire
Réponse
+0
moins plus
menu en liste avec du javascript ca te fait un menu déroulant ^^
et sans logiciel
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Réponse ici :

menu dhtml et liens relatifs#1

;-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 !!
Ben - 22 juin 2007 à 21:56
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.
s.spark- 22 juin 2007 à 22:29
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).
Ben - 22 juin 2007 à 23:24
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.
Ajouter un commentaire
Réponse
+0
moins plus
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).
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
bonjour
voila g un soucis je voudrais savoir comment on peut faire un menu en DHTML
svp merci de me repondre
a bientot
harfharf - 4 déc. 2008 à 18:09
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.
Ajouter un commentaire
Ce document intitulé « Menu DHTML et liens relatifs » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?