2011-03-28 1 views
1

저는 프론트 엔드 웹 사이트와 CMS에 yii로 통합 할 두 개의 템플릿이 있습니다.Yii에서 메뉴의 "selected"링크 구현

  1. 내 프런트 엔드 웹 사이트 나 정전기 메뉴입니다 CMS (데이터베이스)

  2. CMS의 상단 메뉴에 의해 생성되는 상단 메뉴가 있습니다. ("페이지 관리", "사용자 관리", "제품 관리")이 메뉴는 정적이지만 여전히 적절한 최상위 메뉴 항목에 선택한 클래스를 지정하려고합니다.

예 : 사이트의 일부 페이지를 관리하고있는 경우 "멘지 페이지"링크를 강조 표시하고 선택해야합니다. 나는 이것에 대해 어떻게 갈 것인가? 내가 코딩 할 필요가 있거나 참조 할 필요가있는 기존 기능이 있습니까? 사전 YII 초보자에서

감사

+1

Yii의 CMenu 위젯을 보았습니까? http://www.yiiframework.com/doc/api/1.1/CMenu – Lari13

답변

1

내가 무엇을하는 것은 내 컨트롤러 (AdminController extends Controller) 클래스에서 여러 "메뉴"기능을 가지고있다. 각각은 CMenu에 필요한 배열을 만들고, 내가 함수에 전달한 것을 기반으로 활성 배열을 설정합니다. 예를 들어 : 그것은 컨트롤러 나 액션 또는 URL 요청과 같은뿐만 아니라 활성 적절한 메뉴 항목을 설정하는 곳

protected function getAdminMenu($activeTitle) { 
    return array(
    array('label'=>'Manage pages', 'url'=>array('/user/purchase'),'active'=>($activeTitle=='Manage pages')?true:false), 
    array('label'=>'Manage users', 'url'=>array('/user/index'),'active'=>($activeTitle=='Manage users')?true:false), 
); 
} 

이 작업을 수행 할 수 있습니다. 이것은 단지 예일뿐입니다. 당신이 public $menu=array();을 가지고

$this->menu=$this->getAdminMenu('Manage pages'); 

(이것은 가정 : 내가 함께 메뉴를 렌더링하려면 내보기에 그런

, "페이지 관리"활성, 내 컨트롤러 클래스에서 함수를 사용하여 내 레이아웃의 메뉴를 설정 .뿐만 아니라 당신의 컨트롤러에 선언하고, 이것이 어떻게 작동하는지 확인하기 위해 블로그의 예를 살펴 보겠습니다 :

$this->widget('zii.widgets.CMenu', array(
     'items'=>$this->menu, 
    )); 

를) 나는 이것이 당신에게 방향을 제공합니다 희망

을!

+1

''active '=> ($ activeTitle =='사용자 관리 ') 사실 : false', 왜''active'=> $ activeTitle == '사용자 관리'^^ – Lari13

+0

좋은 지적입니다. – thaddeusmt

+0

설명 주셔서 대단히 감사합니다 :) –

0

개체의 배경을 변경하여 강조 표시하는 CSS 클래스를 만듭니다.

다양한 페이지에 대한보기에서 메뉴 항목에 해당 특정 클래스가 있습니다.