Smarty глобальный URL-адрес вызова JQuery, но $ не определен - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над настраиваемой домашней страницей для моего сайта prestashop.

Я не использую макеты, потому что моя домашняя страница должна быть чистой, и мне не нужны такие вещи, как верхний и нижний колонтитулы, меню и т. Д.

Использование глобальных переменных smarty, Я называю свой jquery в теге <head> следующим образом:

<script src='{$urls.js_url}jquery.js'></script>

Когда я захожу на свою страницу в Интернете, URL-адрес правильный (mysite.com/mytheme/js/jquery.js) иесли я перейду к нему, то смогу увидеть файл jquery.

и перед закрывающим тегом <body> я вызываю свой «домашний пользовательский» файл js

<script src='{$urls.js_url}my_script.js'></script>

, которыйначните вот так

$(function).ready(function(){

Мой браузер выдает мне ошибку Uncaught ReferenceError: $ is not defined, что странно, поскольку Jquery загружается в самом начале.Я очень запутался

РЕДАКТИРОВАТЬ

Даже если я скопирую код jquery и вставлю его в тег <script> в <head>, я получил ошибку

1 Ответ

0 голосов
/ 25 марта 2019

Вот решение:

оно похоже на другие проблемы с конфликтами cms-> jquery, но оно заслуживает объяснения, так как ни один пост не описывает использование prestashop jQuery.noconflict () в среде Prestashop

Поскольку prestashop использует класс noConflict, вызываемый в /js/jquery/jquery.noConflict.php всякий раз, когда шаблон компилируется, переменные jquery отключаются (как $, так и jQuery)

Так что вы должны играть по правилам $. noConflict функция при попытке использовать jquery из пользовательского шаблона / темы

Если вы пытаетесь сделать пользовательскую функцию jquery, оберните ваш код в

(function($){
 // this place is safe to use $ outside the $.ready function
 $.fn.yourCustomFunction = function(){}
}

Если вы собираетесь кодировать какой-то Jquery, просто поместите переменную $ или jQuery в параметр функции $ .ready, например:

$(document).ready(function($){
   // $ is safe to use. if you prefere jQuery instead, replace the parameter '$'
} 
...