CMenu dropdown submenu [solução]

Testei várias extensões para menu dropdown e nenhuma funcionou como eu queria.

Encontrei este artigo : Creating a CSS Driven Drop Down Menu using CMenu

Me baseie nesse artigo (que não está funcionando com o menu gerado pelo webapp) e criei as regras necessárias para que o menu gerado pelo comando webapp possa ser expandido com novos itens e submenus em dropdown.

De forma simples para termos um menu dropdown, só é necessário inserir as seguintes regras css:




#mainmenu {

    height: 28px; /* need for eficient position*/

}

#mainmenu > ul > li {  

    overflow: visible;

    display: block; 

    float: left; 

}

#mainmenu > ul > li ul { 

    display: none;

    position: absolute;

    background: #FFF; 

    padding: 0;

    height: auto; 

}

/* drop down menu */

#mainmenu > ul > li > ul { 

    margin-top: 4px;

    

}

/* others sub menus */

#mainmenu > ul > li > ul li ul { 

    margin-top: -20px; /* align with parent*/

    left:99%;

    width: 100%;

}


#mainmenu ul li:hover > ul { 

    display: block; 

}

#mainmenu ul li ul li a{

    padding: 4px 14px; 

    background-color: #EFF4FA;

    color: #6399CD;

    text-decoration: none;

    display: block;

}

#mainmenu ul li ul li a:hover { 

    color: #fff; 

    background:#0066CC

}



Na minha aplicação esta inseri o conteúdo acima em um arquivo chamado menu.css e adicionei o link no layout.

Lembrando que para inserir submenus, é só utilizar o indice "items" no array passado para Cmenu:




	<div id="mainmenu">

		<?php 

            $this->widget('zii.widgets.CMenu',array(

                    'items'=>array(

                        array('label'=>'Home', 'url'=>array('/site/index')),

                        array('label'=>'Sub 1', 'url'=>array('/submenu/sub0'), 

                              'items'=>array(

                                     array('label'=>'Sub 1.1', 'url'=>array('/submenu/sub1')),

                                     array('label'=>'Sub 1.2', 'url'=>array('/submenu/sub2'),),

                                     array('label'=>'Sub 1.3','url'=>array('/submenu/sub3'),

                                           'items'=>array(

                                                    array('label'=>'Sub 1.3.1', 'url'=>array('/submenu/sub3/1')),

                                                    array('label'=>'Sub 1.3.2', 'url'=>array('/submenu/sub3/2'))

                                                )

                                            )

                                  )

                            ),

                        array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),

                        array('label'=>'Contact', 'url'=>array('/site/contact')),

                                                                                                                                                                        

                        array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),

                        array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)

			

		))); 

                ?>

	</div><!-- mainmenu -->



Thank you!

I solved it after much research into what I wanted so simple: get submenu in Cmenu with few modifications of the initial model of Yu.

I would only advise you to override the css based, registering a new css in main.php of views / layouts

I found http://www.yiiframework.com/forum/index.php/topic/23163-override-the-existing-css/ and simply add


Yii::app()->getClientScript()->registerCssFile('/testyii/css/altmen.css');

as the first line in div mainmenu, obviously copying your css into altmenu.css file.