Prestashop 1.6.1.16 - 我的js文件被加载,但我的功能没有看到

问题描述:

我是Prestashop(1.6.1.16)中的新手。 我使用默认的prestashop主题(默认引导)。Prestashop 1.6.1.16 - 我的js文件被加载,但我的功能没有看到

我所做的:

我把内容/themes/default-bootstrap/product.tpl: 右后顶部的意见(那些关于许可证等):

<script type="text/javascript" src="modules/ask_bid/js/ask.js"> 
    </script> 
    <button onclick="take_asks({$product->id})">See asks</button> 
    <input type="hidden" id="product-id" value="{$product->id}" /> 
    <input type="hidden" id="customer-id" value="{$id_customer}" /> 

    <!-- Modal --> 
    <div id="modal" class="modal fade"> 
     <div class="modal-dialog"> 

      <!-- Modal content--> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data- 
        dismiss="modal">&times;</button> 
        <h4 class="modal-title">Modal Header</h4> 
       </div> 
       <div class="modal-body"> 
        <p>Some text in the modal.</p> 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" 
        data-dismiss="modal">Close</button> 
       </div> 
      </div> 

     </div> 
    </div> 

{$product->id}来自

/controllers/front/ProductController.php<br> 

{$id_customer}来自

/override/controllers/front/ProductController.php 

我创建/modules/ask_bid/js/ask.js这里我把一个内容:

function isJSON(data) { 
    var ret = true; 
    try { 
     JSON.parse(data); 
    }catch(e) { 
     ret = false; 
    } 
    return ret; 
} 


function take_asks (id_product) { 
    $.ajax({ 
     type: 'POST', 
     url: baseDir + 'modules/ask_bid/ajax.php', 
     data: 'method=take_asks&id_product='+id_product, 
     dataType: 'text', 
     success: function(json) { 
      if(isJSON(json)) { 
       var json = JSON.parse(json); 
       //alert("json: " + json[0].comment); 

      } 
     }, 
     error: function() { 
      alert("error"); 
     } 
    }); 
} 

也像显示一个 我的模式(不隐藏)的模式不采取行动,这是不正常的。 它是在按钮之后,而不是“在空中”(我希望你明白我的意思)。

而且我有JS错误:

/modules/ask_bid/js/ask.js被加载(我认为这也是在查阅─> F12 /网络),但take_asks()是没有看到。

我得到下一个控制台错误(当我按下 '取问' 按钮):

Uncaught ReferenceError: take_asks is not defined at HTMLButtonElement.onclick (index.php? id_product=6&controller=product&id_lang=1:413)

我试过

-I删除class_index.php
-I删除缓存(包括CTRL- F5)
-I试图从/override/controllers/front/ProductController.php

添加js文件,但不工作,我还没有得到错误:

public function setMedia() 
{ 
    $this->addJS('modules/ask_bid/js/ask.js'); 

    parent::setMedia(); 
} 

......或者......

function init() { 
    $this->context->controller->addJS('modules/ask_bid/js/ask.js'); 

    parent::init() 
} 

你觉得我还能做什么?

+0

@il_raffa!不需要编辑我的Ask。我定制了它。 :) –

您应该在模块中创建一个hookheader:

public function hookHeader($params) 
{ 
    $this->context->controller->addJS(($this->_path).'js/ask.js'); 
} 

只能在产品页面与添加:

public function hookHeader($params) 
{ 
    if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'product') 
      return; 
    $this->context->controller->addJS(($this->_path).'js/ask.js'); 
} 

和你的模块中安装钩子与

$this->registerHook('header')) 
到头

要将内容添加到产品页面而不更改主题tpls(如评论中所述),您可以将u选择“在产品说明下添加新块”的displayFooterProduct。

public function hookDisplayFooterProduct($params) 
{ 
    return "code you want to insert"; 
} 

这里面钩你可以访问以下参数: $ PARAMS =阵列( '产品'=>产品, '类'=>类别)

还有,记得把它挂与安装$this->registerHook('displayFooterProduct')),如果模块已安装,请重置或手动挂钩。

+0

重点是,我不怎么把我的模态完全放在我想要的地方。这就是为什么我的模态不像一个模式。这只是一个文件夹。我特别修改了主题中的.tpls。 –

+0

如果您有任何关于如何将我的模态添加到我想要的页面和exxactly的位置,您是我的客人。我知道如何创建一个模式,并“安装”它或“挂钩”它(左,上,右等等)。但我不知道要从.tpl主题中将其添加到我想要的元素中。我希望你明白我的意思, –

+0

更确切地说,我想可以创建一个模式(这将有.tpls,控制器和东西),但我不认为它会可以去主题页面内没有对矫正。 tpls主题... –