帝国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

科技 >帝国CMS8.0系统如何实现关键词与Tags自动同步