我正在构建一个 Magento 2 模块用于学习目的。
我试图将 css 文件添加到所有可配置产品页面,但失败得很惨。

这是我尝试过的。
app/code/Namespace/Module/view/frontend/layout 我添加了这个文件: catalog_product_view_type_configurable.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../Magento/Core/etc/page.xsd">
    <referenceBlock name="head">
        <block class="Magento\Theme\Block\Html\Head\Css" name="namespace-module-css">
            <arguments>
                <argument name="file" xsi:type="string">Namespace_Module:css/styles.css</argument>
            </arguments>
        </block>
    </referenceBlock>
</page>

考虑了布局文件,但我在控制台中收到以下错误

403 禁止 - ROOT/pub/static/frontend/Magento/blank/en_US/Namespace_Module:css/styles.css

错误消息中提到的文件不存在(未生成),即使我尝试添加的原始文件存在于 /app/code/Namespace/Module/view/frontend/web/css/styles.css
如果我删除 Namespace_Module 前缀来自 <argument> 标签它包含一个不同的 styles.css. 。那个来自 pub/static/frontend/Magento/blank/en_US/css/styles.css.

我究竟做错了什么?

有帮助吗?

解决方案

好的。我有点尴尬。
问题出在我的键盘和椅子之间。
模块名称广告文件的分隔符是 :: 不是 :.
我应该更加小心。
所以正确的做法是。

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../Magento/Core/etc/page.xsd">
    <referenceBlock name="head">
        <block class="Magento\Theme\Block\Html\Head\Css" name="namespace-module-css">
            <arguments>
                <argument name="file" xsi:type="string">Namespace_Module::css/styles.css</argument>
            </arguments>
        </block>
    </referenceBlock>
</page>

我应该删除这个问题,因为它可能偏离主题。
但我会让它继续存在,因为它可以作为其他人的学习材料。

许可以下: CC-BY-SA归因
scroll top