繁体   English   中英

将外部 JS 文件链接到 Prestashop

[英]Link external JS file to Prestashop

我正在 Prestashop 1.7 中创建一个自定义模块,我尝试了很多解决方案,但没有解决我的问题。

我会在安装模块的网站的页眉或页脚中添加一个外部 JS 文件(并且仅在安装时添加)。

<script src="https://cdn.monurl.com/file.js"></script> // JS file to include

我尝试在displayHeader钩子中使用addJS()方法:

public function hookDisplayHeader($params)
{
    if (!$this->active)
        return;

    $this->context->controller->addJS('https://cdn.monurl.com/file.js');
}

public function install()
{
    return parent::install() && $this->registerHook('displayHeader');
}

我做了很多测试,调用了hookDisplayHeader()函数,但是我的JS文件没有出现在我页面的<head>中。

Prestashop 的文档是有限的,但经过多次研究,我认为我只能将addJS()方法与内部 JS 文件一起使用。 我对吗?

我应该如何将外部 JS 文件添加到我的页眉(或</body>之前的页脚)?

addJS()函数在 PrestaShop 1.7 中已弃用。 您现在必须使用registerJavascript()

    $this->context->controller->registerJavascript(
        'monurl', // Unique ID
        'https://cdn.monurl.com/file.js', // JS path
        array('server' => 'remote', 'position' => 'bottom', 'priority' => 150) // Arguments
    );

你不能忘记这里的重要参数是'server' => 'remote'加载外部 JS 文件。

您可以在文档中找到有关此功能的更多信息: https : //developers.prestashop.com/themes/assets/index.html

再想想你的代码,你不必把:

if (!$this->active)
    return;

如果模块被禁用,则不会调用整个钩子。

此方法addJs对于 Prestashop 1.7* 已过时。

$this->context->controller->registerJavascript('cdn', 'https://cdn.monurl.com/file.js', array('media' => 'all', 'priority' => 10, 'inline' => true, 'server' => 'remote'));

其中第一个参数是一个新脚本的标识符,以避免下一次包含它,如果它被包含一次,第二个参数是媒体文件的路径,最后一个参数是一个包含有关新媒体文件的额外信息的数组,其中参数 'server ' 指出文件在远程服务器上。 顺便说一下,css 文件现在包含相同的方法$this->context->controller->registerStylesheet();

在 PrestaShop 1.7 的前台页面中,您需要使用另一种方法来添加外部 JS 文件: registerJavascript 但是对于后台页面,您可以照常进行。

因此,例如,要将 JavaScript 文件https://ajax.googleapis.com网站添加到前台页面,您需要使用带有选项'server' => 'remote'的新方法registerJavascript

$this->context->controller->registerJavascript(
    'three.js',
    'https://ajax.googleapis.com/ajax/libs/threejs/r84/three.min.js',
    ['position' => 'bottom', 'priority' => 100, 'server' => 'remote']
);

要添加 CSS 文件,您可以使用 FrontController 的另一个新方法: registerStylesheet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM