Q&A

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4
문제 페이지 주소 비공개 (작성 후 5일 경과)

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

 


echo 'hello world';

    
}

 

이런 아주 간단한 애드온을 삽입하면

 

아무리 찾아봐도 원인을 알수 없지만 <i class=""></i> 가붙은 아이콘들이 천장에 달라붙어버리는 증상이 생겨버립니다.

심미적으로 크리티컬한 데미지를 입혀서 애드온의 사용을 일시중지한 상태인데요.

 

캡처.PNG

 

폰트 어썸 및 XE Icon 모두 증상이 발현되고

 

이걸 해결하려고하면 

 

폰트어썸 및 XE ICON의 메인 css 에서 

line-height: 1;

를 제거해줘야하는데요

 

이건 폰트어썸 및 xe icon을 임의로 조절하는거라 비정상적인 방법같구요

 

원초적인 원인을 제거 하고싶은데요 원인을 알 수 있을까요?

 

물론 저 echo hello world 기능만 딱 작동하는 애드온을 끄면 정상작동합니다.

 

감사합니다.

톰캣 Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.

댓글 6

  • 예전부터 허용되던 것을 잠시 막았다가 되살린 것뿐이니, 이상한 내용을 출력하는 애드온을 고치는 것이 가장 "원초적인" 해결책이겠죠. 중간에 echo하는 것은 어디까지나 애드온 제작자의 디버깅 편의를 위한 땜빵이지, 실서버에서 화면에 뭔가를 출력하는 데 사용할 일은 없는 기능이니까요.

     

    <!DOCTYPE>보다 위에 이상한 내용이 붙으면 대부분의 브라우저들은 "아 이거 웹표준과는 무관한 쌍팔년도식 html이구나!"라고 판단하고 평소와는 다른 방식으로 CSS를 해석하게 됩니다. 추억의 IE6 체험 모드라고나 할까요? ㅎㅎ 그래서 단지 그 내용이 붙는 것 외에도 여기저기 이상하게 렌더링될 수 있어요.

  • @기진곰
    앗 근데 어떻게 처리된건지 실제로 렌더링된 값을 보면 <body 안으로 잘들어가있긴한것같아서요

    echo 'link2.inner_HTML += "' . str_replace('"', '\\"', $new_food_2) . '";';

    이런식으로 작동하는 애드온인데 결국은 저 echo가 문제가 되는것이 겠네요.

    어찌되었건 php에서 우선적으로 작동하는것이니 <!DOCTYPE> 보다 위에서 구동 될 수 밖에 없는거구요.

    추억의 IE6 체험
    이건 다시 떠올리기도 싫네요 당시에 익스플로러 6 7 8 9 호환되게 만든다고 진짜 골머리 엄청 앓았던 기억이 있네요
  • @기진곰
    다시 잘살펴보니 body가 먼저나오고 그다음에 head 등이 나오네요.
  • @기진곰
    역시나
    db 쿼리로 뭔가를 읽어와서 화면에 뿌려주는 내용을 리플레이스 해주려면
    모듈이 필요하다는 말씀이시죠?
  • @톰캣

    애드온이든 모듈이든 상관없이 모든 echo는 디버깅용으로나 쓰라고 허용하는 것입니다.

    실제 서비스에서 사용하면 당연히 부작용이 발생합니다.

     

    애드온은 페이지 내용 중간에 나오는 내용을 치환하거나, 중간에 뭘 끼워넣는 것만 해야 합니다.

    그냥 echo하면 실행 시점에 따라 엉뚱한 곳에 붙어 버리지요.

  • @기진곰
    "애드온은 페이지 내용 중간에 나오는 내용을 치환하거나, 중간에 뭘 끼워넣는 것만 해야 합니다."

    이부분이 레이아웃의 텍스트에도 해당이 되겠죠?
    java 말고 php로 뭔가 텍스트를 변환하는 부분을 만들어봐야할것 같네요.

    감사합니다.