Я знаю, как использовать require-config.js
в пользовательских темах, но я хотел бы использовать пользовательский файл JavaScript ( myfile.js
) на всех страницах. В какой каталог мне добавить require-config.js
и как его использовать, чтобы он работал как надо?
Пожалуйста, не ссылайтесь на официальную страницу Magento.
magento2
javascript
requirejs
Anitr
источник
источник
Ответы:
requirejs-config.js
использует для создания отображения ресурсов JavaScript . Мы можем найти все требуют конфиги в:pub/static/_requirejs
.Насколько я знаю, правильный способ загрузки нашего собственного скрипта через Require Js: использование шаблона для вызова нашего скрипта . Мы создадим новый шаблон с
Magento\Framework\View\Element\Template
его классом блока.Если мы хотим загрузить js-файлы на всех страницах и не хотим создавать новый модуль, наш блок должен ссылаться на модуль Magento Theme
before.body.end
илиafter.body.start container
внутри негоdefault.xml
.приложение / дизайн / интерфейс / Vendor / Тема / Magento_Theme / макет / default.xml
приложение / дизайн / интерфейс / Vendor / Тема / requirejs-config.js
приложение / дизайн / интерфейс / Vendor / Тема / Magento_Theme / веб / JS / customscript.js
Наш шаблон будет вызывать наш скрипт: app / design / frontend / Vendor / Theme / Magento_Theme / templates / custom_js.phtml
Очистите Magento Cache и запустите статическое развертывание контента:
php bin/magento setup:static-content:deploy
источник
\app\design\frontend\Enim\blank\Magento_CatalogWidget\templates\product\widget\content\grid.phtml
включаю свой скрипт , но у меня есть requirejs-config.js и скрипт в папке Theme (app / design / frontend / Vendor / Theme / requirejs-config.js). Это нормально? Проблема в том, что я вызываю свой сценарий из разных мест.templates\product\widget\content\grid.phtml
вызове шаблона .custom_js.phtml
рассматривается как обычный обратный вызов, выполняемый после выполнения кода, содержащегося вcustomscript.js
? Или мне нужно выполнить код, объявленныйcustomscript.js
внутри функции вcustom_js.phtml
?after.body.start
должны измениться наbefore.body.end
?Файл Requirejs-config: app / code / Vendor / Module / view / frontend / requirejs-config.js
Ваш файл js должен находиться в: app / code / Vendor / Module / view / frontend / web / js / myfile.js
Теперь вы можете использовать в любом месте вашего файла шаблона следующим способом:
источник
Есть более легкая версия с использованием
deps
. Зависимости в requirejs-config.js загрузят ваш файл при самой загрузке requirejs (везде в магазине). Вот пример того, как должен выглядеть ваш requirejs-config.js :источник
В качестве альтернативного подхода к рекомендации Khoa, которая является отличной практикой для разработчиков Magento, вы можете вставить свой JavaScript в файл .phtml следующим образом:
Затем свяжите ваш phtml-файл с default.xml, как описано в ответе Khoa, хотя я бы порекомендовал добавить его в before.body.end. И затем вызовите свой JS-скрипт из copyright.phtml , например так:
copyright.phtml загружается на каждую страницу, даже на такие страницы, как оформление заказа, где нижний колонтитул опущен.
источник