Extra Form
PHP PHP 8.0
CMS Rhymix 2.x

라이믹스 최신버전 사용중입니다.

 

위젯으로 구성된 위젯페이지가 있는데요, 해당 위젯 페이지에서 특정 위젯에

 

템플릿 문법

<!--@if(조건문)--->

을 적용하고 싶습니다.

 

layout.html 에 직접 위젯 코드를 삽입하는 경우에는 방법이 있는것 같은데, 위젯을 페이지에 직접 삽입시에는 방법이 있을까요?

  • profile
    질문이 애매합니다.

    위젯을 통째로 조건을 걸건지
    맞다면 위젯 스타일에서 조건을 거는 것으로 응용을 해야 합니다.

    오래전에 고민해서 질문도 해보고 내린 결론입니다.

    컴파일? 순서를 고려하면 위젯 스타일을 만들고 스타일에 조건을 걸면 레이아웃에서 조건을 건 거랑 같은 효과를 낼 수 있습니다.
  • profile profile
    현재 위젯이 있고, 위젯 스타일을 통해 위젯을 메인화면에 배치해 놓았는데요

    해당 위젯을 포함하여 겉 껍데기(위젯 스타일) 자체가 노출이 되지 않는 방법이 있나 해서 질문글을 올리게 되었습니다!
  • profile profile

    그 위젯 스타일의 템플릿을 수정하세요. 거기를 조건을 걸면 걸린다는 것입니다.

    저희 메인에 꾸며진 위젯에 통일된 위젯 스타일을 사용해서 완성했습니다.

     

    그런데 추가적으로 로그인 회원에 맞춤된 글 목록을 출력하려고 똑같은 위젯을 수정해서 회원번호에 해당하는 맞춤목록을 출력하게 했습니다.

    용도 자체가 회원 전용이기에 비회원에게 작동하지 않게 하는 방법 중 하나를 위젯 스타일을 수정해서 로그인대상으로 조건을 걸었습니다.

     

    단, 이렇게 조건을 추가한 위젯 스타일을 따로 업로드해서 걸고 싶은 위젯에만 위젯스타일로 사용하고 나머지 옵션은 그대로 이용하면 됩니다.

     

    이렇게 했는데 위젯스타일이나 위젯의 엘리먼트가 가진 요소(빈 껍데기) 때문에 약간의 줄간격이 생긴다거나 이런건 레이아웃 css에서 처리하시면 됩니다.

  • profile profile
    아하!
    그러니까 조건문을 적용할 위젯스타일 / 그냥 원본 우젯스타일 이렇게 나누어서 새로 업로드하고

    조건문을 적용할 위젯스타일 html을 편집해서, 해당 위젯에 적용하라는 의미이시군요!

    감사합니다~
  • profile profile

    네. 조건 자체를 다르게 변수를 입력받아 다양하게 할수도 있지만 그냥 로그인전용,비로그인전용, 회원그룹 등등으로 필요할때 수정해서 업로드해서 사용하는게 그냥 편하고 해서 그렇게 합니다. (위젯스타일 이름을 수정해서 올리시면 상황에 따라 고를때 편합니다.)

    일전에 조건을 거는 위젯스타일이 배포된적 있습니다. 디자인은 없고 조건만 거는... 그런데 저는 디자인을 원래 쓰던 것을 이용하려고 주력으로 사용하는 위젯 스타일을 수정한거죠.

  • profile

    한가지 추가로 말씀드리면 이러한 작동에 관해 궁금해서 질문을 했던 적이 있고 그때 결론이 제 기억으로는
    조건을 건다고 해당 위젯 실행이 아예 안되는건 아니고 똑같이 작동을 한다고 들었습니다.

    위젯 스타일에서
    {$widget_content}

    이렇게 위젯의 실행된 결과물을 출력하는데
    순서가 위젯은 이미 실행이 되어 있고 이것을 어떤 모습으로 출력할 지 위젯 스타일에서 꾸밈 정도를 하는건데 거기에 외곽에 비로그인에게는 보이지 않는 조건이 걸려 있다면 비로그인에게는 아무것도 보이지 않는 것이라고 했던 것 같습니다.

    컴파일 순서가 그렇다고 한것 같습니다.


    만약 아예 실행도 되지 않게 하고 싶다면
    레이아웃에서 위젯코드 입력 설정하는 것을 하나 만든다음

    원하는 위젯 코드를 입력하고


    레이아웃에 출력하고 싶은 mid 와 대상등을 조건을 건 다음 입력한 코드가 담긴 곳의 코드를 불러오면 됩니다. (단, 이 경우는 위젯 스타일을 적용할 수가 없어서 위젯 스타일이 필요 없는 경우에 적합합니다. 저희는 똑같은 것을 모바일에서는 위젯 스타일 자체가 레이아웃에서 꾸며주는 방식이라 모바일에서는 이렇게 처리했습니다.)

    위젯스타일 수동으로 사용하려는 모든 변수 다 코드에 넣으면 되긴 합니다만........

     

     

    레이아웃 수정하는 것을 전혀 하지 않고 한다면 그냥 레이아웃에 조건을 걸고 그 조건 안에 위젯코드 자체를 하드코딩으로 넣으면 되겠죠.

  • profile profile
    답변 감사합니다!
    그런데 제가 위젯스타일을 적용한 것이 아니라, 그냥 위젯 자체를 사용중에 있는걸 확인했습니다 ㅠㅠ

    위에서 답볌주실때 위젯스타일을 통해 적용/위젯 자체에 적용 방법이 다르다고 말씀주셨는데요
    혹시 위젯 자체에는 어떻게 적용을 할 수 있을까요?
  • profile profile
    위젯 자체에는 적용을 할 수 없습니다. 할수 없다기 보다는 캐시 때문에 문제가 됩니다. 캐시를 사용하지 않으실 거라면 가능합니다. 캐시 0

    위젯의 스킨에서도 조건은 다 먹습니다. 다만 캐싱을 하게 되면 누군가에 의해 변경이되는 쿼리 결과라면 특정인에 의해 만들어진 결과가 캐시 만료시 까지 계속 보여집니다. 대상이 바뀌었는데도 말이죠.

    더미용 위젯스타일을 쓰시던지
    아니면 위젯 스킨에 조건을 거시고 캐시를 이용하지 않던지

    아니면 레이아웃에 그냥 코딩을 하시던지..

    방법은 굉장히 많습니다.
  • profile profile
    감사합니다!!
  • ?

    <!--@if($wi->group_view == 'Y')-->
    <!-- 그룹적용 -->
    <!--@if($is_logged)-->
    <!--@if($wi->permission)-->
    <include target="tables.html" />
    <!--@end-->
    <!--@end-->
    <!--@else-->
    <!-- 그룹적용안함 / 포인트 레벨 적용 -->
    {@ $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); }
    <!--@if($point < "{$wi->point_p}" || $level < "{$wi->level_p}" )--><!--@else-->
    <include target="tables.html" />
    <!--@end-->
    <!--@end-->

    이런씩으로 조건문을 걸고 tables.html에 위젯의 내용을 넣으면 됩니다.
    조건문이랑 설정은 만들어야겠죠.