<?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 기능만 딱 작동하는 애드온을 끄면 정상작동합니다.

 

감사합니다.

  • profile

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

     

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

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

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

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

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

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

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

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

     

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

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

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

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

    감사합니다.