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
相关产品推荐
相关产品推荐

