Ошибка jQuery is not defined в MODX miniShop2: причины и исправление
При установке компонента miniShop2 в MODX Revolution (версия 2.8.7) пользователи часто сталкиваются с ошибкой в консоли браузера: Uncaught ReferenceError: jQuery is not defined. Эта ошибка приводит к тому, что скрипты магазина - например, всплывающие уведомления (jGrowl) или корзина - не работают корректно. В статье мы подробно разберём, почему возникает проблема и как её устранить.
Почему возникает ошибка jQuery is not defined?
Ошибка означает, что библиотека jQuery не загружена на странице до того, как выполняются скрипты miniShop2. Обычно это происходит по нескольким причинам:
- jQuery отключена в системных настройках MODX или не подключена в шаблоне.
- Конфликт с другими компонентами или кастомными скриптами, которые переопределяют или удаляют jQuery.
- Неверный порядок подключения скриптов: jQuery должна быть загружена раньше, чем
default.jsиmessage_settings.js. - Использование стороннего шаблона, в котором отсутствует вызов
или.
Как исправить ошибку в MODX Revolution?
1. Проверьте системные настройки
Перейдите в Система → Настройки. Найдите параметр use_jquery (в группе miniShop2 или pdoTools). Убедитесь, что он установлен в Да. Если параметр отсутствует - создайте его с ключом use_jquery и значением 1.
2. Подключите jQuery в шаблоне
Откройте шаблон вашего сайта (например, через меню Элементы → Шаблоны). Вставьте следующий код перед закрывающим тегом или в самом начале секции :
Если вы используете pdoTools или Fenom, можно также добавить вызов чанка: {{$jquery}}.
3. Проверьте порядок подключения скриптов
Убедитесь, что jQuery подключается раньше, чем скрипты miniShop2. В файле assets/minishop2/js/web/default.js (строка 651) и assets/components/minishop2/js/web/message_settings.js (строка 1) требуется уже инициализированный jQuery. Если библиотека загружается после этих файлов - возникнет ошибка.
4. Отключите кеширование и проверьте консоль
После внесения изменений очистите кеш MODX (Система → Очистить кеш) и обновите страницу с открытой консолью браузера (F12 → Console). Если jQuery определена - ошибка Uncaught ReferenceError: jQuery is not defined исчезнет, а следом за ней и Uncaught ReferenceError: miniShop2 is not defined.
Дополнительные рекомендации
- Используйте последнюю версию miniShop2, совместимую с вашей версией MODX Revolution (2.8.x).
- Проверьте, не блокирует ли jQuery какой-либо плагин безопасности (например, Content Security Policy).
- Если ошибка остаётся - временно отключите другие компоненты, чтобы исключить конфликт.
Следуя этим шагам, вы сможете убрать ошибки в консоли и полноценно запустить интернет-магазин на базе miniShop2.