addon.php

<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

if(!defined('__XE__'))
    exit();

//test
echo 'hello world';

 

오류내용

Screenshot_8.png

 

일반 사용자 보는 페이지에서는 안나오고요

관리페이지만 들어가면 아작스오류가 계속 뜨네요

 

모든 관리페이지에서 동일증상이고요

페이지 자체는 정상동작이 되나 방문자표는 출력이 안됩니다.

 

 

 

 

저는 페이지 맨위에 글씨만 출력하고싶을뿐인데 간단한게 왜안될까요

hello wolrd도 한번나오라고 썼지만 네번이나 중복 출력되고있습니다.

  • profile

    다른 건 잘 모르겠는데 네 번 나오는 건 애드온 호출시점($called_position) 구분을 안 해줘서 그런 걸 겁니다.
    애드온 호출 시점 총 4회 중 1회만 echo가 되도록 해야 해요.

  • profile profile
    해당함수에 필요한내용이 있네요
  • profile

    호출 시점이나 상황 상관없이 무조건 hello world를 출력하도록 구성하셨으니 당연히 오류가 발생할 수밖에 없습니다. 다른 애드온 소스코드를 보시고 어떻게 구성되어 있는지 분석하시는걸 먼저 하셔야 할것 같습니다.

  • profile profile
    애드온, 모듈 샘플중에 제일 기본적인게 어떤거 보는게 좋은가요
  • profile profile
    https://github.com/rhymix/rhymix/blob/master/addons/photoswipe/photoswipe.addon.php
    포토스와이프 애드온이 유저가 보는 화면에서만 실행되며 화면상 내용을 출력하는게 전부인 애드온중 하나입니다.

    코드를 잘 보시면
    if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" && Context::get('module') != 'admin' && !isCrawler())
    와 같은 if문을 확인하실수 있습니다.

    $called_position == 'after_module_proc' - called_position이라는 변수가 after_module_proc일때만 실행합니다. called_position에는 총 4가지 값이 올 수 있으며 자세한 내용은 https://conory.com/blog/14417 에 잘 정리되어 있습니다.

    Context::getResponseMethod() == "HTML" - exec_json으로 요청하는 경우 동작하지 않기 위해 들어있는 조건입니다.

    Context::get('module') != 'admin' - 관리자 화면에서 동작하는것을 막기 위해 들어있는 조건입니다.

    !isCrawler() - 네이버 봇, 구글 봇 등 검색봇 방문시 실행하지 않습니다.