[Résolu] Problème sur un gabarit de menu

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.6.8
#~ Nom de l'hébergeur : free.fr
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.6.8
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.5
#~ * ModuleManager: 1.3.3
#~ * News: 2.10.5
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.5
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.2
#~ * SimpleSlider: 0.3
#~ * Showtime: 1.0.5
#~ * jQuery: 1.1.2
#~ * FormBuilder: 0.6.4
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 2000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.1.3RC4-dev
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * memory_limit: 32M
#~ * max_execution_time: 20
#~ * safe_mode: On (Vrai)
#~ * session_save_path: /mnt/140/sdb/b/3/monsite/sessions (0700)
#~ * session_use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi-fcgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.83
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~


Bonsoir j'ai un soucis pour finaliser un gabarit de menu.

J'ai créé un menu en dur avec du jquery qui fonctionne bien.

Je l'ai transposé et là je bloque.

Je récupère bien la mise en forme pour le topnav et le subnav, cependant je n'ai que le premier <li> du subnav qui s'affiche

Voici en dur ce que celà donne :


<script src="http://code.jquery.com/jquery-1.4.3.js" type="text/javascript"></script>
<script type="text/javascript">
var obj = null;
function checkHover() {
if (obj) {
obj.find('ul').fadeOut('fast');
}
}
$(document).ready(function(){
$('.topnav > li').hover(function() {
if (obj) {
obj.find('ul').fadeOut('fast');
obj = null;
}

$(this).find('ul').fadeIn('fast');
}, function() {
obj = $(this);
setTimeout(
"checkHover()",
0);
});

});

</script>
{/literal}
</head>
<body>
<div id="page-wrap">
<ul class="topnav">
<li>
<a href="#">A</a>
</li>
<li>
<a href="#">B</a>
<ul class="subnav">
<li><a href="#">B1</a></li>
<li><a href="#">B2</a></li>
<li><a href="#">B3</a></li>
<li><a href="#">B4</a></li>
<li><a href="#">B5</a></li>
</ul>
</li>
<li><a href="#">C</a>
<ul class="subnav">
<li><a href="#">C1</a></li>
<li><a href="#">C2</a></li>
<li><a href="#">C3</a></li>
</ul>
</li>
<li><a href="#">D</a></li>
<li><a href="#">Z</a>
<ul class="subnav">
<li><a href="#">E1</a></li>
<li><a href="#">E2</a></li>
<li><a href="#">E3</a></li>
</ul>
</li>
</ul>
</div>
{content}
{menu} // ici c'est pour tester le menu .tpl
</body>
</html>

Voici le .tpl

