PDA

View Full Version : منو CMenu (حل شد)



Tarragon
جمعه 11 بهمن 1392, 19:35 عصر
با سلام
من یه قالب دانلود کردم دارم اونو واسه yii بازسازی می کنم.
قسمت منو به مشکل خوردم.
من می خوام کد پایین رو کاری کنم که مثل مثال پایی تری بشه :
$this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'صفحه اصلی', 'url'=>array('/site/index')),
array('label'=>'درباره ما', 'url'=>array('/site/page', 'view'=>'about')),
array('label'=>'تماس با ما', 'url'=>array('/site/contact')),
array('label'=>'ثبت نام', 'url'=>array('/User/register'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'ورود', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'بروزرسانی پروفایل', 'url'=>array('/user/update'), 'visible'=>!Yii::app()->user->isGuest),
array('label'=>'خروج ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
),
));
اینم مثال خود قالب :
<ul class="dropdown clearfix boxed">
<li class="menu-level-0"><a href="#"><i class="icon-menu"></i><span>check in</span><sup class="note">3</sup></a></li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu2"></i><span>events</span></a> </li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu3"></i><span>account</span></a>
<ul class="submenu-1">
<li class="menu-level-1"><a href="#">Web design</a></li>
<li class="menu-level-1"><a href="#">User interface</a></li>
<li class="menu-level-1"><a href="#">Social media</a>
<ul class="submenu-2">
<li class="menu-level-2"><a href="#">Gallery images</a></li>
<li class="menu-level-2"><a href="#">Fine Slider</a></li>
<li class="menu-level-2"><a href="#">Video in header</a></li>
<li class="menu-level-2"><a href="#">Video Slider</a>
<ul class="submenu-3">
<li class="menu-level-3"><a href="#">Item 1</a></li>
<li class="menu-level-3"><a href="#">Item 2</a></li>
<li class="menu-level-3"><a href="#">Item 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu4"></i><span>settings</span></a></li>
</ul>

SlowCode
جمعه 11 بهمن 1392, 21:28 عصر
سلام
واسه ایجاد زیر منو باید یه آرایه یه پارامتر items هر منو بدی. مثلا:


$this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'menu', 'url'=>array('#'),'items'=>array(
array('label'=>'sub menu 1', 'url'=>array('#')),
array('label'=>'sub menu 2', 'url'=>array('#')),
array('label'=>'sub menu 3', 'url'=>array('#')),
)),
),
));

shpegah
شنبه 12 بهمن 1392, 08:01 صبح
سلام
واسه ایجاد زیر منو باید یه آرایه یه پارامتر items هر منو بدی. مثلا:


$this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'menu', 'url'=>array('#'),'items'=>array(
array('label'=>'sub menu 1', 'url'=>array('#')),
array('label'=>'sub menu 2', 'url'=>array('#')),
array('label'=>'sub menu 3', 'url'=>array('#')),
)),
),
));

متاسفانه در ویجت CMenu این مشکل وجود داره که ساب منو ها در زیر منوی خودش قرار نمیگیرد ودر ضمن هیدن نیستند



[/PHP]
اینم مثال خود قالب :
<ul class="dropdown clearfix boxed">
<li class="menu-level-0"><a href="#"><i class="icon-menu"></i><span>check in</span><sup class="note">3</sup></a></li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu2"></i><span>events</span></a> </li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu3"></i><span>account</span></a>
<ul class="submenu-1">
<li class="menu-level-1"><a href="#">Web design</a></li>
<li class="menu-level-1"><a href="#">User interface</a></li>
<li class="menu-level-1"><a href="#">Social media</a>
<ul class="submenu-2">
<li class="menu-level-2"><a href="#">Gallery images</a></li>
<li class="menu-level-2"><a href="#">Fine Slider</a></li>
<li class="menu-level-2"><a href="#">Video in header</a></li>
<li class="menu-level-2"><a href="#">Video Slider</a>
<ul class="submenu-3">
<li class="menu-level-3"><a href="#">Item 1</a></li>
<li class="menu-level-3"><a href="#">Item 2</a></li>
<li class="menu-level-3"><a href="#">Item 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="menu-level-0"><a href="#"><i class="icon-menu icon-menu4"></i><span>settings</span></a></li>
</ul>
البته چون شما از قالب دیگه ای میخواهید استفاده کنید قطعا از یک css دیگه استفاده میکنیدولی در این مثال شما از کلاس های ناشناخته مثل menu-level استفاده شده که CMenu اونها رونمیشناسه
به نظر من دو راه رسید:
1-از ویجت MbMenu استفاده کنید که در سایت ییی موجود هست استفاده کنید که متاسفانه رایت تو لفت برای فارسی نمیشود
2- css خودتونو تغییر بدهید واز هیچ کلاسی در آن استفاده نکنیدکه من اینکارو کردم منتها یک مشکل کوچک داشتم که نمیدونم چطور رفعش کنم واون اینکه چون فقط خواستم از css بدون کلاس وبدون jqueryاستفاده کنم نتونستم رنگ منوی بالای ساب منو که در واقع منوی انتخاب شده است را تغییر بدم از این کد استفاده کردم افاقه نکرد

