Prestashop 1.7 - фрагмент кода jQuery внутри файлов шаблонов (jQuery не определен) - PullRequest
0 голосов
/ 28 марта 2019

Как написать фрагмент кода jQuery в файлах темы tpl?Это возможно?

В последнем из 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}

Редактировать: также используйте displayBeforeBodyClosingTag Крюк перед кодом jquery, но не работает.

{hook h='displayBeforeBodyClosingTag'}

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

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


</script>
{/literal}

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Это происходит из-за того, что все скрипты, включая core.js (который включает в себя jquery), вызываются до закрытия тела, и вы пытаетесь использовать его раньше.Поэтому я думаю, что невозможно добавить ваш скрипт таким образом, и вам нужно переместить ваш код в класс контроллера модуля

1 голос
/ 28 марта 2019

Это типичная ошибка, когда jQuery на тот момент еще не был загружен, просто добавьте этот код $this->context->controller->addJquery(); в метод renderWidget модуля /modules/ps_customersignin/ps_customersignin.php когда hookDisplayHeader`.

Пример окончательного результата:

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

После этого вам необходимо прикрепить модуль к крюку displayHeader в положениях модуля.

...