{if $count > 0}
<ul class="topnav">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string='<ul class="subnav">' times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if $node->depth == 1}
<li class="subnav"><a href="{$node->url}">{$node->menutext}</a>
{else}
<li><a href="{$node->url}">{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

Merci.
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.6.8
#~ Nom de l'hébergeur : free.fr
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.6.8
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.5
#~ * ModuleManager: 1.3.3
#~ * News: 2.10.5
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.5
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.2
#~ * SimpleSlider: 0.3
#~ * Showtime: 1.0.5
#~ * jQuery: 1.1.2
#~ * FormBuilder: 0.6.4
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 2000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.1.3RC4-dev
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * memory_limit: 32M
#~ * max_execution_time: 20
#~ * safe_mode: On (Vrai)
#~ * session_save_path: /mnt/140/sdb/b/3/monsite/sessions (0700)
#~ * session_use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi-fcgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.83
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~


Bonsoir j'ai un soucis pour finaliser un gabarit de menu.

J'ai créé un menu en dur avec du jquery qui fonctionne bien.

Je l'ai transposé et là je bloque.

Je récupère bien la mise en forme pour le topnav et le subnav, cependant je n'ai que le premier <li> du subnav qui s'affiche

Voici en dur ce que celà donne :


<script src="http://code.jquery.com/jquery-1.4.3.js" type="text/javascript"></script>
<script type="text/javascript">
var obj = null;
function checkHover() {
if (obj) {
obj.find('ul').fadeOut('fast');
}
}
$(document).ready(function(){
$('.topnav > li').hover(function() {
if (obj) {
obj.find('ul').fadeOut('fast');
obj = null;
}

$(this).find('ul').fadeIn('fast');
}, function() {
obj = $(this);
setTimeout(
"checkHover()",
0);
});

});

</script>
{/literal}
</head>
<body>
<div id="page-wrap">
<ul class="topnav">
<li>
<a href="#">A</a>
</li>
<li>
<a href="#">B</a>
<ul class="subnav">
<li><a href="#">B1</a></li>
<li><a href="#">B2</a></li>
<li><a href="#">B3</a></li>
<li><a href="#">B4</a></li>
<li><a href="#">B5</a></li>
</ul>
</li>
<li><a href="#">C</a>
<ul class="subnav">
<li><a href="#">C1</a></li>
<li><a href="#">C2</a></li>
<li><a href="#">C3</a></li>
</ul>
</li>
<li><a href="#">D</a></li>
<li><a href="#">Z</a>
<ul class="subnav">
<li><a href="#">E1</a></li>
<li><a href="#">E2</a></li>
<li><a href="#">E3</a></li>
</ul>
</li>
</ul>
</div>
{content}
{menu} // ici c'est pour tester le menu .tpl
</body>
</html>

Voici le .tpl

{if $count > 0}
<ul class="topnav">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string='<ul class="subnav">' times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if $node->depth == 1}
<li class="subnav"><a href="{$node->url}">{$node->menutext}</a>
{else}
<li><a href="{$node->url}">{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

Merci.
#2
Met à jour ta version de cmsms, on est actuellement à la 1.8.2.
#2
Met à jour ta version de cmsms, on est actuellement à la 1.8.2.
#3
>Met à jour ta version de cmsms, on est actuellement à la 1.8.2.
heu non pas possible regarde l'hébergeur Wink De plus loupé on est en 1.9 !!!
>Nom de l'hébergeur : free.fr
= 5.1.3RC4-dev
J-C Etiemble v 2.2.xx
#3
>Met à jour ta version de cmsms, on est actuellement à la 1.8.2.
heu non pas possible regarde l'hébergeur Wink De plus loupé on est en 1.9 !!!
>Nom de l'hébergeur : free.fr
= 5.1.3RC4-dev
J-C Etiemble v 2.2.xx
#4
Bonjour drmicro,

Et que donne la sortie HTML de CMSMS (via la balise {menu}) ?
#4
Bonjour drmicro,

Et que donne la sortie HTML de CMSMS (via la balise {menu}) ?
#5
Bonjour

Cela donne :

<ul class="topnav">
<li class="subnav"><a href="#">Accueil</a>
</li>
<li class="subnav"><a href="#">Produits</a>
<ul class="subnav">
<li><a href="#">Produit 1</a>
</li>
</ul>
</li>
</ul>


Effectivement je n'avais pas pensé à ça.

Je n'ai pas besoin du class="subnav" dans le <li>.

Sinon ça à l'air correct.
#5
Bonjour

Cela donne :

<ul class="topnav">
<li class="subnav"><a href="#">Accueil</a>
</li>
<li class="subnav"><a href="#">Produits</a>
<ul class="subnav">
<li><a href="#">Produit 1</a>
</li>
</ul>
</li>
</ul>


Effectivement je n'avais pas pensé à ça.

Je n'ai pas besoin du class="subnav" dans le <li>.

Sinon ça à l'air correct.
#6
Donc en fait ça ne va pas plus loin dans le processus malgré tous les menus et sous-menus créés.

<ul class="topnav">
<li><a href="#">Accueil</a>
</li>
<li><a href="#">Produits</a>
<ul class="subnav">
<li><a href="#">Portes</a>
</li>
</ul>
</li>
</ul>

Il doit y avoir des boucles dans le tpl qui ne sont pas bonnes.

Je suppose donc que le problème est ici :

{if $node->depth == 1}
<li class="subnav"><a href="{$node->url}">{$node->menutext}</a>
{else}
<li><a href="{$node->url}">{$node->menutext}</a>
{/if}

Merci de bien vouloir m'aider
#6
Donc en fait ça ne va pas plus loin dans le processus malgré tous les menus et sous-menus créés.

<ul class="topnav">
<li><a href="#">Accueil</a>
</li>
<li><a href="#">Produits</a>
<ul class="subnav">
<li><a href="#">Portes</a>
</li>
</ul>
</li>
</ul>

Il doit y avoir des boucles dans le tpl qui ne sont pas bonnes.

Je suppose donc que le problème est ici :

{if $node->depth == 1}
<li class="subnav"><a href="{$node->url}">{$node->menutext}</a>
{else}
<li><a href="{$node->url}">{$node->menutext}</a>
{/if}

Merci de bien vouloir m'aider
#7
Bon, je crois que je vais prendre la solution de facilité.

Je vais mettre dans les href de mon menu en dur : index.php?page=nomdemapage

C'est pas le top mais ça fonctionne.
#7
Bon, je crois que je vais prendre la solution de facilité.

Je vais mettre dans les href de mon menu en dur : index.php?page=nomdemapage

C'est pas le top mais ça fonctionne.
#8
Citation :C'est pas le top mais ça fonctionne.


je confirmes c'est pas top, tu peux me rappeler l'intérêt d'utiliser un outils comme cmsms si c'est pour se passer des url dynamique dans le menu ?

si tu essayais plutôt de partir d'un menu qui fonctionne et d'adapter ENSUITE celui ci avec tes outils Jquery, ca serait pas plus simple ?
#8
Citation :C'est pas le top mais ça fonctionne.


je confirmes c'est pas top, tu peux me rappeler l'intérêt d'utiliser un outils comme cmsms si c'est pour se passer des url dynamique dans le menu ?

si tu essayais plutôt de partir d'un menu qui fonctionne et d'adapter ENSUITE celui ci avec tes outils Jquery, ca serait pas plus simple ?
#9
Je rejoins Bess sur sa proposition, pars du gabarit minimal de menu et regarde déjà si tout le menu s'affiche dans le code HTML avant d'y adjoindre du JQuery.

A+
#9
Je rejoins Bess sur sa proposition, pars du gabarit minimal de menu et regarde déjà si tout le menu s'affiche dans le code HTML avant d'y adjoindre du JQuery.

A+
#10
Merci à vous pour vos conseils
#10
Merci à vous pour vos conseils


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)