Magento 2 - 如何仅向产品页面添加其他 js 文件

Magento 2 - How to add additional js files to product page only

Magento 2 使用 RequireJS 和与版本 1 不同的方法。因此,如果我想继续使用默认主题 luna,通过添加一个 javascript 文件来扩展产品页面。最好的方法是什么?

我应该通过创建一个新模块来扩展它吗?

--更新-- 在考虑了上面的问题之后,在这里,我将按以下步骤列出我想做的事情。但需要帮助找到方法和解决方案。由于我是 Magento 2 的新手,有些问题对您来说可能太简单了,请不介意提供帮助。谢谢!

  1. 创建子主题并使用 Luma 主题作为父主题。 (我正在研究http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/theme-create.html但是关于如何定位js文件的细节问题很多)

  2. Magento 2 使用 RequireJS。放置我的 js 文件的最佳方式是什么,例如,如果我有一个 js 文件来触发一些关于产品变体更改的事件。以及名为 custom-events.js 的 js 文件。我应该放在哪里?

--更新-- 创建了 luna 的子主题,即:命名为:Vendor and lunachild:

app/design/frontend/Vendor/lunachild/theme.xml
app/design/frontend/Vendor/lunachild/registration.php
app/design/frontend/Vendor/lunachild/etc/view.xml

如何在我的主题中放置 catalog_product_view.xml?

您可以通过 xml 布局添加您的 js。您必须覆盖 catalog_product_view.xml 到本地主题。

<?xml version="1.0"?>
<!-- /** * Copyright © 2015 Scommerce Mage. All rights reserved. * See COPYING.txt for license details. */ -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <link src="Custom_Module::custom.js"/>
        <css src="Custom_Module::custom.css"/>
    </head>
    <body/>
</page>

您还可以使用 require.js 添加 css 或 js 并使用 head.additional 块

我发现更好的方法是查看回调逻辑的细节: http://devdocs.magento.com/guides/v2.0/architecture/view/static-process.html

此外,有一个很好的教程解释了如何在 Magento2 中初始化 javascript:阅读这个:http://alanstorm.com/magento_2_javascript_init_scripts, and also the Magento Doc: http://devdocs.magento.com/guides/v2.1/javascript-dev-guide/javascript/js_init.html