글쓴사람 장호정
글쓴시간2025년 4월 8일 오후 2시 8분 57초
    제목템플릿 엔진 렌더링 질문
{alert} 라는 변수로 문구 하나를 잡아서 tpl 파일에 렌더링해서 보여주고 있는데
렌더링된 스트링에 # 혹은 & 가 들어가면 해당 문자뒤에 오는 문구가 짤려서 보이지 않는 현상이 있습니다. 이유가 있을까요?
관리자 장호정 선생님 안녕하세요

{alert} 가 뿌려줘야 하는 문자열이  asdfwerfsdf#&wpeo 라면
웹페이지 소스보기를 통해서 확인할 수 있습니다

소스보기에서 #& 이후가 잘렸다면 템플릿언더바 문제인데
그게 아니라면 다른 문제로 보입니다
25-04-08 15:27
관리자 생각해보니
# 혹은 & 이후를 자르라는 어떤 필터가 있을 수 있겠네요.
25-04-08 15:30
장호정 @관리자
만약에 템플릿 언더바 문제라고 하면 어떠한 이슈가 있을수있는지 정확히 알수 있나요?
25-04-08 20:50
관리자 주소창에 해당 웹페이지

view-source:https://장호정웹페이지  

해서 템플릿에 "안녕#하세요" 를 전달했는데 "#하세요" 가 짤리고
"안녕" 만 나와 있다면 템플릿언더바와 관련된 문제인데

템플릿언더바 자체가 그런 문제를 일으킬 일은 없고
사용자 플러그인 필터에 의한 결과일 수 있습니다

Template_\tpl_plugin 이 플러그인 함수를 만들어 넣는 위치이고
$prefilter 혹은 $postfilter 속성값에, 사용할 필터를 지정해서 쓰는 구조입니다
25-04-08 23:45
관리자 플러그인 문제일 가능성도 적어 보이고..
템플릿으로 변수 전달 과정 중간에
어떤 개발자 코드가 있을 거 같네요
25-04-08 23:51
장호정 네 댓글로 말씀주신대로 정확하게 안녕까지만 나옵니다. tpl_plugin 관해서는 크게 뭐 없구요 prefilter.parseMySyntax.php 라는 파일에 function parseMySyntax($source, $tpl)
{
    $map=array(
        '{include '=>'{#',
        '{loop '=>'{@',
        '{switch '=>'{?',
        '{case '=>'{:',
        '{if '=>'{?',
        '{elseIf '=>'{:',
        '{else '=>'{:',
        '{loopelse '=>'{:',
        '{endloop '=>'{/',
        '{endswitch '=>'{/',
        '{endif '=>'{/',
    );
    return strtr($source, $map); 라는 코드가 있는데 이게좀 의심이 가네요..
25-04-21 18:05
관리자 아직까지 해결이 안되었다니 제가 다 죄송한데

말씀하신 prefilter.parseMySyntax.php 는
이 문제에 전혀 관련 없습니다.

프리필터는 템플릿 코드->PHP 코드로 변환하기 전단계에 적용되고 (컴파일타임), 지금 문제는 템플릿 변수 전달과정(런타임)에 발생하는 문제에요.

그럴 수는 없으나 prefilter.parseMySyntax.php 관여했다 하더라도..
의심스러운 부분이 '{include '=>'{#', 같은데..  {include 라는 문자열을 {# 으로 바꾸라는 코드이고 #이후를 없애라는 코드가 아닙니다.
25-04-22 04:18
관리자 플러그인이 관여할 수 있다면 포스트필터이지 프리필터는 아닙니다.. 포스트필터는 출력결과가 다 만들어진 이후에 적용됩니다.
25-04-22 04:33
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com