Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

안녕하세요.

 

아래처럼 애드온을 만들었습니다.

 

<?php
if ( !defined('RX_VERSION') )
{
    return;
}

if($called_position == 'before_display_content' && Context::get('module') != 'admin' && !isCrawler())
{


echo 'hello world';

    Context::loadFile('/addons/js/new_icon.js');    
}

 

js파일을 잘불러오는것으로 봐서는 분명 애드온은 작동중인데

echo는 아무리해도 작동이 되지 않습니다.

디버그창에 에러도 떠있지 않구요.

 

혹시 원인이 있을까요?

echo 자체를 rxe에서 지원하지 않는 걸까요?

 

https://xe1.xpressengine.com/qna/18780163

  • profile

    before_display_content 시점이라면 화면에 출력할 내용이 이미 정해져서 $output에 담겨져 있는 상태입니다. 여기에 뭔가를 덧붙이고 싶다면 $output을 조작하면 됩니다. 그 밖의 조작은 허용되지 않습니다.

     

    물론 echo 후에 exit 해버리면 코어에서 손쓸 틈이 없기 때문에, 백지에 hello world만 출력되도록 할 수는 있습니다. 그러나 기본적으로 레이아웃이나 스킨을 통해 정식으로 출력되는 내용 외에는 모두 버려집니다.

     

    아무 데서나 echo하는 디버깅 방법은 링크하신 글이 작성된 2010년 기준으로도 구닥다리였고, 지금은 거의 해저유물 취급합니다. HTML이라면 화면 위에 지저분하게 글자가 붙을 뿐이겠지만, XML이나 JSON을 주고받는 요청에서 echo를 해버리면 디코딩 오류가 발생해서 해당 기능 자체가 먹통이 되기 때문입니다. 중간에 꼭 확인해야 할 내용이 있다면 디버그 패널을 켜놓고 debugPrint() 하세요.

  • profile profile
    근데 혹시 이번 패치 이후로 echo가 뜨는데 무언가 코어에서 변경되었을까요?
  • profile profile
    네, 특별한 부작용이 없는 HTML 모드에 한해서 그대로 보여주도록 바뀌었습니다.
    XML이나 JSON에서는 버립니다.
  • profile profile
    감사합니다.
    https://xetown.com/questions/1815622

    이게 레이아웃에서만 작동하고 애드온에서 작동안해서 포기했었는데 다시 시도 해봐야겠습니다.!