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

手动保存Drupal节点字段时如何应用Ckeditor的HTML过滤规则

解法

你之前调用过滤器process方法得到相反结果的原因是:该方法属于内容渲染阶段的过滤逻辑,默认basic_html格式的允许标签列表中仅包含<em>、<strong>,没有<i>、<b>,所以会直接删除这两个标签。你需要的是和手动保存节点一致的入库前预处理逻辑,应该调用文本格式的preProcess方法,该方法会先执行你配置的标签转换规则(<i>转<em>、<b>转<strong>等),再返回合规的HTML内容。

正确实现代码如下:

// 原始待导入HTML
$raw_html = '<p><i>Italic text</i> and some <b>bold</b> text</p>';
$text_format_id = 'basic_html';

// 加载对应文本格式配置
$filter_format = \Drupal\filter\Entity\FilterFormat::load($text_format_id);
// 执行入库前预处理,完成标签转换、HTML修正等操作
$processed_html = $filter_format->preProcess($raw_html, 'nl');

// 将处理后的内容写入字段
$node->set('field_some_html', [
  'value' => $processed_html,
  'format' => $text_format_id
]);
$node->save();

执行上述代码后存入字段的内容就和手动编辑保存的结果完全一致,渲染时<em>、<strong>标签都会正常保留生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:18:03