질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS Rhymix

로그인 상태에서는 동작하지 않고, 로그아웃 상태에서만 동작하길래

 

캡처.PNG

위와 같이 addon.php 파일의 일부 조건만 주석 처리하니까 로그아웃, 로그인 상태에서 모두 동작합니다

called_position !== 'before_display_content' 조건이 어떤 조건이길래 로그인 상태에서만 동작하지 않았던 것일까요?

  • profile

    해당 부분 삭제하시면 애드온이 반복적으로 실행될 리스크가 있을 거예요. 물론 return 넘겨주는 다른 조건들이 있긴 하지만요. 리소스 낭비 가능성이 있는 거죠;;;;

    제작자분이 호출시점을 그렇게 잡은 건 나름의 이유가 있어서일 텐데요. 다른 애드온 등 충돌 가능성이 서드파티 자료들을 하나씩 꺼보시면서 점검하시는 게 좋을 것 같아요.

  • profile
    called_position !== 'before_display_content'
    called_position : 불러오는 위치가
    !== : 뒷 부분과 같지 않을 때
    before_display_content : 본문을 불러오기 전에(아마도, 정확한 것은 xe 문서를 봐야 합니다.)

    조합하면 불러오는 위치가 본문을 불러오기 전이 아니면 동작한다 입니다.
    뒤쪽에 || 는 OR 입니다. 또는 이죠.

    불러오는 위치가 본문을 불러오기 전이 아니거나
    HTML이 아니거나
    목록을 볼수 있는 권한이 없거나
    등등등

    수학시간에 배운 교집합은 and이고
    합집합은 or인거에요.
  • profile

    before_display_content - 결과 출력 이전 : 모듈의 결과물과 레이아웃의 적용을 끝내고 출력하기 바로 이전을 의미합니다.

    라고 되어 있네요

    http://www.xeschool.com/xe/addons_the_basis_of_addon

     

    != 을 안쓰고 !== 를 왜 썻는지 모르겠네요.

    뜻은

    $a !== $b    Not identical    $a가 $b와 같지 않거나, 같은 자료형이 아니면 TRUE. (PHP 4에서 추가)

  • profile profile

    $called_position과 'before_display_content'는 모두 문자열이기 때문에 !== 로 비교하는 것이 옳습니다.
    != 는 1, '1', true를 모두 똑같이 취급하기 때문에 숫자나 참/거짓 값을 비교할 때나 쓰는 거고요.

     

    물론 이 경우에는 != 나 !== 나 동일한 효과입니다만, 문자열은 !== 로 비교하는 습관을 들이는 것이 좋아요^^

  • profile profile
    그렇군요 참고하겠습니다 ㅎㅎ