2016-11-23 16 views
1

Я имею следующий вопрос с PrestaShop 1,7Добавить удаленный Javascript для Prestashop 1.7

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

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

+0

же проблема с addCSS; ( – katopz

+0

, как вы видите, мой недавно отмеченный ответ, есть надежда :) 1.7.0.2 действительно поддерживает его! – jPO

ответ

0

См: 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] 
); 
+0

Человек, ты мой герой! Никогда не думал об открытии собственного запроса на тягу :) спасибо! – jPO

0

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

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

На самом деле это не то решение, которое я искал (поскольку я надеялся на какой-то собственный метод ps), но это решило бы мои проблемы, и пока я могу его использовать. Спасибо! – jPO

0

Кажись, как это был повторно введен в . 1.7.0.2https://github.com/PrestaShop/PrestaShop/pull/7022 Они будут использовать регистр Javascript и 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]); 
-1
$this->context->controller->registerJavascript(
    'remote-openpay-js', 
    'https://openpay.s3.amazonaws.com/openpay.v1.min.js', 
    ['position' => 'bottom', 'server' => 'remote'] 
); 
0

В случае, если вам нужно добавить 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 
.... 
Смежные вопросы