Vous n'êtes pas identifié(e).
Un petit message qui fait suite à une discussion que nous avions eu il y a quelques temps sur la réalisation de menus à la fois horizontaux et verticaux.
Ci joint le topic pour vous remettre dans le bain :
http://www.zitecms.org/zite/forum/viewtopic.php?id=480
bvffalo73 avait trouvé à l'époque un petit script qui fonctionnait parfaitement. Mais voila mon probleme :
En fait je suis en train de réutiliser pour un nouveau site ce principe de menus verticaux et horizontaux.
J'ai par exemple :
<?php echo $zite->levelMenu(1) ?> pour mon menu horizontal
et <?php echo $zite->levelMenu(2) ?> pour mon menu vertical
Mais quelqu'un pourrait il me dire comment pourrait on avoir l'affichage des sous menus ?... c'est à dire de niveau 3 ou 4, sous sous menus de mon vertical par exemple ?... est ce seulement possible ?
un truc du genre <?php echo $zite->levelMenu(2,3,4) ?> ????? pas sur que ça fonctionne ;-))
Si quelqu'un a une idée, je suis preneur !
Rémi
Hors ligne
Pas d'idées ?...
Hors ligne
salut
je crois qu'un sujet en parlai et l'idée était d'avoir deux div présentant les menu avec un paramétrage css du type
div horizontaux zli1 visible et les autres invisible
et le vertical on rendait juste les zli1 invisible et le reste visible
après en css je ne sais plus comment cela ce fait !!!
http://www.zitecms.org/zite/forum/viewtopic.php?id=104
Dernière modification par snypi (10/06/2010 22:19:25)
un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/
Hors ligne
Est-ce que ce type de site zite correspond à ton idée de menus et- sous-menus ?
http://www.domaineduboisjoly.com
le lien "Gamme de vins" affiche un sous-menu.... dans lequel le lien "Muscadet" affiche un sous-sous-menu...
si ça s'en approche, je te guide.
Stéphane
Webdesign AvantageWeb
Hors ligne
Bonjour à tous !...
Alors d'abord, un gros gros "DESOLE" pour le retard de cette réponse : je balance un post et ne vais même pas voir les réponses, c'est nul... beaucoup de taf en ce moment, malgré tout ça ne se fait pas !.. promis je ne le referai plus ;-)
Merci d'abord pour vos réponses.
Voila un exemple pour vous expliquer mieux ce dont j'ai besoin :
http://www.dixit-rc.com/transmex/
Je n'arrive simplement pas à afficher les pages filles du menu vertical de gauche.
Dans mon template, <?php echo $zite->levelMenu(1) ?> correspond au menu horizontal, donc le .zli1 dans mon css
<?php echo $zite->levelMenu(2) ?> affiche le menu horizontal (les pages zli2 dans mon css)
mais je voudrais aussi afficher les sous menus du menu vertiacl (ce qui devrait correspondre aux zli 3, zli4, etc....)
Voici mon templates :
<div id="global">
<div id="entete"><img src="deco/logo_transmex.gif" /><div id="admin"><?php echo $zite->levelMenu(4) ?></div>
</div>
<div id="centre">
<div id="menu_horizontal"><?php echo $zite->levelMenu(1) ?></div>
<div id="fil"><?php echo $zite->content['menu_title'] ?></div>
<div id="menu_secondaire"><?php echo $zite->levelMenu(2) ?></div>
<div id="principal"><?php echo $zite->content['main'] ?></div>
Le CSS correspondant :
/*menu horizontal*/
#menu_horizontal {
background:url(images/header.gif) repeat-x;
height:25px;
clear:both;
}
#menu_horizontal ul {
margin:0 0 0 50px;
padding:0;
}
#menu_horizontal ul li {
display:inline;
margin:0;
padding:0;
}
#menu_horizontal a {
display:block;
float:right;
margin-right: 10px;
text-decoration:none;
color: #aa2423;
font-size:9pt;
font-weight:bold;
padding:5px 8px 5px 8px;
border-left:1px dashed #cbc9c9;
margin-top:1px;
margin-bottom:5px;
}
#menu_horizontal a:hover {
color:#cbc9c9;
}
#menu_horizontal li.current a {
background:#fff;
color:black;
}
#menu_horizontal .zli1 {
display:block;
}
#menu_horizontal .zli2 {
display:none;
}
#menu_horizontal .zli3 {
display:none;
}
/* Menu secondaire - côté */
#menu_secondaire {
margin: 150px 0px 0px 50px;
width : 15%;
float:left;
height:auto;
padding: 0px 15px 0px 20px;
border-right: 2px solid #aa2423;
border-bottom: 2px solid #aa2423;
background-color:#F7F7F7;
}
#menu_secondaire ul {
list-style-type: circle;
}
#menu_secondaire ul li {
margin:0;
padding:0;
}
#menu_secondaire a {
text-align: left;
font:15px "Trebuchet MS", Arial, Helvetica, sans-serif;
font-weight:bolder;
font-variant:small-caps;
text-decoration: none;
color: #6d6d6f;
}
#menu_secondaire a:hover {
color: #afb0b2;
}
#menu_secondaire a#current{
background: transparent url(deco/list-active.gif) left no-repeat;
color: #666;
}
#menu_secondaire li.current a {
background:#fff;
color:black;
}
#menu_secondaire .zli1 {
display:none;
}
#menu_secondaire .zli2 {
display:block;
}
#menu_secondaire .zli3 {
display:none;
}
et le bout de cote créé par bvffalo73 rajouté dans le fichier zite.php
// Menus horizontaux et verticaux
function levelMenu($level = 1) {
$isadmin = (int)$_SESSION['zite_admin']>0;
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->base.$this->get_data('navig_admin') : '') : $this->base;
$out = '';
foreach ( $this->struct as $i => $s) {
if ($s[4] && $s[2]==$level) $out .= '<dl><dt><a href="'.$base.($rewrite ? $s[0].'.html':$i).'">'.$s[1].'</a></dt></dl>';
}
return $out;
}
Voila si quelqu'un peut me trouver une soluce, ce serait super !.. .d'avance merci, et promis je réponds très vite la prochaine fois !
Hors ligne
petit erratum :
Dans mon template, <?php echo $zite->levelMenu(1) ?> correspond au menu horizontal, donc le .zli1 dans mon css
<?php echo $zite->levelMenu(2) ?> affiche le menu VERTICAL (bien entendu) (les pages zli2 dans mon css)
Hors ligne
Voila un exemple pour vous expliquer mieux ce dont j'ai besoin :
http://www.dixit-rc.com/transmex/
Voila si quelqu'un peut me trouver une soluce, ce serait super !.. .d'avance merci, et promis je réponds très vite la prochaine fois !
Bonsoir,
désolé ... je n'ai pas la réponse à ta question
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMS
a+
Jean-Paul
Hors ligne
Bonsoir,
désolé ... je n'ai pas la réponse à ta question
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMSa+
Jean-Paul
Du coup, je vais pas trouver de réponse sur ce forum ?... c'est ça l'idée ?
Hors ligne
jpg a écrit :Bonsoir,
désolé ... je n'ai pas la réponse à ta question
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMSa+
Jean-PaulDu coup, je vais pas trouver de réponse sur ce forum ?... c'est ça l'idée ?
Pas du tout ...
d'autres ont surement la réponse ... c'est le principe du forum
... moi, c'était juste une remarque sur cette ligne de ton site Motorisé par Zite CMS
... il me semblait que tu utilisais ZitePLUS ... et donc que la ligne devrait être un truc du style
Site motorisé par ZITEPLUS 0.9.0 ou Site motorisé par ZITEPLUS 0.8.3
a+
Jean-Paul
Hors ligne
... moi, c'était juste une remarque sur cette ligne de ton site Motorisé par Zite CMS
... il me semblait que tu utilisais ZitePLUS ... et donc que la ligne devrait être un truc du style
Site motorisé par ZITEPLUS 0.9.0 ou Site motorisé par ZITEPLUS 0.8.3a+
Jean-Paul
Pas faux !...
merci de l'avoir noté !... le site n'étant pas encore fonctionnel je le noterai lors de la mise en ligne "officiel" !...
Merci
Aplus
Hors ligne
Bonjour,
je ne sais pas si vos avez trouvé une solution. Sinon essayez la fonction suivante :
function mlmenu ($l= '1 2 ') {
$t = explode(' ', preg_replace('/\s+/', ' ', $l));
$n = array();
foreach ($t as $k => $v) $n[$k] = preg_replace(array('/\d+\D+/','/\D+\d+/','/\D+/'),'',$v);
$n = array_unique($n);
$isadmin = (int)$_SESSION['zite_admin']>0;
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->base.$this->get_data('navig_admin') : '') : $this->base;
$out = '';
foreach ( $this->struct as $i => $s) if ($s[4] && in_array($s[2], $n)) $out .= '<li class="zli'.$s[2].'"><a href="'.$base.($rewrite ? $s[0].'.html':$i).'">'.$s[1].'</a></li>';
return $out;
}
Mettez la dans "zite.php" comme il faut - c'est à dire avant le } final .
Les niveaux du menu sont à fournir comme une chaine (entre deux guillemets), par exemple :
<?php echo $zite->mlmenu ('2 4'); ?>
qui va afficher les deux niveaux 2 et 4.
NOTE : j'ai utlisé une version ancienne de zite pour tester, il se peut que çà ne marche pas sur les nouvelles.
Dernière modification par bvffalo73 (03/07/2010 23:51:32)
Hors ligne
Alors d'abord un grand merci. Cela marche impeccablement bien !...
On peut afficher chaque niveau zli1 zli2 zli3 etc indépendamment l'un de l'autre donc même faire des pages web multi menu !.. .c'est très interessant
Par contre on perd le système d'ouverture et d'affichage des pages filles (de niveau 2 par exemple) au clic de la page mère référente !... chaque niveau est totalement indépendant l'un de l'autre et reste affiché en permanence. En gros les sous menus apparaissent en permanence.
Merci en tous cas pour ce script
Hors ligne
j'y avais pensé, et même pompé la fonction navbuilder() pour en faire une autre comme suivante :
function MultiNav($levels = '1 2 3') {
$dlevs = explode(' ', preg_replace('/\s+/', ' ', $levels));
$newle = array();
foreach($dlevs as $k => $v) { $newle[$k] = preg_replace(array('/\b\D*\d+\D+\b/','/\b\D+\d+\D*\b/','/\D+/'),'',$v); }
$newle = array_unique($newle);
$n = $this->truepage ? $this->truepage : 1;
$isadmin = (int)$_SESSION['zite_admin']>0;
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->base.$this->get_data('navig_admin') : '') : $this->base;
$max = count($this->struct);
$nav = '';
$s = $this->struct[$n];
$td = $s[2];
if (in_array($td, $newle)) {
if ($n==1) $nav = '<li class="zli1 zon"><a href="'.preg_replace('/\/[^\/]*$/','',$_SERVER['REQUEST_URI']).'/">'.$s[1].'</a></li>';
else if ($s[4] || $isadmin ) $nav = '<li class="zli'.$td.' zon"><a href="'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';
}
$this->parents[$s[0]] = $n;
if ($n>1) {
for ($i=$n-1; $i>0; $i--) {
$s = $this->struct[$i];
$d = $s[2];
if (in_array($d, $newle)) {
if ($i==1) {
$nav = '<li class="zli1"><a href="'.preg_replace('/\/[^\/]*$/','',$_SERVER['REQUEST_URI']).'/">'.$s[1].'</a></li>'.$nav;
} else {
if ($d<=$td && ($s[4] || $isadmin)) {
if ($d<$td) $this->parents[$s[0]] = $i;
$td = $d;
$f = $rewrite ? $s[0].'.html' : $i;
$nav = '<li class="zli'.$d.'"><a href="'.$base.$f.'">'.$s[1].'</a></li>'.$nav;
}
}
}
}
}
$td=$this->struct[$n+1][2];
for ($i=$n+1; $i<=$max; $i++) {
$s = $this->struct[$i];
$d = $s[2];
if ($d<=$td && ($s[4] || $isadmin) && in_array($d, $newle)) {
$td = $d;
$f = $rewrite ? $s[0].'.html' : $i;
$nav .= '<li class="zli'.$d.'"><a href="'.$base.$f.'">'.$s[1].'</a></li>';
}
}
return $nav;
}
Attention aux effets de bord, par exemple quand vous appelez à la fonction à partir d'un page level 3 avec la commande
<?php echo $zite->MultiNav('2 4'); ?>
Hors ligne
Hello !....
Bon et bien ça marche impecc !...
mais du coup je me retrouve avec un nouveau probleme :
- J'ai toutes mes pages de niveau 1 qui servent pour mon menu horizontal. impec.
- Et mes pages de niveau 2 et 4 (par exemple) qui servent de menu vertical avec ses sous menus (l'ensemble fonctionne bien)
Malheureusement, ce menu vertical ne s'affiche désormais que lorsqu'on clique sur sa page mère (de niveau 1 donc) dans le menu horizontal !..
Il faudrait qu'il soit totalement indépendant.
Genre par exemple : "en horizontal, je souhaiterai que s'affiche les pages de niveau 1. Sur mon menu de gauche les pages de niveau 2,3,4, et sur mon menu de droite les pages de niveau 5 et 6, et hop pour la forme je rajoute un petit menu en pied de page qui correspond au niveau 7 !.. "
Alors qu'effectivement pour le moment l'affichage du menu de niveau 2 est dépendant de sa page mère. L'affichage du menu niveau 5 et 6 dépend du "clic" sur la page mère de niveau 4, etc, etc....
Si tu avais une piste pour résoudre ça ce serait l'idéal on va dire, on pourrait faire du multi menu (comme pour la fonction levelMenu que tu avais créée mais avec le choix d'y incorporer des sous menus si nécessaire), mais j'imagine que ça doit être béton (j'avoue mon incompétence totale dans la création de script PHP) et ça m'épate!... J'imagine que c'est du tout ou rien : soit tous les niveaux sont indépendant entre eux, soient ils sont tous dépendants de leurs pages mères, et donc dans ce cas là la structure même de zite fait qu'on se retrouve avec le problème d'affichage que j'ai désormais.
Merci en tous cas pour tout ce travail !
Hors ligne