} ?> 逗号CMS建站程序,文章发布不能带视频代码,或者优酷的视频分享代码, 需要修改什么美容仪器网 - 美容仪代工厂

找回密码
立即注册
搜索
发新帖
本站网友
本站网友  发表于 2025-11-27 11:06:30 | 查看: 15| 回复: 0
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;">
  1. iframe 格式(最常用):
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">
ingFang SC"; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;">html
预览
<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;">
  1. embed 格式(旧版):
html
预览
<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 默认禁止这两个标签(安全过滤),需手动添加到白名单。

二、核心修改步骤(分 3 个关键文件)

1. 修改 HTML 内容过滤文件(允许 iframe/embed 标签)

CMS 会对发布的内容进行 HTML 过滤,过滤规则通常在system/lib/目录下的过滤类文件中,常见文件名:
  • system/function/filter.php(过滤函数文件)
  • lib/htmlpurifier/(若用 HTMLPurifier 插件,需改其配置)
  • system/class/ContentFilter.class.php(内容过滤类)
操作:
① 找到过滤规则中的「允许标签列表」(通常是数组形式,如$allow_tags),添加iframeembed
php
运行
// 原代码(示例)
$allow_tags = array('a', 'img', 'p', 'br', 'strong', 'em', 'u', 'span');

// 修改后(添加iframe、embed)
$allow_tags = array('a', 'img', 'p', 'br', 'strong', 'em', 'u', 'span', 'iframe', 'embed');
② 找到「允许的标签属性列表」(如$allow_attrs),添加视频标签必需的属性:
php
运行
// 给iframe添加允许的属性(src、width、height、frameborder、allowfullscreen)
$allow_attrs['iframe'] = array('src', 'width', 'height', 'frameborder', 'allowfullscreen', 'scrolling');

// 给embed添加允许的属性(src、width、height、type、allowfullscreen)
$allow_attrs['embed'] = array('src', 'width', 'height', 'type', 'allowfullscreen');
若使用 HTMLPurifier(部分 CMS 集成):
找到 HTMLPurifier 的配置文件(如lib/htmlpurifier/config.php),添加标签白名单:
php
运行
$config = HTMLPurifier_Config::createDefault();
// 允许iframe和embed标签
$config->set('HTML.AllowedElements', 'iframe,embed');
// 允许iframe的属性
$config->set('HTML.AllowedAttributes', 'iframe.src,iframe.width,iframe.height,iframe.frameborder,iframe.allowfullscreen');
// 允许embed的属性
$config->set('HTML.AllowedAttributes', 'embed.src,embed.width,embed.height,embed.type,embed.allowfullscreen');
// 允许iframe的src域名(仅允许优酷,更安全)
$config->set('URI.AllowedSchemes', array('http' => true, 'https' => true));
$config->set('URI.AllowedHosts', array('player.youku.com' => true));

2. 修改编辑器配置(允许粘贴视频代码)

逗号 CMS 默认使用的编辑器可能是「KindEditor」「UEditor」或自定义编辑器,需允许编辑器不过滤 iframe/embed 标签:
情况 1:使用 KindEditor(常见轻量编辑器)
编辑器文件目录:static/kindeditor/找到配置文件kindeditor.jskindeditor.config.js,修改「过滤模式」和「允许标签」:
javascript
运行
KindEditor.ready(function(K) {
  K.create('#content', { // #content是文章内容输入框的ID
    filterMode: false, // 关闭过滤模式(或设为true但自定义允许标签)
    allowFileManager: true,
    // 自定义允许的HTML标签(添加iframe、embed)
    allowTags: ['iframe', 'embed', 'a', 'img', 'p', 'br', 'strong', 'em'],
    // 允许的标签属性
    allowAttrs: ['src', 'width', 'height', 'frameborder', 'allowfullscreen', 'type'],
    // 禁止转义HTML(确保视频代码原样保存)
    escapeHtml: false
  });
});
情况 2:使用 UEditor(百度编辑器)
编辑器目录:static/ueditor/修改配置文件ueditor.config.js
javascript
运行
// 找到白名单配置项,添加iframe和embed
UE.config.whiteList.iframe = ['src', 'width', 'height', 'frameborder', 'allowfullscreen'];
UE.config.whiteList.embed = ['src', 'width', 'height', 'type', 'allowfullscreen'];
// 关闭XSS过滤(或调整过滤规则)
UE.config.xssFilterRules = {
  // 保留默认规则,添加iframe/embed例外
  iframe: true,
  embed: true
};
情况 3:自定义编辑器(无第三方插件)
直接检查文章发布页面的前端代码(如template/admin/article_add.htm),确保输入框的name="content"字段没有被 JS 过滤:
  • 移除限制粘贴 HTML 的 JS 代码(如onpaste事件中的过滤逻辑)
  • 确保表单提交时,content字段以「原始 HTML」形式提交(不做转义)

3. 修改数据库存储(确保 HTML 不被转义)

部分 CMS 会自动将 HTML 特殊字符(如< > ")转义为实体字符(&lt; &gt; &quot;),导致视频代码失效,需修改模型文件:
找到文章模型文件(如model/ArticleModel.class.php),找到「添加 / 编辑文章」的方法(通常是add()edit()),确保content字段不被转义:
php
运行
// 原代码(可能有转义函数)
$content = htmlspecialchars($_POST['content']); // 会转义HTML,需删除

// 修改后(直接获取原始HTML)
$content = $_POST['content'];

// 若使用框架的ORM,确保字段类型是TEXT,且保存时不自动转义
$this->db->insert('article', array(
  'title' => $_POST['title'],
  'content' => $content, // 直接存入原始HTML
  'time' => time()
));

三、测试验证

  1. 登录 CMS 后台,新建文章;
  2. 切换到编辑器的「HTML 模式」(或直接粘贴优酷视频的 iframe 代码);
  3. 保存文章后,查看前台页面,若视频能正常播放,则修改成功;
  4. 若仍无法显示,检查是否有缓存(清除 CMS 缓存、浏览器缓存),或是否有其他安全插件过滤了标签。

四、注意事项(安全提示)

  1. 仅允许优酷域名的 iframe(如player.youku.com),避免恶意网站的 iframe 注入,可在过滤规则中限制src的域名(参考 HTMLPurifier 的配置);
  2. 不要随意开放过多标签(如script),仅添加视频必需的iframeembed
  3. 修改前备份相关文件(如过滤文件、编辑器配置文件),避免出错后无法恢复。
如果找不到具体文件,可通过「查看 CMS 目录结构」定位:核心文件通常在system/(核心逻辑)、lib/(工具类)、static/(静态资源 / 编辑器)、template/(模板文件)中。

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|美容仪器网 ( 蜀ICP备18029467号-1 )

GMT+8, 2025-12-6 11:37 , Processed in 0.111150 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表