ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;">要解决逗号 CMS(DouHao CMS)发布文章时无法插入优酷视频分享代码的问题,核心是调整 CMS 的内容过滤规则(默认可能禁止了 iframe/video 等视频相关标签)和编辑器允许的标签白名单。以下是具体修改步骤(基于常见 PHP CMS 的通用逻辑,逗号 CMS 本质是轻量 PHP 建站程序,文件结构类似):ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;">一、先明确优酷视频分享代码的格式ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;">优酷视频分享通常有两种形式,修改时需确保这两种格式都被允许:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">iframe 格式(最常用):ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><iframe height="498" width="510" src="https://player.youku.com/embed/XNzg5MDYxNjYw" frameborder="0" allowfullscreen></iframe>
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">embed 格式(旧版):<embed src="https://player.youku.com/player.php/sid/XNzg5MDYxNjYw/v.swf" width="510" height="498" type="application/x-shockwave-flash" allowfullscreen="true"></embed>
CMS 默认禁止这两个标签(安全过滤),需手动添加到白名单。 CMS 会对发布的内容进行 HTML 过滤,过滤规则通常在system/或lib/目录下的过滤类文件中,常见文件名: system/function/filter.php(过滤函数文件)lib/htmlpurifier/(若用 HTMLPurifier 插件,需改其配置)system/class/ContentFilter.class.php(内容过滤类)
① 找到过滤规则中的「允许标签列表」(通常是数组形式,如$allow_tags),添加iframe和embed:
$allow_tags = array('a', 'img', 'p', 'br', 'strong', 'em', 'u', 'span');
$allow_tags = array('a', 'img', 'p', 'br', 'strong', 'em', 'u', 'span', 'iframe', 'embed');
② 找到「允许的标签属性列表」(如$allow_attrs),添加视频标签必需的属性:
$allow_attrs['iframe'] = array('src', 'width', 'height', 'frameborder', 'allowfullscreen', 'scrolling');
$allow_attrs['embed'] = array('src', 'width', 'height', 'type', 'allowfullscreen');
找到 HTMLPurifier 的配置文件(如lib/htmlpurifier/config.php),添加标签白名单: $config = HTMLPurifier_Config::createDefault();
$config->set('HTML.AllowedElements', 'iframe,embed');
$config->set('HTML.AllowedAttributes', 'iframe.src,iframe.width,iframe.height,iframe.frameborder,iframe.allowfullscreen');
$config->set('HTML.AllowedAttributes', 'embed.src,embed.width,embed.height,embed.type,embed.allowfullscreen');
$config->set('URI.AllowedSchemes', array('http' => true, 'https' => true));
$config->set('URI.AllowedHosts', array('player.youku.com' => true));
逗号 CMS 默认使用的编辑器可能是「KindEditor」「UEditor」或自定义编辑器,需允许编辑器不过滤 iframe/embed 标签: 编辑器文件目录: static/kindeditor/找到配置文件 kindeditor.js或 kindeditor.config.js,修改「过滤模式」和「允许标签」: KindEditor.ready(function(K) {
K.create('#content', {
filterMode: false,
allowFileManager: true,
allowTags: ['iframe', 'embed', 'a', 'img', 'p', 'br', 'strong', 'em'],
allowAttrs: ['src', 'width', 'height', 'frameborder', 'allowfullscreen', 'type'],
escapeHtml: false
});
});
编辑器目录: static/ueditor/修改配置文件 ueditor.config.js:
UE.config.whiteList.iframe = ['src', 'width', 'height', 'frameborder', 'allowfullscreen'];
UE.config.whiteList.embed = ['src', 'width', 'height', 'type', 'allowfullscreen'];
UE.config.xssFilterRules = {
iframe: true,
embed: true
};
直接检查文章发布页面的前端代码(如template/admin/article_add.htm),确保输入框的name="content"字段没有被 JS 过滤: - 移除限制粘贴 HTML 的 JS 代码(如
onpaste事件中的过滤逻辑) - 确保表单提交时,
content字段以「原始 HTML」形式提交(不做转义)
部分 CMS 会自动将 HTML 特殊字符(如< > ")转义为实体字符(< > "),导致视频代码失效,需修改模型文件: 找到文章模型文件(如model/ArticleModel.class.php),找到「添加 / 编辑文章」的方法(通常是add()或edit()),确保content字段不被转义:
$content = htmlspecialchars($_POST['content']);
$content = $_POST['content'];
$this->db->insert('article', array(
'title' => $_POST['title'],
'content' => $content,
'time' => time()
));
- 登录 CMS 后台,新建文章;
- 切换到编辑器的「HTML 模式」(或直接粘贴优酷视频的 iframe 代码);
- 保存文章后,查看前台页面,若视频能正常播放,则修改成功;
- 若仍无法显示,检查是否有缓存(清除 CMS 缓存、浏览器缓存),或是否有其他安全插件过滤了标签。
- 仅允许优酷域名的 iframe(如
player.youku.com),避免恶意网站的 iframe 注入,可在过滤规则中限制src的域名(参考 HTMLPurifier 的配置); - 不要随意开放过多标签(如
script),仅添加视频必需的iframe和embed; - 修改前备份相关文件(如过滤文件、编辑器配置文件),避免出错后无法恢复。
如果找不到具体文件,可通过「查看 CMS 目录结构」定位:核心文件通常在system/(核心逻辑)、lib/(工具类)、static/(静态资源 / 编辑器)、template/(模板文件)中。 |