Magento 2.4.3自定义模块的自定义Block如何注册到Page Builder可选列表
你遇到的问题是自定义代码Block未接入Page Builder的可选列表导致无法选择,按以下步骤操作即可解决:
原因说明
默认状态下,Magento Page Builder的Block选择器仅展示后台手动创建的CMS静态块,你编写的代码层面动态模板Block需要额外注册才能出现在可选列表中。

方案1:直接注册自定义Block到Page Builder可选列表(推荐)
步骤1:新增di配置文件
在你的自定义模块路径下创建app/code/Goteam/HelloWorld/etc/di.xml,写入如下配置:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\PageBuilder\Model\Config\Source\Blocks"> <arguments> <argument name="allowedBlocks" xsi:type="array"> <item name="goteam_helloworld_display" xsi:type="array"> <item name="class" xsi:type="string">Goteam\HelloWorld\Block\Display</item> <item name="label" xsi:type="string">Hello World自定义块</item> <item name="group" xsi:type="string">自定义内容块</item> <item name="sort_order" xsi:type="number">10</item> </item> </argument> </arguments> </type> </config>
参数说明:
label:后台Page Builder选择列表中展示的块名称group:块所属的分组,方便分类管理自定义块sort_order:排序值,数值越小排序越靠前
步骤2:补充Block模板配置
你的现有Block代码缺少模板关联配置,在app/code/Goteam/HelloWorld/Block/Display.php中添加模板属性即可:
namespace Goteam\HelloWorld\Block; class Display extends \Magento\Framework\View\Element\Template { // 新增模板指定,替换为你实际的模板路径 protected $_template = 'Goteam_HelloWorld::display.phtml'; public function __construct(\Magento\Framework\View\Element\Template\Context $context) { parent::__construct($context); } public function sayHello() { return __('Hello World'); } }
同时确保你已经创建了对应的模板文件app/code/Goteam/HelloWorld/view/frontend/templates/display.phtml,示例内容如下:
<?php /** @var \Goteam\HelloWorld\Block\Display $block */ ?> <h2><?= $block->sayHello() ?></h2>
步骤3:生效配置
执行以下命令更新配置并清缓存:
bin/magento setup:upgrade bin/magento cache:clean
操作完成后再次打开Page Builder的Block选择器,即可找到你自定义的Hello World块。
方案2:快捷调用无需改模块配置
如果不想修改模块代码,可以用静态块中转的方式实现:
- 后台进入「内容 > 元素 > 块」,新建一个静态块
- 在静态块内容中插入调用代码:
{{block class="Goteam\\HelloWorld\\Block\\Display" template="Goteam_HelloWorld::display.phtml"}} - 保存静态块后,直接在Page Builder的Block选择器中选择这个新建的静态块即可使用,效果和直接调用自定义块完全一致。
内容的提问来源于stack exchange,提问作者MarioProject
相关产品推荐
相关产品推荐

