无法在 PrestaShop 1.6 的脚本标签中添加数据属性

Posted

技术标签:

【中文标题】无法在 PrestaShop 1.6 的脚本标签中添加数据属性【英文标题】:Can not add data attributes in script tag in PrestaShop 1.6 【发布时间】:2017-04-02 03:52:23 【问题描述】:

我正在 PrestaShop 1.6 中开发自定义支付模块。我的前端控制器路径是:mymodule/controllers/front/payment.php

payment.php 包含:

 $this->context->smarty->assign(array( 
'dataCompleteURL' =>  Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__.'index.php?fc=module&module=mymodule&controller=callback&cart='.$cartID));
$this->setTemplate('payment.tpl');

我的模板文件路径是: mymodule/views/templates/front/payment.tpl

payment.tpl 包含:

<script src="http://easternbank.test.gateway.com/checkout.js" data-complete="$dataCompleteURL" type="text/javascript"> </script>

问题是在我的本地主机中它工作正常。我在脚本标签中获得了数据完整的 URL。但是当我在我的测试服务器中安装模块时,我没有得到数据完整的 URL。

任何帮助或建议将不胜感激。

提前致谢。

更新

我发现问题是脚本标签的“src”中的“https”。如果 src URL 以 https 开头,我不明白为什么数据完整会消失。没有https也没关系。

当我在浏览器中使用 src 中的 https 查看以下代码的源代码时,我得到:

<script src="http://easternbank.test.gateway.com/checkout.js" data-complete="$dataCompleteURL" type="text/javascript"> </script>

data-complete 属性消失。但是当我使用没有“https”的 src 查看脚本的源代码时,我得到了 data-complete 属性。

我找不到原因。

我可以使用以下方法在 payment.php 控制器中添加 javascript:

$this->context->controller->addJS(($this->_path).'js/checkout.js');

但是我不知道如何在addJS函数中传递数据属性。

【问题讨论】:

在 payment.tpl 中放置 $dataCompleteURL|var_dump 并检查结果。 我得到了 $dataCompleteURL 的值。请参阅更新 【参考方案1】:

我终于找到了解决方案。这对我来说似乎很奇怪。因为我在 prestashop 中只对 BO 做了如下改动:

去后台 进入高级参数 -> 性能 去CCC 禁用选项:将 JavaScript 移到末尾

就是这样。我的问题解决了。

顺便说一句,我从这个问题中学到了一些东西:我应该在 prestashop 后台尝试所有可能的配置选项。

我认为此选项不会导致此类问题。但它是。所以尝试所有可能的方法应该是解决问题的关键公式,尽管这似乎与所关注的问题上下文无关。

【讨论】:

以上是关于无法在 PrestaShop 1.6 的脚本标签中添加数据属性的主要内容,如果未能解决你的问题,请参考以下文章

将产品添加到 Prestashop 1.6 中特定商店的购物车(以编程方式)

Prestashop 1.6 如何在 Multistor 中允许缺货订单

如何在 prestashop 1.7 中向 cms 页面添加挂钩

如何在Prestashop中展示畅销产品?

根据 prestashop 中的模块状态禁用覆盖的 tpl 文件

PHP Prestashop 1.2.5产品标签