2017-03-29 2 views
0

저는 PrestaShop 모듈을 사용하고 있습니다. 이 모듈은 "hookDisplayAdminProductsExtra"라는 훅에 고정됩니다.PrestaShop, Smarty 템플릿에서 직접 tinymce를 사용하십시오.

라이브러리를 사용하여 TEXTAREA 필드 tinymce를 사용해야합니다. 컨트롤러가 아닌 Smarty에서 직접 텍스트 영역을 만들면됩니다. 어쩌면 jQuery 함수를 사용하거나 필드에 클래스를 추가 할까?

TPL 파일에 내 코드는 다음과 같습니다

{foreach $row_list as $row} 
    <textarea id="description_1" name="description_1" class="autoload_rte" aria-hidden="true"> 
     {$row['desc']} 
    </textarea> 
{/foreach} 

내 모듈 기능은 : autoload_rte은 "사용"입니다

$this->context->smarty->assign(
    array(
     'row_list' => $this->getField($id) 
    ) 
); 
return $this->display(__FILE__, 'admin-view.tpl'); 

답변

3

탭 정보는 PrestaShop 버전으로로드 할 때 사용 :

$(document).ready(function(){ 

    // Execute when tab Informations has finished loading 
    tabs_manager.onLoad('Informations', function(){ 
     tinySetup({ 
      editor_selector :"autoload_rte", 
      setup : function(ed) { 
       ed.on('init', function(ed) 
       { 
        if (typeof ProductMultishop.load_tinymce[ed.target.id] != 'undefined') 
        { 
         if (typeof ProductMultishop.load_tinymce[ed.target.id]) 
          tinyMCE.get(ed.target.id).hide(); 
         else 
          tinyMCE.get(ed.target.id).show(); 
        } 
       }); 

       ed.on('keydown', function(ed, e) { 
        tinyMCE.triggerSave(); 
        textarea = $('#'+tinymce.activeEditor.id); 
        var max = textarea.parent('div').find('span.counter').data('max'); 
        if (max != 'none') 
        { 
         count = tinyMCE.activeEditor.getBody().textContent.length; 
         rest = max - count; 
         if (rest < 0) 
          textarea.parent('div').find('span.counter').html('<span style="color:red;">Maximum '+ max +' characters : '+rest+'</span>'); 
         else 
          textarea.parent('div').find('span.counter').html(' '); 
        } 
       }); 
      } 
     }); 
    }); 

}); 

이 외에도 다른 탭도 정보 탭보다 나중에로드됩니다. 이 문제를 해결하려면 원하는 필드의 주석을 초기화해야합니다. 또 다른 선택 선택 (이 필요한하지 않도록주의를하지만, 100 % 이상은 현재의 사람과 혼란에 기회가 없다) 예를 들어, 클래스를 myTextArea, 다음 사용

<script>$(document).ready(function(){tinymce.init({mode : "textareas", editor_selector : "mytextarea", plugins: "textcolor paste code"});})</script> 

이 당신의 TPL에있을 수 있습니다. 테스트에서 플러그인 설정이 없으면 콘솔 로그에 오류가 있습니다. 그러나 원하는대로 설정을 조정할 수 있습니다.

관련 문제