2017-10-19 8 views
0

사이드 바에 몇 개의 위젯이 있습니다. 위젯 중 일부가 내 페이지 중 일부에 표시되는 것을 원하지 않습니다.다른 모든 것을 제외하는 대신 하나의 위젯 포함

이 방법보다 더 간단하게 작성하는 방법을 모르겠습니까? 나는 많은 예외를 가지고있다. 그래서 이것을 쓰는 것은 선으로 가득 찬 책 일 것이다. "이 페이지에이 위젯 만 포함"대신 "이 위젯 만이 페이지에 포함"과 같이 간단하게 쓰려고합니다.

<%if(!(page.layout=="alpha" && (name=="w1" || name=="w2" || name=="links" || name=="w3")) && !(page.layout=="beta" && (name=="w400" || name=="w500" || name=="w600"))){ %>

그래서 질문은 보여줍니다 페이지 "알파"는 간단한 예제 만 widget895을하는 방법은?

+0

태그를 수정할 수 있습니까? EJS 태그 만 실제로이 질문과 관련있는 것처럼 보입니다. – skirtle

+0

@skirtle - 루프 완료에 관한 – raulbaros

답변

1

위젯에 대해 일종의 루프가 있다고 가정했는데 name은 해당 루프 내의 현재 위젯 이름에 해당합니다.

<% 
    var pageWidgets = { 
     alpha: ['widget895'], 
     beta: ['widget900', 'widget123'] 
    }; 

    var allowedWidgets = pageWidgets[page.layout]; 

    // Loop over the widgets and grab the name, I assume 
    // you're already doing something similar. 
    widgets.forEach(function(widget) { 
     var name = widget.name; 

     // This is the equivalent of the 'if' in your 
     // original code. Note that I've allowed all 
     // widgets by default. 
     if (!allowedWidgets || allowedWidgets.includes(name)) { 
      %> 
      ...widget rendering here... 
      <% 
     } 
    }); 
%> 
+0

완료 - 기본적으로 모든 위젯을 허용하는 것에 대해, 나는 이것을 이해하는 데 문제가 있습니다. "w-12"(3 개 중 "w43", "w89", "w75") 중 하나의 위젯이 "페이지 레이아웃 = 알파"로만 표시된다는 것을 보여 주실 수 있습니까? – raulbaros

+0

@raulbaros 나의 예제는 원래의 질문에서 무엇을해야 하는가 : 단지 페이지 레이아웃'alpha'를위한'widget895'를 보여줍니다. 'w-12'로 변경하면'widget895'를'w-12'로 변경해야합니다. 내가 '기본값으로'라고 말하면,'allowedWidgets'의 값은'unWithgets' 값이 될 것이므로,'! allowedWidgets' 체크는 모든 위젯을 허용 할 것입니다. 'if (allowedWidgets &&')로 바꾸면 기본적으로 위젯의 특정 배열을 기본값으로 설정할 수 있습니다. '<% %>'의 모든 내용은 특별한 EJS 구문이 아니라 단지 JavaScript 일 뿐이라는 것을 기억하십시오. – skirtle

+0

이제 얻었습니다. .. 고마워, 잘됐다! – raulbaros