帝国论坛帝国网站管理系统交流区帝国CMS 7.5与8.0专版[分享]帝国CMS7.5在CK编辑器中加入表情包功能 【本版专题贴子】  
主题:[分享]帝国CMS7.5在CK编辑器中加入表情包功能 [加入收藏夹]   

ggqm520
用户头衔:进士

精华贴   :0
发贴数   :1227
经验值   :5257
注册时间:2010-08-15
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[分享]帝国CMS7.5在CK编辑器中加入表情包功能
这个表情图标在默认编辑器中原本是有的,但被精简了,可能是开发者不想因为图标地址而暴露后台管理地址吧,那也没事,那我们整合一个新浪微博的表情吧(一举两得又有表情插入又不用内置表情图片),下面的教程看上去麻烦其实非常简单,一定要看好每一步,有问题就在后面回复吧!下载及教程请移步:https://www.wenyunfang.com/zazhi/zhongwangjiaocheng/2064.html

效果图如下:


第一步找到CK编辑器的配置文件,以前端投稿为例。/e/data/ecmseditor/infoeditor/config.js,给config.toolbar_full这个里面增加表情插件名weiboemoji,比如小编的。
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Find', 'Replace', '-', 'SelectAll', 'aiArticleGenerator', 'weiboemoji', 'multiImageUpload', 'weixin', 'Maximize' ] } 
接着在最后的插件配置那里继续增加表情插件名weiboemoji,比如小编的。
config.extraPlugins = 'etranfile,etranmedia,autoformat,ecleanalltext,einsertbr,einsertpage,einserttime,equotetext,aiArticleGenerator,weiboemoji,multiImageUpload,weixin'; 
接下来就简单了,找到/e/data/ecmseditor/infoeditor/plugins,该目录下面新建weiboemoji文件夹,其文件下写个plugin.js。比如小编的新浪微博插件的plugin.js代码如下:
CKEDITOR.plugins.add('weiboemoji', { 
init: function (editor) { 
var pluginName = 'weiboemoji'; 
window.ckWeiboEmojiCallbacks = window.ckWeiboEmojiCallbacks || {}; 
CKEDITOR.dialog.add('weiboEmojiDialog', function (editor) { //注册表情弹窗 
return { 
title: '微博表情', 
minWidth: '422px', 
minHeight: 300, 
contents: [{ 
id: 'emojiTab', 
label: '选择表情', 
elements: [{ 
type: 'html', 
id: 'emojiContainer', 
html:&#160;'<div&#160;id="cke_weibo_emoji_wrap"&#160;style="width:422px;height:300px;overflow-y:auto;text-align:center;line-height:0;font-size:0;margin-top:-15px;background:#f8f8f8;">加载表情中...</div>'&#160;
}]&#160;
}],&#160;
onShow:&#160;function&#160;()&#160;{&#160;
var&#160;dialog&#160;=&#160;this;&#160;
var&#160;emojiWrap&#160;=&#160;document.getElementById('cke_weibo_emoji_wrap');&#160;
emojiWrap.innerHTML&#160;=&#160;'<div&#160;style="width:422px;padding:10px&#160;0;font-size:12px;color:#999;">加载表情中...</div>';&#160;
getWeiboEmojis(function(emojis)&#160;{&#160;
if&#160;(!emojis&#160;||&#160;emojis.length&#160;===&#160;0)&#160;{&#160;
emojiWrap.innerHTML&#160;=&#160;'<div&#160;style="width:422px;padding:10px&#160;0;font-size:12px;color:#999;">表情加载失败,请刷新重试</div>';&#160;
return;&#160;
}&#160;
var&#160;html&#160;=&#160;'',&#160;columns&#160;=&#160;editor.config.weiboEmojiColumns&#160;||&#160;10;&#160;
for&#160;(var&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;emojis.length;&#160;i++)&#160;{&#160;
var&#160;emoji&#160;=&#160;emojis[i];&#160;
if&#160;(i&#160;%&#160;columns&#160;===&#160;0&#160;&&&#160;i&#160;>&#160;0)&#160;html&#160;+=&#160;'<br/>';&#160;
html&#160;+=&#160;'<div&#160;style="display:inline-block;border:1px&#160;solid&#160;#eee;border-radius:2px;margin:0;padding:2px;cursor:pointer;background:#fff;width:40px;height:40px;box-sizing:border-box;"&#160;'&#160;+&#160;
'title="'&#160;+&#160;emoji.phrase&#160;+&#160;'"&#160;data-url="'&#160;+&#160;emoji.url&#160;+&#160;'">'&#160;+&#160;
'<img&#160;src="'&#160;+&#160;emoji.url&#160;+&#160;'"&#160;style="width:100%;height:100%;border:0;object-fit:contain;"/>'&#160;+&#160;
'</div>';&#160;
}&#160;
emojiWrap.innerHTML&#160;=&#160;html;&#160;
var&#160;items&#160;=&#160;emojiWrap.getElement***yTagName('div');&#160;
for&#160;(var&#160;j&#160;=&#160;0;&#160;j&#160;<&#160;items.length;&#160;j++)&#160;{&#160;
if&#160;(!items[j].dataset.url)&#160;continue;&#160;
(function(item)&#160;{&#160;
item.onclick&#160;=&#160;function()&#160;{&#160;
var&#160;img&#160;=&#160;editor.document.createElement('img');&#160;
img.setAttribute('src',&#160;item.dataset.url);&#160;
img.setAttribute('title',&#160;item.title);&#160;
img.setAttribute('width',&#160;32);&#160;
img.setAttribute('height',&#160;32);&#160;
img.setAttribute('border',&#160;0);&#160;
editor.focus();&#160;
editor.insertElement(img);&#160;
dialog.hide();&#160;
};&#160;
})(items[j]);&#160;
}&#160;
});&#160;
},&#160;
onOk:&#160;function&#160;()&#160;{&#160;this.hide();&#160;},&#160;
onCancel:&#160;function&#160;()&#160;{&#160;this.hide();&#160;}&#160;
};&#160;
});&#160;
editor.addCommand(pluginName,&#160;{&#160;
exec:&#160;function&#160;(editor)&#160;{&#160;
editor.openDialog('weiboEmojiDialog');&#160;
}&#160;
});&#160;
editor.ui.addButton('weiboemoji',&#160;{&#160;
label:&#160;'微博表情',&#160;
command:&#160;pluginName,&#160;
icon:&#160;this.path&#160;+&#160;'images/angel_smile.gif'&#160;
});&#160;
function&#160;getWeiboEmojis(callback)&#160;{&#160;
var&#160;callbackId&#160;=&#160;'cb_'&#160;+&#160;Date.now()&#160;+&#160;'_'&#160;+&#160;Math.random().toString(36).substr(2,&#160;9);&#160;
var&#160;fullCallbackName&#160;=&#160;'window.ckWeiboEmojiCallbacks.'&#160;+&#160;callbackId;&#160;
window.ckWeiboEmojiCallbacks[callbackId]&#160;=&#160;function(res)&#160;{&#160;
var&#160;list&#160;=&#160;[];&#160;
if&#160;(res?.code&#160;===&#160;1&#160;&&&#160;Array.isArray(res.data))&#160;{&#160;
list&#160;=&#160;res.data.filter(emoji&#160;=>&#160;emoji?.type&#160;===&#160;'face'&#160;&&&#160;emoji.url&#160;&&&#160;emoji.phrase);&#160;
}&#160;
callback(list);&#160;
delete&#160;window.ckWeiboEmojiCallbacks[callbackId];&#160;
removeScript('weibo_emoji_script_'&#160;+&#160;callbackId);&#160;
};&#160;
var&#160;scriptId&#160;=&#160;'weibo_emoji_script_'&#160;+&#160;callbackId;&#160;
var&#160;url&#160;=&#160;'https://api.weibo.com/2/emotions.json?source=1362404091&callback='&#160;+&#160;fullCallbackName;&#160;
var&#160;script&#160;=&#160;document.createElement('script');&#160;
script.id&#160;=&#160;scriptId;&#160;
script.src&#160;=&#160;url;&#160;
script.charset&#160;=&#160;'utf-8';&#160;
var&#160;timeout&#160;=&#160;setTimeout(()&#160;=>&#160;{&#160;
delete&#160;window.ckWeiboEmojiCallbacks[callbackId];&#160;
removeScript(scriptId);&#160;
callback([]);&#160;
},&#160;8000);&#160;
script.onerror&#160;=&#160;script.onload&#160;=&#160;function()&#160;{&#160;
clearTimeout(timeout);&#160;
setTimeout(()&#160;=>&#160;removeScript(scriptId),&#160;200);&#160;
};&#160;
document.head.appendChild(script);&#160;
function&#160;removeScript(id)&#160;{&#160;
var&#160;el&#160;=&#160;document.getElementById(id);&#160;
el&#160;&&&#160;el.parentNode.removeChild(el);&#160;
}&#160;
}&#160;
}&#160;
});&#160;

