Prestashop 1.7-模板文件中的jQuery代码片段(未定义jQuery)

时间:2019-03-28 15:28:58

标签: jquery prestashop prestashop-1.7

如何在主题tpl文件中编写摘要jQuery代码?有可能吗?

theme\classicChild\modules\ps_customersignin\ps_customersignin.tpl的最后一个中,我使用了jQuery代码,但是在chrome console中,我收到了(jQuery is not defined)消息:

{literal}
<script type="text/javascript">

        jQuery(document).ready(function($){
            alert('x');
        });


</script>
{/literal}

编辑: 还可以在jQuery代码前使用 displayBeforeBodyClosingTag 钩子,但不起作用。

{hook h='displayBeforeBodyClosingTag'}

{literal}
<script type="text/javascript">

        jQuery(document).ready(function($){
            alert('x');
        });


</script>
{/literal}

2 个答案:

答案 0 :(得分:1)

当jQuery尚未加载时,这是一个典型错误,只需在hookDisplayHeader`时在模块$this->context->controller->addJquery();的方法renderWidget的方法/modules/ps_customersignin/ps_customersignin.php中添加此代码public function renderWidget($hookName, array $configuration) { if ($hookName == 'displayHeader' && method_exists($this->context->controller, 'addJquery')) { return $this->context->controller->addJquery(); } $this->smarty->assign($this->getWidgetVariables($hookName, $configuration)); return $this->fetch($this->templateFile); }

最终结果示例:

FindControls

此后,您需要将模块连接到模块位置的钩子displayHeader上。

答案 1 :(得分:1)

之所以发生这种情况,是因为在正文关闭tad之前调用了包括core.js(其中包括jquery)在内的所有脚本,而您尝试更早使用它。因此,我认为不可能以这种方式添加脚本,而需要将代码移至模块控制器类