帝国CMS8.0系统如何实现关键词与Tags自动同步
综合
时间:2026-08-29 17:44
浏览:
帝国cms8.0系统较7.5版本有所修改,原先的关键词与Tags自动同步设置往往失效,可按如下修改方法进行修改。
进入修改界面
后台 → 系统 → 系统设置 → 数据表与系统模型 → 管理数据表 → 选择对应模型(如“新闻系统”)→ 【管理字段】→ 编辑 special.field(特殊属性)。
查找原代码
在“输入表单替换html代码”中找到关键字输入框代码(8.0版本特征如下):
<input name="keyboard" type="text" size="52" value="<?=ehtmlspecialchars(stripSlashes($r['keyboard']))?>">
替换为新代码:
<input name="keyboard" id="keyword" type="text" size="52" value="<?=ehtmlspecialchars(stripSlashes($r['keyboard']))?>" onkeyup="document.getElementById('infotags').value=this.value;">
注意:请确保下方的 TAGS 输入框拥有 id="infotags"。如果原代码中 TAGS 框没有 ID,请同时找到 TAGS 的输入框代码,为其添加 id="infotags"。
其他修改方式:
使用js进行同步,修改/eadmin/admin/AddNews.php文件,拉到文件末尾,在 </body> 前面插入这段js代码:
<script>(function(){
var f=document.add;
if(!f||!f.keyboard||!f.infotags){return;}
var manual=false,last='';
function norm(s){
return s.replace(/[,,、;;\s]+/g,',').replace(/,+/g,',').replace(/^,+|,+$/g,'');
}
function sync(){
if(manual||f.infotags.readOnly){return;}
// TAGS 里已有"不是我们同步的"内容(手动选的标签/原有标签)时,停止覆盖
if(f.infotags.value!=''&&f.infotags.value!=last){manual=true;return;}
last=norm(f.keyboard.value);
f.infotags.value=last;
}
if(f.keyboard.addEventListener){
// isComposing: 输入法组词过程中的事件直接忽略
f.keyboard.addEventListener('input',function(e){if(!e.isComposing)sync();});
// 中文上屏后触发
f.keyboard.addEventListener('compositionend',sync);
// 失焦兜底(覆盖粘贴等场景)
f.keyboard.addEventListener('blur',sync);
}else{
f.keyboard.attachEvent('onblur',sync);
}
})();
</script>
编辑:HN001