2011-08-03 3 views
0

페이지에 표시되는 메뉴 레벨을 반환하는 함수를 작성하려고합니다 ... 템플릿의 < % if %> 문을 사용하는 순간에silverstripe 함수를 사용하여 메뉴 수준을 반환합니다.

한 페이지에 3 메뉴 레벨이있는 ​​경우 는
<div class="<% if Menu(1) %>navA<% end_if %> <% if Menu(2) %>navB<% end_if %> <% if Menu(3) %>navC<% end_if %>">...</div> 

어느, 내가 원하는 것은 즉, <div class="navC">

감사

현재 페이지에서 바로 낮은 수준 메뉴를 반환하는 함수입니다 <div class="navA navB navC">

반환다음 (테스트되지 않은)에 대한 16,

+1

일종의 알림을 보내면 질문을 포기하면 커뮤니티에서 향후 문제에 대한 답변을 줄 수 있습니다. a) 답을 수락해야하고, b) 주어진 해답이 문제를 해결하지 못하는 이유를 게시하거나 c) 자신이 찾은 해답을 게시하여 문제가 해결 될 수 있도록 표시해야합니다 (동일한 문제를 가진 사람이 여기에서 답을 찾으십시오). – schellmax

답변

0

무엇 :

<div class="<% if Menu(3) %>navC<% else_if Menu(2) %>navB<% else %>navA<% end_if %>">...</div>

당신은 논리 무거운 물건에 대한 컨트롤러에 일부 사용자 지정 코드를 사용하여 고려할 수 있습니다, 그러나 이것은 당신이 가야한다 ...

+0

그 점에 대해 감사드립니다.하지만 말이 맞습니다. 템플릿 대신 컨트롤러에이 작업을하기를 바랬습니다. 나는 이것에 도움이되는 어떤 문서도 찾을 수 없다. – JimmyJazz

+0

그런 경우 @ schellmax의 해결책을 사용하십시오.'$ this-> getMenu ($ level)'이 좋을 것입니다. IMHO 이것은 매우 프런트 엔드 전용이므로 템플릿 접근 방식을 고수 할 것입니다. 예를 들어 기계가 읽을 수있는 정보 표현을 제공하려면 XML 또는 JSON을 사용합니다. 아마도 클래스를 필요로하지 않을 것입니다 (스타일을 지정하기 위해 사용하고 싶다고 가정합니다). 그래서 저는 그것을 generic 템플릿이 아닌 특정 템플릿에 보관할 것입니다. 적어도 이런 종류의 문제에 대한 나의 접근 방식은 ... – xeraa

1

그게 가능합니다.

function LowestLevel() { 
    $i = 1; 
    while($this->getMenu($i)->count() > 0) $i++; 
    return 'level'.($i-1); 
} 

지금 당신과 같이 템플릿에서 호출 할 수 있습니다 : 그냥 Page_Controller 클래스에 다음을 추가

<div>lowest level: $LowestLevel</div> 

$ LowestLevel가 '레벨 1', '레벨 2'등을 인쇄 할

클래스 이름이 'navA', 'navB'와 같아야하는 경우를 대비하여 'level1'-> 'navA'와 같은 일치 항목을 지정해야합니다. 너무 힘들지 않아야합니다. 이것에 대한 도움이 필요합니다.

관련 문제