#mainmenu ul li ul li:hover:parent:parent a
{
background-color:red;
}

MMSHFE
شنبه 12 بهمن 1392, 11:22 صبح
چرا اینقدر ویجت CMenu رو دست کم میگیرین؟


$this->widget('zii.widgets.CMenu',array(
'encodeLabel'=>false,
'htmlOptions'=>array(
'class'=>'dropdown clearfix boxed',
),
'id'=>'menu',
'items'=>array(
array(
'itemOptions'=>array(
'class'=>'menu-level-0',
),
'label'=>'<i class="icon-menu"></i><span>check in</span><sup class="note">3</sup>',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-0',
),
'label'=>'<i class="icon-menu icon-menu2"></i><span>events</span>',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-0',
),
'label'=>'<i class="icon-menu icon-menu3"></i><span>account</span>',
'url'=>array('#'),
'submenuOptions'=>array(
'class'=>'submenu-1'
),
'items'=>array(
array(
'itemOptions'=>array(
'class'=>'menu-level-1',
),
'label'=>'Web design',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-1',
),
'label'=>'User interface',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-1',
),
'label'=>'Social media',
'url'=>array('#'),
'submenuOptions'=>array(
'class'=>'submenu-2',
),
'items'=>array(
array(
'itemOptions'=>array(
'class'=>'menu-level-2',
),
'label'=>'Gallery images',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-2',
),
'label'=>'Fine Slider',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-2',
),
'label'=>'Video in header',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-2',
),
'label'=>'Video Slider',
'url'=>array('#'),
'submenuOptions'=>array(
'class'=>'submenu-3',
),
'items'=>array(
array(
'itemOptions'=>array(
'class'=>'menu-level-3',
),
'label'=>'Item 1',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-3',
),
'label'=>'Item 2',
'url'=>array('#'),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-3',
),
'label'=>'Item 3',
'url'=>array('#'),
),
),
),
),
),
),
),
array(
'itemOptions'=>array(
'class'=>'menu-level-0',
),
'label'=>'<i class="icon-menu icon-menu4"></i><span>settings</span>',
'url'=>array('#'),
),
),
));

MMSHFE
شنبه 12 بهمن 1392, 11:25 صبح
من زیاد باهاش کار نکرده بودم چون بیشتر منوها رو با کامپوننتهای شخصی خودم برای هر پروژه میسازم ولی کنجکاو شدم ببینم مشکل شما رو واقعاً نمیشه با CMenu حل کرد؟ بخاطر همین مستنداتش رو خوندم و راه حل رو پیدا کردم. باز هم تأکید میکنم با مطالعه Reference فوق العاده خوب Yii میتونید همه کاری انجام بدین: لینک (http://www.yiiframework.com/doc/api/1.1/CMenu)

SlowCode
شنبه 12 بهمن 1392, 13:01 عصر
متاسفانه در ویجت CMenu این مشکل وجود داره که ساب منو ها در زیر منوی خودش قرار نمیگیرد ودر ضمن هیدن نیستند
من الان توی پروژم از Cmenu استفاده میکنم و مشکلی ندارم. فقط css مورد نیاز رو خودم نوشتم.
همونطور که آقای شهرکی اشاره کردن باید کلاس مورد نظر رو توسط htmlOptions یا itemOptions یا linkOptions بهش بدی.
linkOptions : برای تگ a هست برای مواقعی که بخوایین به تگ a داخل li یه استایلی بدین, یا مثلا id یا property دیگه ای بدین.
itemOptions : برای تگ li هست.
htmlOptions : برای خود منو که دارای li های مختلف هست.