Можно ли включить requirejs-config.js
файл (или иным образом настроить RequireJS) через тему Magento? Или возможность зарезервирована для модулей Magento? Информация для разработчиков по структуре темы неоднозначна.
В документации разработчика ничего не говорится о RequireJS - однако, темы включают в себя, web
что означает, что с ними может быть связан javascript. Если javascript может быть связан с темой, это означает, что модуль RequireJS может быть связан с темой, и если модуль RequireJS может быть связан с темой, для этого модуля может потребоваться определенная конфигурация RequireJS.
Моим наивным предположением было бы, что темы будут иметь такую возможность, но я так и не смог найти какую-либо документацию по этому поводу, и у меня нет свободного времени, чтобы потратить на выполнение необходимого кода, написанного на requirejs-config.js
файле Magento, в том числе.
источник
Ответы:
вы на самом деле можете включить require-config.js в ваши темы Module dirs.
Проблема (на самом деле для нашей команды внешнего интерфейса) в том, что, похоже, нет возможности переопределить конфигурацию, но расширить ее.
Итак, чтобы взять модуль Magento_Theme для примера здесь, если вы добавите require-config.js в
<theme_base_dir>/Magento_Theme
dir, config будет добавлен в сгенерированный файл require-config.js, а также будет добавлена конфигурация из модуля Magento_Theme.Чтобы ответить на ваш вопрос, я также попытался добавить require-config.js в директорию тем,
<theme_base_dir>/web
а также в корневой каталог тем. Оба не сработали. обновление: на самом деле, согласно ответу ниже, это возможно, поместив его в директорию базы тем.Таким образом, ответ будет в основном да, так как вы можете добавить любое требование js в любом модуле (связанные с темой файлы js лучше всего размещать в
<theme_base_dir>/Magento_Theme
директории)Хотя я бы сказал, должна быть возможность добавить связанный с темой require-config.js вне любого Модуля (возможно, вы деактивируете данный модуль), а также должна быть возможность переопределить модули require-config.js.
И то, и другое кажется невозможным.
=== UPDATE ===
на самом деле кажется возможным иметь специфический для темы require-config.js. Смотрите ответ @Gareth Daine ниже
источник
path/to/theme/files/[etc/Magento_Theme
Хорошо, я думаю, что я, возможно, решил это, и я полагаю, что документация неоднозначна и нуждается в обновлении, чтобы прояснить процесс.
Я переместил
requirejs-config.js
из внутриweb/js
иweb
каталогов соответственно для обоихMagento_Theme
и корень моей темы на<Vendor>/<theme>
и теперь мой RequireJS конфигурации сливается в основнойrequirejs-config.js
со всеми другими включает в себя.Итак, похоже, что вы должны включить
requirejs-config.js
файл в следующих местах в зависимости от требований темы / модуля.Уровень темы
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Уровень модуля
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Итак, в вашей
requirejs-config.js
теме вы должны сопоставить свой компонент с путем, а затем использоватьshim
для объявления любых зависимостей:Затем вам нужно будет создать шаблон для хранения инициализации компонентов с помощью
<script>
тега (если вы не присоедините его непосредственно к элементу в файле .phtml), если это маршрут, по которому вы хотите перейти, включите следующее содержимое:В качестве альтернативы, свяжите его с элементом:
Затем просто включите шаблон .phtml в инструкции по компоновке, например, я разместил мой в
default.xml
расположенномapp/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
под узлом body и ссылался на:<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />
источник
У меня не было достаточного количества представителей, чтобы сделать этот комментарий, но только для того, чтобы отметить, что ответ Гарета мне не совсем помог.
Обтекание 'component': 'js / component' с
'*':{}
этим справилось.Кроме того, вместо создания файла шаблона, я добавил код ниже в верхней части
app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml
источник
Да
requirejs-config.js
можно добавить в тему следующим образом. Вот как я добавляю библиотеку dotdotdot в мою пользовательскую тему magento2.1. Загрузите и добавьте Js Library в свою тему, следуя по пути:
2. Создайте файл requirejs темы следующим образом и дайте знать requirejs недавно добавленную библиотеку.
3. Используйте добавленную библиотеку в основном js-файле вашей темы следующим образом:
4. и включите файл js вашей темы в заголовок вашего сайта следующим образом:
Вы можете добавить любую внешнюю библиотеку JS и пользовательский файл на каждую страницу в magento2.
источник
requirejs-config.js
этот путь. Однако RequireJS затем пытается загрузитьjs/some.library.js
из корня, а не из каталога темы..js
расширение ... глупо :)