帝国论坛帝国网站管理系统交流区帝国CMS使用交流[原创]js方法极简实现搜索到的内容页关键词高亮显示 【本版专题贴子】  
主题:[原创]js方法极简实现搜索到的内容页关键词高亮显示 [加入收藏夹]   

ai1
用户头衔:举人

精华贴   :0
发贴数   :177
经验值   :1650
注册时间:2012-01-31
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]js方法极简实现搜索到的内容页关键词高亮显示
关键词高亮显示一般指搜索列表页上的关键词高亮显示,并不延申到内容页,这应该是个缺憾,对读者不甚友好。最近,尝试做个改善,实现内容页里的关键词高亮显示。上一个帖子介绍了php方法,只适用于在动态页里做,比如手机版内容页。这里的js方法应用范围更广,适合于静态和动态的内容页,具体如下:
1、在搜索页主程序(后台-模板管理-全站搜索模板(/e/sch/index.php))里把关键词通过链接参数传递到内容页,如?keyboard=<?=trim($_GET['keyboard'])?>
2、在内容页模板文章标题上方的适当的元素属性里添加id="schs";
3、内容页模板最后直接加几行简单的js代码(引号须改为英文的!)并更新所有内容页和动态页即可:
<script type="text/javascript">
//关键词高亮显示
var params=new URLSearchParams(window.location.search); //获取传参
var search=decodeURI(params.get('keyboard')).split(" "); //关键词分割成数组(多个之间以空格分开)
var highlights=search.map(v=>"<font color=red>"+v+"</font>"); //关键词高亮样式
var replacements=Object.fromEntries(search.map((key,index)=>[key,highlights[index]])); //关键词与高亮关键词键值对
var reStr='('+Object.keys(replacements).map(item=>'\\'+item).join('|')+')'; //替换正则样式
var re=new RegExp(reStr,'g');
document.getElementById('schs').innerHTML=document.getElementById('schs').innerHTML.replace(re,item=>replacements[item]); //获取文章并替换
//分页地址添加关键词传参
var links=document.querySelectorAll("div.epages a");
links.forEach(function(link) {link.href=link.href+'?'+params;});
</script>
以上方法已经通过测试和实际应用,效果很好。各分页也可以正常高亮显示搜索关键词。

[该贴被修改 13 次,最后修改时间 2025-11-16 20:21:06 ]


时间是把金钥匙
2025-11-15 15:22:55 已设置保密 顶部 回复 引用 报告 编辑 删除

csdn2
用户头衔:探花

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

支持下




2025-11-16 08:06:07 已设置保密 顶部 回复 引用 报告 编辑 删除

ggqm520
用户头衔:进士

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

感谢楼主,楼主威武



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

快速回复
内容

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