#jquery #prestashop #prestashop-1.7
#jquery #prestashop #prestashop-1.7
Вопрос:
Как можно записать фрагмент кода jQuery внутри tpl
файлов темы? Возможно ли это вообще?
В последнем из themeclassicChildmodulesps_customersigninps_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}
Ответ №1:
Это типичная ошибка, когда jQuery на данный момент еще не загружен, просто добавьте этот код $this->context->controller->addJquery();
в метод renderWidget
модуля /modules/ps_customersignin/ps_customersignin.php
, когда hookDisplayHeader`.
Пример конечного результата:
public function renderWidget($hookName, array $configuration)
{
if ($hookName == 'displayHeader' amp;amp; method_exists($this->context->controller, 'addJquery')) {
return $this->context->controller->addJquery();
}
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
return $this->fetch($this->templateFile);
}
После этого вам нужно будет прикрепить модуль к hook displayHeader в позициях модуля.
Комментарии:
1. Эта функция не действует в теме PrestaShop 1.7. jQuery2 регистрируется ядром в каждой теме. classes/controller/FrontController.php
public function addJquery($version = null, $folder = null, $minifier = true) { /* This is deprecated in PrestaShop 1.7 and has no effect in PrestaShop 1.7 theme. jQuery2 is register by the core on every theme. Have a look at the /themes/_core folder. */ }
2. Я добавил изменение в свой ответ, пожалуйста, попробуйте сейчас с этими изменениями и дайте мне знать. Не забудьте очистить кэш.
3. Я всегда очищаю кэш и включаю режим отладки. Я попробую это. Важным событием является то, что прошлой ночью фрагмент кода jquery сработал!!! .
jquery is not define
Все еще существуетon chrome console
, но jquery работает очень хорошо. Я не вношу никаких важных изменений!4.Я попробовал ваш новый код, не имеет никакого эффекта. сообщение
jquery is not define
все еще существует. Но, как я сказал в предыдущем комментарии,jquery code work
действительно, даже несмотря на то, чтоjquery is not define
отображается наchrome console developer tools
!!!
Ответ №2:
Это происходит из-за всех скриптов, включая core.js (который включает jquery) вызывается перед закрытием тела tad, и вы пытаетесь использовать его раньше. Итак, я думаю, что невозможно добавить ваш скрипт таким образом, и вам нужно переместить ваш код в класс module controller
Комментарии:
1. Спасибо, я верю, что это возможно. Просто я новичок в Prestashop и ищу правильный путь…