覆盖HEAD中CSS和JS文件的类型属性

我最近安装了Magento 2.3,并通过创建自定义主题扩展了默认的Magento Luma主题。

我正在尝试覆盖<HEAD>中默认JavaScript和CSS文件的类型属性。

换句话说,我想要这个:

<link rel="stylesheet" type="text/css" media="all" href="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/calendar.css" />
<script type="text/javascript" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/requirejs/require.js"></script>
<script type="text/javascript" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/polyfill.js"></script>

成为这个:

<link rel="stylesheet" type="text/css/custom" media="all" href="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/calendar.css" />
<script type="text/javascript/custom" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/requirejs/require.js"></script>
<script type="text/javascript/custom" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/polyfill.js"></script>

请注意从text/javascript更改为text/javascript/custom。与CSS类似。

我尝试像这样更新我的default_head_blocks.xml文件:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <css src="mage/calendar.css" type="text/css/custom"/>
        <script src="requirejs/require.js" type="text/javascript/custom"/>
        <script src="mage/polyfill.js" type="text/javascript/custom"/>
    </head>
</page>

但是我得到的是:

<link rel="stylesheet" type="text/css" type="text/css/custom" media="all" href="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/calendar.css" />
<script type="text/javascript" type="text/javascript/custom" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/requirejs/require.js"></script>
<script type="text/javascript" type="text/javascript/custom" src="https://my-mage-url/pub/static/version1574118953/frontend/restive/magedot/en_US/mage/polyfill.js"></script>

注意双重类型声明而不是单一类型。

是否有一种方法可以实现我所描述的内容,即覆盖JavaScript和CSS文件的类型属性?

P.S。我知道为什么需要这样做,但我在这里无法完全解释。

zhiyliu8 回答:覆盖HEAD中CSS和JS文件的类型属性

除了使用root.phtml外,我找不到其他选择来执行此操作。步骤如下:

  1. 在主题空间templates文件夹下创建一个Magento_Theme文件夹

  2. 在此目录[root.phtml中创建templates文件

  3. 打开<Magento_root>/vendor/magento/module-theme/view/base/templates/root.phtml,然后将其内容复制并粘贴到主题空间中的root.phtml

  4. 创建一个函数来修改$headContent。我使用带有正则表达式的preg_replace来查找重复的引用,然后删除我不需要的引用。只是几行代码。

  5. 先上传,然后刷新缓存

本文链接:https://www.f2er.com/3073450.html

大家都在问