Добавить удаленный JavaScript в prestashop 1.7

У меня следующая проблема с prestashop 1.7

  1. Я регистрирую статический JavaScript с помощью крючка actionFrontControllerSetMedia
  2. Я пытаюсь зарегистрировать динамический удаленно загруженный JavaScript тем же методом:
    • Конечно, это не работает как registerJavascript ожидает локальный путь.
    • Context->addJs() больше не работает для меня

Есть ли решение, как добавить JavaScript в документ?

1

Решение

Увидеть: https://github.com/PrestaShop/PrestaShop/pull/7022 (введено в 1.7.0.2)

$this->registerJavascript(
'remote-bootstrap',
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js',
['server' => 'remote', 'position' => 'head', 'priority' => 20]
);
1

Другие решения

Если вам нужно добавить JavaScript / CSS для всех страниц или для конкретной страницы, вы можете использовать theme.yml для его обновления.
например если вам нужно добавить следующие два внешних CSS на всех ваших страницах. Добавьте следующее в ваш theme.yml:

....
css:
all:
- id: fontawesome-css
path: https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css
media: all
priority: 200
inline: false
server: remote
- id: googlecss
path: https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,600,700,800
media: all
priority: 200
inline: false
server: remote
....
2

Добавьте следующий код в любой файл JS, он загрузит удаленный файл JS:

function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://my.remote.js';
document.body.appendChild(script);
}
0

Похоже, это было вновь введено в 1.7.0.2 https://github.com/PrestaShop/PrestaShop/pull/7022
Они будут использовать registerJavascript а также registerStylesheet вместо.

$this->registerJavascript('remote-bootstrap-head', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js', ['server' => 'remote', 'position' => 'head', 'priority' => 20]);
$this->registerJavascript('remote-bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js', ['server' => 'remote', 'position' => 'bottom', 'priority' => 20]);
$this->registerStylesheet('remote-bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css', ['server' => 'remote', 'priority' => 20]);
0
$this->context->controller->registerJavascript(
'remote-openpay-js',
'https://openpay.s3.amazonaws.com/openpay.v1.min.js',
['position' => 'bottom', 'server' => 'remote']
);
-1
По вопросам рекламы [email protected]