Magento 2:如何在加入购物车按钮后添加自定义Block
解决Magento 2产品详情页自定义Block显示在加入购物车按钮后的布局问题
看起来你已经成功让自定义Block生效了,只是位置没达到预期——这是因为你选择的alert.urls容器在页面布局里的位置本来就靠近数量输入框,所以才会显示在那里。下面是调整布局配置的正确方法:
正确的布局XML配置
你需要把自定义Block放到包含加入购物车按钮的核心容器里,并且明确指定它的位置在加入购物车按钮之后。修改你的catalog_product_view.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> <referenceContainer name="product.info.form.content"> <block class="Package_Name\Module_Name\Block\Catalog\Product\View\Enquiry" name="product.info.enquiry" template="Package_Name_Module_Name::catalog/product/view/enquiry.phtml" after="product.info.addtocart" /> </referenceContainer> </body> </page>
代码说明
product.info.form.content:这个容器是Magento默认布局中承载产品加入购物车表单元素的核心容器,位置正好在产品详情页的交互区域内,是放置自定义Block的正确位置。after="product.info.addtocart":product.info.addtocart是默认加入购物车按钮的Block名称,这个属性明确告诉Magento要把你的自定义Block放在这个按钮之后。
额外注意事项
- 清除缓存:修改布局XML后,务必执行以下命令清除布局缓存,确保新配置生效:
bin/magento cache:flush layout - 验证Block类和模板路径:
- 确保你的Block类
Package_Name\Module_Name\Block\Catalog\Product\View\Enquiry正确继承了\Magento\Framework\View\Element\Template类。 - 确保模板文件
enquiry.phtml放在扩展的view/frontend/templates/catalog/product/view/目录下,路径和XML中指定的一致。
- 确保你的Block类
- 可配置产品兼容:如果你的店铺有可配置产品,发现位置仍不对,可以尝试把
after属性的值改为product.info.addtocart.additional,这个是可配置产品加入购物车按钮的Block名称。
之前你尝试的另一段代码无法工作,大概率是因为引用了错误的容器名称,或者没有正确指定after属性的目标Block,按照上面的配置应该就能解决位置问题了。
内容的提问来源于stack exchange,提问作者Magecode
相关产品推荐
相关产品推荐

