템플릿 안에서 Context::getAddHtmlHeader()를 사용하려고 해요.


그런데 <style> body { } </sytle> 처럼 대괄호 가 들어가면 템플릿 오류가 납니다.


물론 include해서 php로 처리 하면 가능한데


템플릿 상에서 대괄호가 있어도 처리 가능하게 하는 방법이 있을까요??

  • profile
    <?php
    Context::getAddHtmlHeader();
    ?>

    이렇게 쓰면 안되나요?
  • profile profile
    @하늘희
    답변 고마워요~
    집에 가서 한번 해볼게요. ^^
  • profile profile

    제가 알기론 바로 php쏴도 될 거에요 ㅎㅎ 저렇게 구현한 적이 있어서

     

    다만 실행 시점은 템플릿보다 더 빠르게 실행될 겁니다.

     

    근데 그냥 헤더에 추가하는 거니 순서는 상관이 없죠..흐흐

    때론 템플릿 문법 쓰는 것보다 그냥 php를 쓰는 게 나을 때가 많더라구요.

    무엇보다 {} 이걸 못쓰니...

  • profile profile
    @하늘희

    말씀대로 이렇게 해서 됐습니다. 고마워요~

    <?php
    Context::addHtmlHeader("<style>
    .xe_content,
    .fr-view
    {
    font-family: ".stripcslashes($__Context->content_font)." !important;
    font-size: $__Context->content_font_size !important;
    }
    </style>");
    ?>

    근데 좀 지저분해 보여서 그냥 php를 만들어야겠네요. ㅠㅠ
  • profile profile
    흐흐흣
  • profile
    {/**/ } 처럼 사용하시면 됩니다.
  • profile profile
    오- 그러고보니 전에 어디서 본 기억이..
    한번 시도해볼게오 +_+ ㄱㅅ!
  • profile profile
    오오오?!
  • profile profile
    그대로 시도해봤는데 안되더라고요. ㅠㅠ

    {@
    Context::addHtmlHeader('<style> .xe_content {/**/ } </style>');
    }

    제가 방법을 다르게 한건가요?
  • profile profile

    {@ ~~ } 안에서는 안됩니다. 닫는 중괄호가 나오자마자 {@ } 문의 끝으로 인식해 버려서...

    그냥 <style> .xe_content {/**/ } </style> 만 써보세요.

  • profile profile
    그렇게 하면 제가 하려는 Context::addHtmlHeader()를 어떻게 사용해볼 수 있죠?
    지금 그게 문제라서요 ㅠㅠ

    아이패드로 잘 못 눌러서 비추 버튼을 눌러버렸네요 ㅋㅋ 물릴수도 없고... 실수에요 ㅠ
  • profile profile
    추가할 CSS 내용을 변수에 미리 담아뒀다가 쓰면 안될까요?
  • profile profile
    따로 php파일을 생성하신뒤
    {@
    include(_XE_PATH_ . '생성한 php 파일 경로/생성한 php 파일.php');
    }
    이렇게 해보세요. php 파일 안에서 변수등을 사용하시려면 $__Context->변수명 처럼 사용하셔야 합니다.
  • profile profile
    어디다가요?
    일단 php로 빼내면 쉽게 됩니다. 저는 그냥 템플릿 안에서 규칙을 활용한 방법을 찾고 있는거라서요...
    캐시가 { 시작하면 반드시 다음 }를 찾고 그걸 <? ?> 로 치완하는 방식이라 템플릿안에서 변수를 담을때도 결국 {}로 감싸야할텐데 결과는 같을 거라고 봐요.
  • profile profile
    음... 이 글 젤 처음에 인쿠르드하면 문제없다는걸 말했었는데 ㅠㅠ
    그리고 php안에서 Context::get('content_font'); 으로 가져올 수 있어요.
  • profile profile
    그렇네요.. 어쨌건 {@ } 내부에서 {}를 사용하는 것은 불가능합니다.
  • profile profile

    아님 그냥 { 중괄호 } 문자만 16진수로 인코딩해서

    Context::addHtmlHeader("<style> .xe_content \x7B /**/ \x7D </style>");

    이렇게 해도 될 것 같네요. 쌍따옴표 문자열에서는 저렇게 쓸 수 있으니까요.

  • profile profile
    어제 해봤습니다. ㅋㅋ
    적용됩니다.

    하지만 돌아가지 않습니다.

    그렇다면 종료 } 만 유니코드로 한다면?

    ㅋㅋ 그 뒤 선언 되는 애들은 선언되지 않습니다.
  • profile profile
    쩝... 그것도 안되나요 ㅠㅠ

    온갖 이상한거 다 시도해 보세요. htmlentities_decode라든지... hex2bin이라든지...
    적어도 하나쯤은 템플릿 핸들러가 해석하지 못하고 포기하는 게 있지 않을까요? ㅋㅋ

    원래 이런건 \백슬래시로 escape할 수 있어야 하는데 말이죠.
  • profile profile
    위에 @하늘희 님께서 주신 힌트로 일단 파일 안에서는 해결했습니다만, 규칙을 지키고 안된다는 @YJSoft 님의 의견이 있으니 종전에 제가 하던데로 php로 클래스 만들어서 함수 호출하는걸로 하려합니다. ^^
  • profile profile
    너무 템플릿에 연연할 필요 없습니다.!!

    저도 처음엔 템플릿 문법으로 했지만, 하다보니 {} 이것 때문에 노답이더군요..

    그래서 지금은 php와 적절히 처리합니다...ㅋㅋㅋ

    아예 리스트를 php로 할 때도 있어요..z
  • profile profile
    답변 감사합니다.

    이 답을 원했어요. Great! :p
  • profile profile
    제 성격일지도 모르지만 저는 되도록 규칙대로 최대한 활용하고자 하는 습관이 있습니다.
    그래야 차후에 호환성에서 문제가 되지 않기 때문이죠. 그렇기 때문에 규칙으로 가능한 기능을 필사적으로 찾은거였죠.
    이렇게 하나하나 확실하게 알아둬야 나중에 설계할때도 이런 시행착오가 없다고 생각하니까요.

    그게 없다면 다른 대안으로 진행해야하고 그것은 매우 쉽죠.

    오늘 요고 해보면서 또 여러개 배웠네요. @하늘희 님도 수고하셨습니다. ;)
  • profile profile
    php 문법으로 쓰는 것 자체로는 추후 호환성 문제는 딱히 발생하지 않을 겁니다.
    php 버전 업데이트로 인한 사라진 문법이 아닌 이상;;; 저도 최대한 규칙을 지키려 했지만.. 템플릿이 좀 문제가 있어요..ㅠ