FLUX RSS



ACCUEIL / FORUMS / DESIGN / [TUTO] MENU VERTICAL DYNAMIQUE




sondages
Avez-vous déjà utilisé les exports statiques ? :
oui
non
RESULTATS | SONDAGES
liens
eZ systems
http://ez.no
PHPEdit
http://www.waterproof.fr/
AFUL
http://www.aful.org
Framasoft
http://www.framasoft.net
[tuto] Menu vertical dynamique

Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.

Auteur Message

Benjamin Lemoine

Lundi 30 Janvier 2006 4:16:58 pm

[tuto] Menu vertical dynamique

J'ai récemment créé un menu dynamique en javascript pour mon site.

Ce menu récupère, sur 2 niveaux, tous les répertoires et sous-répertoires se situant sous le noeud principal dans l'arborescence Ez. Exemple :

|+ eZ Publish (dossier racine, node_id=2)
|+ Dossier 1
|+ Sous-dossier 1.1
|+ Sous-dossier 1.2
|+ Dossier 2
|+ Sous-dossier 2.1
|+ Sous-dossier 2.2
|+ Dossier 3
|+ Sous-dossier 3.1
|+ Sous-dossier 3.2

Je mets les sources de base pour en faire profiter tout le monde et je vais essayer d'expliquer au mieux

Ce code est à placer dans le pagelayout.tpl de votre siteaccess.

1°) Nous allons créer notre fonction javascript permettant d'étendre ou contracter nos menus.
Cette fonction ne sera utilisée que lorsque l'utilisateur cliquera sur un onglet du menu.
{literal} est une fonction de eZ permettant d'inclure du Javascript dans son code.

Dans notre pagelayout, insérer le code suivant entre les balises <HEAD></HEAD> :

{literal}
<script type="text/javascript">
<!--
// Fonction d'extension, contraction du menu
function interact(id) {
var d = document.getElementById(id); //permet de récupérer la partie du menu à montrer ou cacher
if (d) { // Si le menu selectionné est caché alors on demande de l'afficher
if (d.style.display == "none" ){
d.style.display = "block";
}
else { //Sinon on demande de le cacher
d.style.display = "none";
}
}
}
//-->
</script>
{/literal}


2°) Maintenant entre les balises <BODY></BODY>, choisissez l'emplacement ou vous souhaitez voir apparaitre votre menu (je ne détaillerai pas la mise en page html / css).
Collez-y le code suivant :


{** Récupération de tous les menus de niveau 1, sous le noeud racine **}
{def $menu1=fetch( 'content', 'list', hash( 'parent_node_id', 2, 'class_filter_type', 'include', 'class_filter_array', array( 'folder' ) ))}

{def $var_menu=0 $smenu='' } {*definition d'une variable pour chacun des menus*}

{foreach $menu1 as $intitule} {*pour chaque dossier de niveau 1*}
{set $var_menu = $var_menu|inc} {*on incrémente la variable $var_menu*}
{set $smenu = concat("smenu", $var_menu)} {*le nom du menu courant devient smenu+$var_menu, par ex: smenu1*}

{*on affiche le dossier de niveau 1, permettant d'afficher le sous-menu $smenu*}
<dt><a href="#" onclick="javascript:interact('{$smenu}');">{$intitule.name}</a></dt>

{*on récupère alors tous les sous-menus de ce dossier*}
{def $menu2=fetch( 'content', 'list', hash( 'parent_node_id', $intitule.node_id ))}

{*on attribue une id à chacun des sous-menus*}
<dd id='{$smenu}'
{*le if suivant permet de vérifier si le contenu affiché fait partie d'un des menus
Si oui, alors le menu correspondant restera ouvert
*}
{if eq($module_result.path[1].text, $intitule.name)}
style="display:block"
{else}
style="display:none"
{/if}>

{*pour chaque sous-menu, on affiche un lien vers la rubrique correspondante*}
{foreach $menu2 as $sous_rub}
<a href={$sous_rub.url_alias|ezurl}>{$sous_rub.name}</a><br>
{/foreach}
{undef $menu2}
</dd>
{/foreach}
{undef $menu1}


Voila, je sais pas si c'est assez clair (c'est pas évident à expliquer), mais si vous rencontrez des problèmes n'hesitez pas à me contacter.

Bonne continuation

Benjamin.

nath TLG

Jeudi 16 Février 2006 6:20:51 pm

Re: [tuto] Menu vertical dynamique

Merci beaucoup pour le tutoriel! il marche tres bien chez moi. Cependant j'ai du mal a comprendre la partie où tu
donne un id à chacun des sous-menus et la partie ou tu verifie si le menu doit rester ouvert ou non. J'aimerai bien adapter ton exemple pour faire un menu qui va jusqu'à 3 ou 4 niveaux

merci beaucoup
nath

nath TLG

Vendredi 17 Février 2006 10:23:08 am

Re: [tuto] Menu vertical dynamique

Finalement j'ai réussi à me debrouiller pour faire afficher plusieurs niveaux. j'ai bien compris ton code
merci encore

Benjamin Lemoine

Vendredi 17 Février 2006 10:57:10 am

Re: [tuto] Menu vertical dynamique

Heureux d'apprendre que mon code est utile

Bonne continuation


(le merci...bcp ci-dessous est ma signature, ca serait vraiment bien si on pouvait la modifier )

Benjamin.

François T.

Mercredi 12 Avril 2006 3:13:25 pm

Re: [tuto] Menu vertical dynamique

Si Nath voulait bien nous montrer comment il a adapté pour récupérer plusieurs nivaux, ça pourrait être sympa.
En tout cas, merci Benjamin.

Humba MACKOSO

Mercredi 12 Avril 2006 8:36:02 pm

Re: [tuto] Menu vertical dynamique

Peut-on voir une demo de vos réalisations ?

Merci !

Benjamin Lemoine

Jeudi 13 Avril 2006 8:51:10 am

Re: [tuto] Menu vertical dynamique

mon site n'est pas encore en ligne, ce n'est plus qu'une question de jours à présent. Je vous signalerai lorsqu'il sera accessible.

Bonne continuation.

Benjamin.

actualités
Traduction d'un tutorial eZ
eZ publish 4.0 est sorti
EzPublish 3.9 enfin disponible !
Ez Publish 3.9 RC2 est en ligne !
Ez Publish 3.9 RC1 disponible !
références
Site ohmycom
OhmyBlog