2017-11-22 16 views
0

OpenCart 3.x 용 모듈을 개발 중이며 $this->load->view() 메소드를 통해 웹 사이트 앞쪽에 일부 JavaScript 코드를 삽입하려고합니다. JS 코드가 DOM에 나타나지 않기 때문에 작동하도록하십시오.

/catalog/controller/extension/module/mymodule.php

class ControllerExtensionModuleMyModule extends Controller { 

    public function index() { 

     $this->load->language('extension/module/mymodule'); 

     $this->load->model('checkout/order'); 
     $this->load->model('setting/setting'); 
     $this->load->model('design/layout'); 
     $this->load->model('catalog/category'); 
     $this->load->model('catalog/manufacturer'); 
     $this->load->model('catalog/product'); 
     $this->load->model('catalog/information'); 

     $data['js_output'] = "Some JS output"; 

     return $this->load->view('extension/module/mymodule', $data); 
    } 
} 

카탈로그 /보기/테마/기본/템플릿/확장/모듈 : 여기

내 코드의 발췌입니다 /mymodule.twig

<script type="text/javascript"> 
console.log('This is working!"); 
</script> 

내가 누락 된 것이 있습니까?

$this->document->addScript('catalog/view/javascript/my-external-script.js'); 

을하지만 자바 스크립트 코드 블록 인 경우에, 당신은 단지 나뭇 가지 (보기 파일에 추가하거나, 컨트롤러 파일을 편집 할 필요가 없습니다 :

답변

0

같은 컨트롤러를 통해 자바 스크립트 파일을 외부 추가 tpl) :

<script type="text/javascript"> 
    console.log("This is working!"); 
</script> 

마지막으로 캐시 (vqmod, ocmod, twig 등)를 지울 필요가 있습니다. 당신이 컨트롤러에 자바 스크립트 코드를 준비하려면

편집

이를 수행

컨트롤러

$data['js_output'] = 
'<script type="text/javascript"> 
    console.log("This is working!"); 
</script>'; 

나뭇 가지

{{ js_output }} 
+0

정확히 내가 게시 한 내용입니다. JS를 .twig 파일에 추가했는데 작동하지 않습니다. –

+0

코드에서'addScript'를 볼 수 없습니다. 또한 캐시를 비우셨습니까? – DigitCart

+0

예, 캐시를 모두 지 웠습니다. 또한, 내 경우에는'addScript' 메쏘드가 작동하지 않을 것이므로 나를위한 옵션은 아닙니다. –

0

마침내 문제가 해결되었습니다. install() 메서드가 디자인/레이아웃을 올바르게 삽입하고로드하지 못하는 문제가 있습니다 ($this->model_design_layout->getLayouts()).

모듈이 layout_module 테이블에 레이아웃을 삽입 할 필요가있는 경우, 올바른 layout_id, code (수 있어야 모듈 이름)를 가지고 있는지 확인, position (예 : 'content_bottom')와 sort_order (종종입니다 > 90).