Extra Form
CMS XpressEngine

어제 관련 질문을 올렸는데 답변이 없어 다시 질문을 올립니다.

 

 

제가 이 질문을 하는 이유는 특정페이지(메인)에서 비로그인 대상자에게는 보여줄 필요가 없어 로그인 대상자에게만 보여주는 위젯 이 있습니다.

 

레이아웃에 넣지 않고 페이지에서 위젯을 직접 생성해서 넣다보니 로그인대상자에게 보여주는 조건을 걸 수가 없습니다.

그래서 이런 경우는 부득이하게 위젯스타일 쪽에 조건을 걸어서 비로그인 대상자에게는 보이지 않게 처리합니다.

 

궁금한건 이런 경우

위젯 스타일이 위젯 전체를 감싸게 되어 있고 위젯 스타일에 로그인 대상자에게만 허용한다는 조건으로 인해 안에 내용이 차단되는 형태인데 이때 순서가 

 

1. 위젯실행 -> 스타일실행 -> 스타일에 따라 출력 

2. 스타일실행 -> 스타일에 따라 출력 -> 위젯 실행되지 않음

 

전자의 경우인지 후자의 경우인지 궁금합니다.

 

전자의 경우라면 어차피 위젯은 모든 대상에게서 쿼리가 요청되므로 불편하더라도 레이아웃에 옮겨서 위젯코드 자체를 조건으로 차단해야 하는 것 같아서요. 조회가 굉장히 많은 페이지라면 불필요한 대상에게 실행을 줄여주면 좋을 것 같아서 입니다.

 

 

 

 

  • profile
    위젯이름.class.php 파일이었나 여기서 위젯 템플릿을 컴파일해주고 있습니다. 지금 하신 방법인 스킨쪽에서 조건을 걸어주는 것 말고 해당 php에서 위젯이 실행되기 전에 조건을 걸어주면 위젯이 템플릿을 컴파일하는 걸 막을 수 있을 것 같네요.

    위젯.php->위젯실행->스킨 및 템플릿 컴파일->출력
    여튼 이런구조로 동작합니다.

    굳이 따지자면 전자의 경우 같아 보이네요.
  • profile profile
    스킨이 아니고 그것을 통으로 감싸고 있는 스타일에서 조건을 건 경우입니다.
  • profile profile
    if($args->widgetstyle) $widget_content_body = $this->compileWidgetStyle($args->widgetstyle,$widget, $widget_content_body, $args, $javascript_mode);

    위젯 모듈 내에 위와 같은 코드가 있네요.

    위젯.php->위젯실행->스킨 컴파일->스타일 컴파일->출력 구조 인 것 같습니다.
  • profile profile
    위젯 실행 내용이 1+2 출력이라고 가정한다면

    위젯스타일 로그인대상
    위젯 실행결과 3
    위젯스타일 닫기

    이런 구조에서..

    1+2 의 연산과정은 거치고...

    최종 출력단계에서 이 연산결과 3을 가려주는 거라는거죠?
  • profile profile

    위젯스타일.html 에서는 위젯 출력 값을 변수로 받고 있습니다.
    따라서 1+2 연산을 안 하실려면 위젯에서 먼저 해당 조건을 확인해야 할 것 같습니다.
  • profile profile
    네. 그렇다면 위젯코드 자체를 조건으로 실행여부를 결정해주려면 레이아웃에 위젯코드를 넣고 실행하게 해야 하는데 스타일링에 애로사항이 생기겠네요.
  • profile profile
    레이아웃에 위젯코드를 넣더라도 스타일은 적용가능합니다.
    https://phiz.kr/tip/7136
  • profile profile

    가능하긴 할텐데 굉장히 많은 옵션이 들어가는 스타일이라.. 엄두가 안나네요 ㅡㅡ;

    - 스킨의 xml 에 것을 참조하면 되긴 하는군요...  ㅡㅡ;

  • profile profile
    페이지에 만들어서 db에 들어간 것을 어느정도 참조하면 좀 쉽게 가능할 것 같긴합니다.
  • profile profile
    skim.xml 만 참고 하셔도 충분 할 겁니다~~