질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS Rhymix

추천버튼이 없는 자료가 있어서(포인트러쉬) 해당 모듈에만 애드온을 통해서 추천버튼을 노출하고 있었는데 라이믹스로 오니 작동을 안하네요. 스크립트 오류도 나는데 이게 템플릿 파일을 못불러온 상태에서 js가 로딩되어서 그런건지... 

 

라이믹스에 안맞는 문법이 있는지 궁금합니다.

 

 

            Context::set('var',$var);

            $oTemplate_ = &TemplateHandler::getInstance();
            $output_ = $oTemplate_->compile('./addons/addvote_ext/tpl','addvote');
            Context::addHtmlHeader(sprintf("<script type=\"text/javascript\"> var addon_addvote_var='%s';var addon_addvote_logged=%s;xe.lang.msg_not_logged='%s';</script>", trim($output_),(Context::get('logged_info')?'true':'false'), Context::getLang('msg_not_logged')));
            Context::addJsFile('./addons/addvote_ext/addvote.js');
            Context::addCSSFile('./addons/addvote_ext/tpl/addvote.css');

 

 

 

 

js

 

(function($){$(function(){ 
    var c=$('.xe_content[class*=document_]').eq(0);
    if(c.attr('class'))
    {
        var document_srl=c.attr('class').replace(/.*document_([0-9]+).*/,'$1');
        c.append(addon_addvote_var).find('.wgtRv.addon_addvote button').click(function(){
            if(addon_addvote_logged) {
                if($(this).is('.btn_move')){
                    location.href = request_uri + "index.php?act=dispBoardDocumentMoveTo&document_srl=" + document_srl;
                }else{
                    doCallModuleAction('document',
                    (($(this).is('.btn_voted'))?'procDocumentVoteUp':(($(this).is('.btn_blamed'))?'procDocumentVoteDown':'procDocumentDeclare')),
                    document_srl, (($(this).is('.btn_block'))?"block":""));
                }
            }else { alert(xe.lang.msg_not_logged); }
        return false;
        });
    }
}); })(jQuery);

 

 

  • profile
    doCallModuleAction 보단 요즘은 exec_json 을 더 밀고 있습니다.
  • profile

    어디에서 무슨 에러가 나나요?^^

  • profile profile
    템플릿이 404 인거 같구요.
    jquery 에러가 나요
  • profile profile
    Uncaught SyntaxError: Invalid or unexpected token

    위 에러가 가리키는 페이지 소스 라인 에 코드는 소스보기에서
    <script type="text/javascript"> var addon_addvote_var='<!-- Template start : /addons/addvote_ext/tpl/addvote.html -->

    이렇게 보이고 있구요.

    addvote.js?20140706185611:6 Uncaught ReferenceError: addon_addvote_var is not defined
    at HTMLDocument.<anonymous> (addvote.js?20140706185611:6)
    at i (jquery-2.2.4.min.js?20200710003045:2)
    at Object.fireWith [as resolveWith] (jquery-2.2.4.min.js?20200710003045:2)
    at Function.ready (jquery-2.2.4.min.js?20200710003045:2)
    at HTMLDocument.J (jquery-2.2.4.min.js?20200710003045:2)


    위와 같은 js 에러가 나는데요.

    6번째 라인은

    c.append(addon_addvote_var).find('.wgtRv.addon_addvote button').click(function(){

    이것 같기도 하구요.
  • profile profile
    Context::addHtmlHeader(sprintf("<script type=\"text/javascript\"> var addon_addvote_var='%s';var addon_addvote_logged=%s;xe.lang.msg_not_logged='%s';</script>", trim($output_),(Context::get('logged_info')?'true':'false'), Context::getLang('msg_not_logged')));

    이거 전체가 한 줄이죠?

    Context::addHtmlHeader(sprintf("<script type=\"text/javascript\"> var addon_addvote_var=%s;var addon_addvote_logged=%s;xe.lang.msg_not_logged='%s';</script>", json_encode(trim($output_)),(Context::get('logged_info')?'true':'false'), Context::getLang('msg_not_logged')));

    이렇게 바꿔보세요.
  • profile profile
    오! 살아났습니다. '' 요런 차이가 XE하고 라이믹스에서 결곽가 달라진요

    추천,신고버튼 코딩하기 싫어서 하기 싫었는데 덕분에 일 줄었습니다. ㅋ 감사합니다.
  • profile profile
    템플릿을 컴파일해서 그 결과물을 통째로 변수에 담는데 기본적인 특수문자 이스케이프 처리조차 하지 않는 자료가 잘못한 것이지요. 해당 자료는 템플릿 소스에 무엇이 들어가고 주변에 어떤 소스가 있는지에 따라 XE에서도 종종 오류가 발생합니다. XE인데도 위와 동일한 방식으로 패치하여 사용하는 사이트를 본 적이 있습니다.
  • profile profile
    저도 레이아웃에 마구잡이로 주석 <--div>여기 안에 또 박잡한 조건문등 주석이 또있고..</div--> 이런식으로 두었던데 라이믹스로 전환하고 주석이 무력화 되고 주석되었던것들 온갖 잡스러운 것들이 출력되는 바람에 어제 새뱍에 깜 놀하고 왜그러지... 하고 출력되는 놈들을 보니 제가 아주 오래전에 사용하다가 혹시 몰라 남겨 놓고 마구잡이 주석해 놓은 것들이었네요 ㅎ

    XE에서 대충 넘어가던데 라이믹스에서 안통하니 제대로 수정해야 하는 것들이 조금 있네요 ㅋ