[HTML] Méthode d'Integration d'un menu

Bonjour à tous,

Je cherche un moyen pour integrer un menu a mon site, j’aimerais pouvoir creer mon menu sur une page et l’appeller dans toutes les autres pages du site.
L’avantage c’est que quand je souhaiterais modifier mon menu je n’aurais qu’un fichier à modifier.

La seule méthode que je connais fais appelle au PHP, avec un #include, et aux cadres.
Le probleme c’est qu’il me semble que l’utilisation de cadre est déconseillé pour des histoires d’indexation par les moteurs de recherche, j’aimerais également dans la mesure du possible éviter le php (mais si j’ai pas le choix tant pis :slight_smile: ).

Connaissez vous donc une méthode afin que je puisse réaliser ce type de menu ?

Merci d’avance pour vos réponses,

Shawn

Si tu veux éviter php, mais que tu as Apache, tu peux toujours utiliser les SSI.

http://httpd.apache.org/docs/2.0/howto/ssi.html

Certainement aussi puissant, voir plus rapide.

Je n’ai malheuresement pas la possibilité d’utiliser Apache.

Je dis peut-être une bêtise mais tu dois pouvoir le faire en JavaScript : construit ton fichier menu (celui contenant les données) au format XML et utilise une librairie JavaScript pour récupérer, parser, puis afficher ton menu.

Si c’est possible en Javascript sa m’interresserait beaucoup, je vais essayer de fouiller cette piste.

L’operation de “parser” est assez complexe et hors de ma portée, je vais finalement me contenter de faire un menu en html avec une mise en forme par css, je devrais donc le changer sur chaque page lors de sa modification…

Le parsing est également une action très simple car facilité par les librairies XML existantes.
Sinon, tu peux remplir ton fichier menu avec le code HTML tel que tu le souhaite et n’utiliser JavaScript que pour inclure ce fichier (ne garder qu’une seule des trois étapes indiquée plus haut -récup, parsing, affichage-).

Il existe donc un équivalent au #include du php en javascript ? je vais chercher :slight_smile:

Merci

Vu qu’en Ajax tu peux récupérer un fichier et que tu peux écrire dans un document HTML (document.write() et autres méthodes) je dirais que oui.

(Par contre, tout tes visiteurs ne supportant (eux et/ou leur navigateur) pas le JavaScript n’auront pas ton menu :-/.

Ouai donc la seul méthode simple et efficace qui pose pas de probleme aux visiteurs, c’est le php que je n’ai malheuresement pas la possibilité d’utiliser.

Merci beaucoup pour toute ces informations :slight_smile:

Le javascript est couramment activé quand même, AJAX peut-être moins. mais soit avec les [i]innerHtml[i], soit avec les document.write tu peux ajouter du contenu html en javascript, et sans utiliser AJAX. l’inconvénient est que pour mettre à jour le menu, il faut le faire dans les variables Javascript (via un tableau d’url par exemple…).

edit: j’ai eu un client qui l’avait fait pour un site commercial, sans problème :neutre:

Bon voila j’ai finis mon menu sur un fichier html indépendant, mais je n’arrive pas a l’integrer, je comprends pas l’utilisation de document.write, quelqu’un peut m’aider s’il vous plait ?

Comme je disais, sans AJAX, tu es obligé de tout mettre en javascript, donc dans le fichier .js
avec des document.write(’<div> du code html </div>’)

sinon, pour le charger en AJAX, j’ai trouvé cet exemple:
http://www.w3schools.com/ajax/ajax_source.asp

en utilisant la fonction GetXmlHttpObject() pour récup l’objet aussi bien sous IE que fx, puis en passant comme url, celle de ton menu en XHTML.

Merci pour ton aide mais je ne parviens toujours pas a integrer mon menu… je ne dois pas avoir les connaissances suffisantes en javascript, tant pis je m’amuserais a modifier mon menu sur toutes mes pages… :confused:

Attend, j’ai modifié un poil l’exemple AJAX du W3C pour utiliser la fonction en mode “synchrone”: c’est plus simple à utiliser: tu passe l’url de ton fichier (menu.hml au même emplacement) et ça te renvoie le contenu:

[codebox]
<html?gt;<head><title></title></head><body>
<script language="javascript">
var xmlHttp;

// ajax function to get text content of an url ©2007 W3C example refactored by deltree
function httpContent(url)
{
if (url.length==0)
{
return "";
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return "";
}

try{
//commented to not use the callback function
// xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,false); //true means asynchronous with callback function
xmlHttp.send(null);
}
catch (e)
{
alert ("Your browser security disallow AJAX!");
}
return xmlHttp.responseText;
}

//callback function (not used)
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject(" Microsoft.XMLHTTP");
}
}
return xmlHttp;
}

</script>
some code
<!-- here is the menu -->
<script language="javascript">
document.write(httpContent(" menu.html?quot;));
</script>
some other code 2
</body></html?gt;
[/codebox]

Merci beaucoup d’avoir consacré un peu de temps a mon probleme, ton script fonctionne tres bien, il faut donc que l’ajax soit activé pour que le menu s’affiche ? Sa doit etre la cas pour la majorité des internautes non ?

Merci encore,

Shawn

edit : Il reste tout de meme deux problemes, le premier est un probleme d’alignement, le menu s’aligne a gauche malgrés le fait qu’il soit placé dans un <div>, je pense pouvoir résoudre ce probleme rapidement, le second plus ennuyant concerne Internet Explorer où AJAX n’est pas activé par défaut (contrairement a firefox), et lorsqu’on l’active (apres avoir chercher dans toutes les options) IE laisse un message totalement débile inscrit en haut du navigateur “votre ordinateur court un risque” ce qui signifie pour un utilisateur lambda fermeture du site.

Oui, c’est activé en même temps que le javascript à priori. j’ai testé sur IE6 et Fx1.5.
:slight_smile:

J’ai du éditer juste quand tu répondais :stuck_out_tongue: J’ai testé sur IE7 et il n’est pas activé avec le javascript par contre firefox aucun probleme :slight_smile:

Ouaip donc personne n’aurais une autre méthode pour éditer un menu sur tout un site rapidement s’il vous plait ?

Je remonte le topic une derniere fois parce que j’aurais vraiment besoin de savoir si c’est possible, mes recherches n’ont rien donnée mais peut etre que j’ai loupé quelque chose ?!