Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 09/06/2010 15:27:15

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

M%enus horizontaux ET verticaux (suite)

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

#2 10/06/2010 15:54:51

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

Pas d'idées ?...

Hors ligne

#3 10/06/2010 22:15:14

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : M%enus horizontaux ET verticaux (suite)

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

#4 14/06/2010 16:06:12

Stefpei
Membre
Lieu : Nantes
Inscription : 12/06/2009
Messages : 354
Site Web

Re : M%enus horizontaux ET verticaux (suite)

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

#5 28/06/2010 18:02:00

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

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

#6 28/06/2010 18:04:09

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

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

#7 28/06/2010 21:18:18

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : M%enus horizontaux ET verticaux (suite)

berticoyote a écrit :

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 roll
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMS wink

a+
Jean-Paul

Hors ligne

#8 29/06/2010 15:25:21

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

jpg a écrit :

Bonsoir,
désolé ... je n'ai pas la réponse à ta question roll
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMS wink

a+
Jean-Paul

Du coup, je vais pas trouver de réponse sur ce forum ?... c'est ça l'idée ? sad

Hors ligne

#9 29/06/2010 16:47:35

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : M%enus horizontaux ET verticaux (suite)

berticoyote a écrit :
jpg a écrit :

Bonsoir,
désolé ... je n'ai pas la réponse à ta question roll
C'est juste pour dire que ton site m'a plutôt l'air d'être motorisé par ZitePLUS que par ZiteCMS wink

a+
Jean-Paul

Du coup, je vais pas trouver de réponse sur ce forum ?... c'est ça l'idée ? sad

Pas du tout ...
d'autres ont surement la réponse ... c'est le principe du forum wink
... 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

#10 29/06/2010 16:58:08

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

jpg a écrit :

... 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

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

#11 03/07/2010 15:07:01

bvffalo73
Membre
Inscription : 16/02/2007
Messages : 56

Re : M%enus horizontaux ET verticaux (suite)

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 big_smile.
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

#12 05/07/2010 14:33:41

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

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

#13 08/07/2010 17:50:29

bvffalo73
Membre
Inscription : 16/02/2007
Messages : 56

Re : M%enus horizontaux ET verticaux (suite)

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

#14 09/07/2010 09:49:14

berticoyote
Membre
Inscription : 15/09/2009
Messages : 175

Re : M%enus horizontaux ET verticaux (suite)

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

Pied de page des forums