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">×</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()
}
你觉得我还能做什么?
您应该在模块中创建一个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'))
,如果模块已安装,请重置或手动挂钩。
重点是,我不怎么把我的模态完全放在我想要的地方。这就是为什么我的模态不像一个模式。这只是一个文件夹。我特别修改了主题中的.tpls。 –
如果您有任何关于如何将我的模态添加到我想要的页面和exxactly的位置,您是我的客人。我知道如何创建一个模式,并“安装”它或“挂钩”它(左,上,右等等)。但我不知道要从.tpl主题中将其添加到我想要的元素中。我希望你明白我的意思, –
更确切地说,我想可以创建一个模式(这将有.tpls,控制器和东西),但我不认为它会可以去主题页面内没有对矫正。 tpls主题... –
@il_raffa!不需要编辑我的Ask。我定制了它。 :) –