Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

DeDe5.7自动内链bug修复 关键词被另一关键词包含时产生错误

来源: 未知 分享至:

Dede的自动内链功能非常强大,帮助大家节省很多时间做内链,对内页的优化也起到很大作用。

只是有些设计方面依然有些小BUG,比如下面的情况,在到最新dede5.7版都存在的问题,大家可能都遇到过。

   这是我站内对hdparm和rm都做了内链,分别是 http://www.linuxso.com/command/hdparm.htmlhttp://www.linuxso.com/command/rm.html

如果某篇文章包含了hdparm这个词,在发表时,程序会查找到hdparm这个词,执行第一次替换行为,内容替换为:

<a href='http://www.linuxso.com/command/hdparm.html' target='_blank'><u>hdparm</u></a>     </u标签>是为了定义锚文本的样式,不必管。

然后程序继续查找关键词列表,找到rm 会进行第二次替换行为,内容替换为:

<a href='http://www.linuxso.com/command/hdpa<a href='http://www.linuxso.com/command/rm.html' target='_blank'><u>rm</u></a>.html' target='_blank'><u>hdparm</u></a>

 红色部分为第二次替换时增加的内容。

这样的html源代码放到浏览器里解释的时候,第一个" " 对之间的内容 即下面绿色部分会被解释成第一个href标签的值

<a href='http://www.linuxso.com/command/hdpa<a href='http://www.linuxso.com/command/rm.html' target='_blank'><u>rm</u></a>.html' target='_blank'><u>hdparm</u></a>

即下面紫色的内容被解释为rm锚文本的链接

<a href='http://www.linuxso.com/command/hdpa<a href='http://www.linuxso.com/command/rm.html' target='_blank'><u>rm</u></a>.html' target='_blank'><u>hdparm</u></a>

显示到网页上面,就会出现下面的连接混乱现象:

rm.html' target='_blank'>hdparm(hard disk parameters)

下面是暂时解决办法:

1.找到arc.archives.class.php 第1187行  $query = "SELECT * FROM dede_keywords WHERE rpurl<>'' ORDER BY rank DESC";  

    我们把排序改一下。 这行改为  $query = "SELECT * FROM dede_keywords WHERE rpurl<>'' ORDER BY aid ASC";  //让他按添加顺序排列,越晚添加越早被替换。

2.以后出现这种替换混乱的情况就把被包含的词在  文档关键词维护里面  删掉 再重新添加上.这样排序就排在了包含他的词的后面。

比如,这里hdparm和rm 导致了连接混乱,就把rm这个词 删除 再重新添加上. 问题就解决了。

 

这样,仅是临时解决问题。对于关键词量较大的站,维护起来相当累。或者你更新所有页面时,很早之前的页面连接混乱,你会发现不了。

推荐官方解决或有编程能力的同学去改一下替换程序,给个思路吧,我连接量不是太大,就懒得写了。

比较找出存在包含与被包含的两个关键词,如果被包含词的aid大,则两个关键词调换aid、如果被包含词aid小,则保存不变。

实现起来也很简单的,初学C语言有个冒泡排序算法,就是这样。

 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
相关文章列表:
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史