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

Magento 2.4.7禁用Page Builder时自定义分类WYSIWYG属性无法保存

Magento 2禁用Page Builder时自定义分类WYSIWYG属性无法保存问题

环境

  • Magento 2.4.7-p7
  • 前端使用Hyvä
  • Page Builder已禁用(启用后问题消失,分类SEO描述可正常保存)

目标

添加自定义分类属性seo_description,在后台以WYSIWYG形式渲染,且保存后值可持久化(与核心description属性表现一致)。目前字段已正常显示,但点击保存后值无法存储,必须保持Page Builder禁用状态。

相关代码

vendor/module/Setup/UpgradeData.php

<?php

namespace xxxx\Category\Setup;

use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\UpgradeDataInterface;

class UpgradeData implements UpgradeDataInterface
{
    private $eavSetupFactory;

    /**
     * Constructor
     *
     * @param \Magento\Eav\Setup\EavSetupFactory $eavSetupFactory
     */
    public function __construct(EavSetupFactory $eavSetupFactory)
    {
        $this->eavSetupFactory = $eavSetupFactory;
    }

    /**
     * {@inheritdoc}
     */
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();

        if (version_compare($context->getVersion(), '1.1.0') < 0) {
            $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

            $eavSetup->addAttribute(
                \Magento\Catalog\Model\Category::ENTITY,
                'seo_description',
                [
                    'type' => 'text',
                    'label' => 'SEO Description',
                    'input' => 'textarea',
                    'sort_order' => 333,
                    'source' => '',
                    'global' => 0,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => false,
                    'default' => null,
                    'group' => 'extra',
                    'backend' => ''
                ]
            );

            $eavSetup->addAttribute(
                \Magento\Catalog\Model\Category::ENTITY,
                'thumbnail_image',
                [
                    'type' => 'varchar',
                    'label' => 'Thumbnail Image',
                    'input' => 'image',
                    'sort_order' => 334,
                    'source' => '',
                    'global' => 0,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => false,
                    'default' => null,
                    'group' => 'extra',
                    'backend' => 'Magento\Catalog\Model\Category\Attribute\Backend\Image'
                ]
            );
        }

        if (version_compare($context->getVersion(), '1.3.2') < 0) {
            $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

            $eavSetup->updateAttribute(
                \Magento\Catalog\Model\Category::ENTITY,
                'seo_description',
                'is_wysiwyg_enabled',
            );
        }

        $setup->endSetup();
    }
}

category_form.xml

<?xml version="1.0" ?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="content">
          <field name="seo_description" template="ui/form/field" sortOrder="53" formElement="wysiwyg">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="wysiwygConfigData" xsi:type="array">
                        <item name="height" xsi:type="string">250px</item>
                        <item name="add_variables" xsi:type="boolean">false</item>
                        <item name="add_widgets" xsi:type="boolean">false</item>
                        <item name="add_images" xsi:type="boolean">true</item>
                        <item name="add_directives" xsi:type="boolean">true</item>
                    </item>
                    <item name="source" xsi:type="string">category</item>
                </item>
            </argument>
            <settings>
                <label translate="true">Long Description (SEO)</label>
                <dataScope>seo_description</dataScope>
            </settings>
            <formElements>
                <wysiwyg class="Magento\Catalog\Ui\Component\Category\Form\Element\Wysiwyg">
                    <settings>
                        <rows>8</rows>
                        <wysiwyg>true</wysiwyg>
                    </settings>
                </wysiwyg>
            </formElements>
        </field>
    </fieldset>

    <fieldset name="extra">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">Extra</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="sortOrder" xsi:type="number">1111</item>
            </item>
        </argument>
    </fieldset>
</form>

已尝试方案

  • 保留template="ui/form/field":后台正常显示SEO描述标签,但保存时提交旧值,新输入内容不生效,刷新后字段仍为空/无变化。
  • 移除template="ui/form/field":SEO标签消失(显示效果差),但值可正常保存。
  • 启用Page Builder:标签和值均正常工作,说明PB的表单修饰器正确处理了数据绑定。
  • 改为纯textarea(无WYSIWYG):带包装器时值可正常保存,但不符合需求。
  • 排查确认:无其他模块/主题的重复配置,无后台对Magento_Ui field.html的重写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:40:54