实在动手能力太差的小伙伴那就直接下载压缩包,解压出来上传到/e/data/ecmseditor/infoeditor/plugins文件夹下面吧。特别提醒:第一步配置文件修改那是必须的。(此教程为例,前端编辑器与后端编辑器的各类插件都能轻松便捷制作,目前小编的CK编辑器增加AI生成文章功能,新浪微博表情,多图多文件直传到七牛云,微信公众号采集)

《帝国CMS7.5在CK编辑器中加入表情包功能》首发文韵坊,推荐你来看看,原文地址: https://www.wenyunfang.com/zazhi/zhongwangjiaocheng/2064.html

[该贴被修改 1 次,最后修改时间 2026-03-13 10:06:09 ]


基于帝国CMS的Ai即时通讯聊天室:https://www.wenyunfang.com/e/extend/chat/ 签名广告位出售中!!!!!
2026-03-13 10:03:40 已设置保密 顶部 回复 引用 报告 编辑 删除

包展昭
用户头衔:进士

精华贴   :0
发贴数   :824
经验值   :3650
注册时间:2017-05-08
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

支持




2026-03-13 10:16:47 已设置保密 顶部 回复 引用 报告 编辑 删除

ggqm520
用户头衔:进士

精华贴   :0
发贴数   :1227
经验值   :5257
注册时间:2010-08-15
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

1天了也没人回复!那设为付费阅读吧!毕竟需求不高啊!



基于帝国CMS的Ai即时通讯聊天室:https://www.wenyunfang.com/e/extend/chat/ 签名广告位出售中!!!!!
2026-03-13 21:03:13 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1