Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 关键字添加链接

[复制链接]
xuehaiyisu 发表于 2011-11-7 12:33:41 | 显示全部楼层 |阅读模式
插件发布
插件名称: 关键字添加链接
插件来源: 原创插件
适用版本: Discuz! X2
语言编码: GBK简体 
最后更新时间: 2011-11-10
插件作者: xuehaiyisu
插件简介: 批量给关键字添加站内纵横搜索链接,如:用“[url=http://localhost/bbs/search.php?mod=my&source=adlink&q=论坛]论坛[/url]”替换 “论坛”,发帖时“论坛”个词会被加上链接,点击转到纵横搜索页面。
本帖最后由 xuehaiyisu 于 2011-11-10 09:12 编辑

discuz 官网论坛上面有些关键字会被自动添加链接,比如“围棋”这个词,点击之后会跳转到纵横搜索页面,我想通过后台词语过滤功能添加链接,但是批量添加时由于输入框太窄,无法添加那么长的链接,所以只好去修改数据表了,这个小程序就是批量生成关键字替换的sql语句,然后粘贴到数据表,即可实现批量添加。

虽然功能实现了,但是操作比较麻烦,期待官方将批量添加的输入框改大一些,我看到后台很多地方都有“双击输入框可扩大/缩小”,可是批量添加词语过滤框却没有。

还有几个问题,向大家请教:

1、为很多关键字添加链接会不会增加服务器负担?对效率的影响有多大?加链接的利弊?
2、纵横搜索会增加服务器负担吗?
3、官网的关键字链接是如何实现的?

关键字添加链接
http://www.tecbbs.com/forum.php?mod=viewthread&tid=142&fromuid=1



发现这个方法存在严重问题,帖子标题也会被替换,重复编辑帖子时会重复替换,这样看来这个思路是错误的,求高手解决此问题{:soso_e183:}

原来后台有这个设置:
关键字自动添加链接
https://discuz.dismall.com/thread-2487561-1-1.html


---------------------------------------------------------------------------------------------------------------------

既然添加关联链接可以实现关键字自动添加链接,那就找到关联链接数据表,批量添加,下面是更新了的下载

下载已更新


关键字添加链接
http://www.tecbbs.com/forum.php?mod=viewthread&tid=142&fromuid=1



 楼主| xuehaiyisu 发表于 2011-11-7 13:33:44 | 显示全部楼层
查看官网的源代码,发现这样一段代码,是不是和这个有关呀?
  1. <!-- 搜索划词BEGIN -->
  2. <script language="javascript" type="text/javascript">
  3. var postmessage_id="postmessage_"+21919212;
  4. var content=document.getElementById(postmessage_id).innerHTML;
  5. soso_innerlink_enable_old = 0;

  6. if (soso_innerlink_enable_old) {
  7. var postmessage_length=content.length;
  8. var content_submit="";
  9. if (postmessage_length>1024) {
  10. content_submit=content.substr(0,1024);
  11. } else {
  12. content_submit=content;
  13. }
  14. }
  15. </script>

  16. <script language="javascript" type="text/javascript">
  17. if (soso_innerlink_enable_old) {
  18. var server_host="http://d.soso.com/sendhtml/extractword.php?content=";
  19. var current_content=content_submit;
  20. var script_src=server_host+current_content;
  21. } else {
  22. var script_src= 'http://180.153.160.223/cgi-bin/tag_discuz_line.cgi?version=1&site_id=1000&thread_id=2486357';
  23. }
  24. document.write("<script src='"+script_src+"'><\/script>");
  25. </script>

  26. <script language="javascript" type="text/javascript">
  27. content=markLink(content, word_jason);
  28. document.getElementById(postmessage_id).innerHTML=content;
  29. function markLink(content, word_jason) {
  30. var search_src="https://discuz.dismall.com/search.php?mod=my&amp;source=adlink&amp;q=";
  31. var head="";
  32. var subTail = '';
  33. var start = 0;
  34. var end = 0;
  35. var tail=content;
  36. var reAnchor = /((<a[^>]*?>.*?<\/a>)|(<[^>]*?>))/gim;
  37. var regExpContent = '';
  38. var regExpRightContext = '';

  39. if(word_jason.wordset.length == 0) {
  40. return tail;
  41. }

  42. while(word_jason.wordset.length > 0){
  43. reAnchor.lastIndex = 0;
  44. reAnchor.test(tail);

  45. if(reAnchor.lastIndex) {
  46. regExpContent = RegExp.$1;
  47. regExpRightContext = RegExp.rightContext;
  48. end = reAnchor.lastIndex - regExpContent.length;
  49. subTail = tail.substr(start, end);
  50. }
  51. else {
  52. subTail = tail;
  53. }

  54. while(subTail) {
  55. var place=subTail.length;
  56. var key=-1;
  57. var len=-1;
  58. var aimWord="";
  59. for(var i = 0; i < word_jason.wordset.length; i++){
  60. var word = word_jason.wordset[i].word;
  61. var p=subTail.indexOf(word);
  62. if((p > -1 && p < place) || (p == place && word.length > len)){
  63. place = p;
  64. key=i;
  65. len=word.length;
  66. aimWord=word;
  67. }
  68. }

  69. if(place == subTail.length && key == -1 && len == -1) {
  70. head += subTail;
  71. subTail = '';
  72. break;
  73. }

  74. var text ="<a href="+search_src+aimWord+"   target=_blank style='text-decoration: none;border-bottom: 1px dotted blue'>"+aimWord+"</a>";
  75. head = head + subTail.substring(0,place) + text ;
  76. if(place + len >= subTail.length) {
  77. subTail="";break;
  78. }
  79. subTail = subTail.substring(place + len);
  80. word_jason.wordset.splice(key,1);
  81. }

  82. if(reAnchor.lastIndex) {
  83. head = head + regExpContent;
  84. tail = regExpRightContext;
  85. }
  86. else {
  87. return head;
  88. }
  89. }
  90. return head + regExpRightContext;
  91. }
  92. </script>
  93. <!-- 搜索划词END -->
复制代码
回复

使用道具 举报

shuaierzx 发表于 2011-11-7 13:34:40 | 显示全部楼层
严重支持!
回复

使用道具 举报

 楼主| xuehaiyisu 发表于 2011-11-7 13:54:41 | 显示全部楼层
本帖最后由 xuehaiyisu 于 2011-11-7 13:55 编辑
shuaierzx 发表于 2011-11-7 13:34
严重支持!


发现我那个有严重问题,再次编辑时会在添加一遍链接,还得手动删除,看来还是得请教官方,官方论坛上的划词搜索很好
回复

使用道具 举报

不要一直颓废 发表于 2011-11-7 14:48:03 | 显示全部楼层
很好的文章  谢谢 分享
回复

使用道具 举报

 楼主| xuehaiyisu 发表于 2011-11-7 23:35:18 | 显示全部楼层
不要一直颓废 发表于 2011-11-7 14:48
很好的文章  谢谢 分享

发现这样做有严重问题,第一个是如果标题中带了关键字标题会带上discuz 的url代码,很难看,第二个,帖子重复编辑时会再次添加链接,,看来这个思路是错误的,还是discuz论坛上的好用,请管理员教教大家是怎么实现的吧
回复

使用道具 举报

 楼主| xuehaiyisu 发表于 2011-11-10 09:13:40 | 显示全部楼层
自己顶一个
回复

使用道具 举报

RenQin 发表于 2011-11-10 12:19:27 | 显示全部楼层
回复

使用道具 举报

jxhjjm 发表于 2011-11-10 12:39:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Ηa℃kTj 发表于 2011-12-6 10:31:50 | 显示全部楼层
这个必须支持下的 www.suntvtv.com
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 04:30 , Processed in 0.032380 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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