Связать внешний файл JS с Prestashop - PullRequest
0 голосов
/ 28 мая 2018

Я создаю пользовательский модуль в Prestashop 1.7, и я пробовал много решений, но ничего не решило мою проблему.

Я бы добавил внешний JS-файл в верхний или нижний колонтитул сайта, гдемодуль установлен (и только когда он установлен).

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

Я пытался использовать метод addJS() в displayHeader hook:

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');
}

IЯ провел много тестов, и была вызвана функция hookDisplayHeader(), но мой файл JS не отображается в <head> моей страницы.

Документация Prestashop ограничена, но после многих исследований яЯ думаю, что я могу использовать только метод addJS() с внутренними файлами JS.Я прав?

Как мне сделать, чтобы добавить внешний JS-файл в мой заголовок (или нижний колонтитул до </body>)?

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Этот метод 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();

0 голосов
/ 05 ноября 2018

Я могу использовать метод addJS () только для внутренних файлов JS.Я прав?

Да, в PrestaShop 1.7.

Просто для получения дополнительной информации. Вот подробная информация, как зарегистрировать JavaScript в бэк-офисе (на страницах администратора) .

0 голосов
/ 29 мая 2018

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;

Весь хук не будет вызван, если модуль отключен.

...