You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:快捷调用无需改模块配置

如果不想修改模块代码,可以用静态块中转的方式实现:

  1. 后台进入「内容 > 元素 > 块」,新建一个静态块
  2. 在静态块内容中插入调用代码:{{block class="Goteam\\HelloWorld\\Block\\Display" template="Goteam_HelloWorld::display.phtml"}}
  3. 保存静态块后,直接在Page Builder的Block选择器中选择这个新建的静态块即可使用,效果和直接调用自定义块完全一致。

内容的提问来源于stack exchange,提问作者MarioProject

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:54:01