 |
 |
 |
 |
 |
 |
글쓴사람 | 장호정 |
글쓴시간 | 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 |
 |
|
 |
 |
 |
 |
|