Magento 2:如何通过主题或扩展覆盖vendor端grid.phtml文件
用主题或扩展覆盖Magento 2的grid.phtml模板文件
下面提供两种安全的方式修改目标模板,避免直接改动vendor目录下的文件:
方法一:通过主题覆盖
这是最常用的定制方式,适合仅依赖主题实现定制的场景:
- 定位你的主题目录(默认路径为
app/design/frontend/[厂商名]/[主题名]),创建对应模板路径:module-catalog-widget/view/frontend/templates/product/widget/content/ - 复制
vendor/magento/module-catalog-widget/view/frontend/templates/product/widget/content/grid.phtml文件到上述创建的目录中 - 直接修改复制后的grid.phtml文件,添加你的自定义内容
- 执行缓存清理命令使修改生效:
php bin/magento cache:clean
方法二:通过自定义扩展覆盖
适合需要封装定制逻辑、方便复用或与其他模块配合的场景:
- 创建自定义模块(以
Vendor/CatalogWidgetOverride为例):- 在
app/code/Vendor/CatalogWidgetOverride下创建registration.php:<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Vendor_CatalogWidgetOverride', __DIR__ ); - 创建
etc/module.xml:<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Vendor_CatalogWidgetOverride" setup_version="1.0.0"> <sequence> <module name="Magento_CatalogWidget"/> </sequence> </module> </config>
- 在
- 创建布局文件替换原模板:
- 在
view/frontend/layout/catalog_widget_product_list.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"> <body> <referenceBlock name="widget.product.list"> <action method="setTemplate"> <argument name="template" xsi:type="string">Vendor_CatalogWidgetOverride::product/widget/content/grid.phtml</argument> </action> </referenceBlock> </body> </page>
- 在
- 创建模板目录并复制原文件:
- 创建路径
view/frontend/templates/product/widget/content/,复制原grid.phtml到这里并修改添加自定义内容
- 创建路径
- 启用模块并更新系统:
php bin/magento module:enable Vendor_CatalogWidgetOverride php bin/magento setup:upgrade php bin/magento cache:clean
内容的提问来源于stack exchange,提问作者Ekta Rathod
相关产品推荐
相关产品推荐

