2012-07-05 6 views
1

나는 유식이있는 경우 :Lite 버전의 유식 문은 다음과 같은 경우 문은

<{if $page->getURLName() eq 'big-issues' or $page->getURLName() eq 'polls' or $page->getURLName() eq 'what-we-do' or $action eq 'events' or $action eq 'blogs' or $action eq 'news'}> 

나는 템플릿에 같은 문장을 여러 시간을 비교해야합니다. 그리고이 진술을 여러 번 반복하는 것은 정말로 지루합니다. 나는 내가 문을 캐시하고 그것을 여러 번 재사용 할 수 있습니다 알고 있지만 이런 일을 수행하기 위해 가능하면 내가 찾고 있던 : 우리가 할 수있는 PHP에서 같은

<{if $page->getURLName() eq 'big-issues' or 'polls' or 'what-we-do' or 'events' or $action eq 'blogs' or 'news'}> 

을 :

$url = array ("big-issues","polls","what-we-do"); 
$needle = $page->getURLName(); 
if(in_array($needle, $centered)) { 
    //Do something 
} 

는 I 유의하시기 바랍니다 템플릿에 대한 PHP 코드에 액세스 할 필요가 없으므로 smarty 만 사용할 수 있습니다. 모든 제안은 매우 감사하겠습니다.

건배.

답변

2

사실이 내가 생각 해낸 해결책은 .

참고 : 내 템플릿에서는 {{}> 대신 {012}{{>}을 사용하여 멋지게 시작해야합니다. 그 템플릿이 어떻게 설정되는지.

 <{$urlName = ['big-issues','polls','what-we-do']}> 
     <{$actionType = ['news','blogs','events']}> 

     <{foreach item="url" from=$urlName}> 
      <{if $page->getURLName() eq $url}> 
       <{assign var=showBlock value=1}> 
      <{/if}> 
     <{/foreach}> 

     <{foreach item="act" from=$actionType}> 
      <{if $action eq $act}> 
       <{assign var=showBlock value=1}> 
      <{/if}> 
     <{/foreach}> 

내 HTML에서 코드를 엉망으로 만들지 않고 여러 번 확인할 수 있습니다.

<{if $showblock}> 
    <div class="block"> 
<{else}> 
    <{div class="regular"}> 
<{/if}> 
0

확인이 : http://www.smarty.net/forums/viewtopic.php?p=48466

그리고이 템플릿 내에서 배열에 할당을 위해이 같은 How to assign an array within a smarty template file?

될해야 뭔가 :

{assign var='pages' value=','|explode:"big-issues,polls,what-we-do,events"} 
{assign var='actions' value=','|explode:"blogs,news"} 

{if in_array($page->getURLName(), $pages) or in_array($action, $actions)} 
do something 
{/if} 
+0

도움을 주셔서 감사합니다. 그러나 이것은 나의 질문에 답하지 않고 논평 일 수있었습니다. – Subash

+0

하지만 수표를 빨리 줄이려고 했습니까? "페이지"와 "작업"을 한 번 할당 한 다음 "if"문을 짧게 사용하십시오 – bksi

+0

편집을 보지 못했습니다. 나는 그것이 어떻게되는지 알리려고 노력할 것이다. 건배. – Subash