想把留言评论中的网址显示方式改一下,在查Z-Blog模板的代码时发现原来评论序号前的小图标竟然是“引用”的作用,不过放在这太不显眼了,还是放到回复按钮边上好。不过这样一来反而出现一个麻烦,引用内容的错位,改了好久才整清楚,并不是有多难改,而是网上大量(超大量)的资料抄来抄去全是错的,影响我的理解,算来算去始终搞不清楚那个引用函数的层次,后来详细完整看下来才知道原来是原始资料写的不对。下面说说我的理解和修改。
留言评论的模板文件是b_article_comment.html,里面原始的代码是
<ul class="msg">
<li class="msgname"><span class="comment-quote-icon"><a onclick="InsertQuote(this.parentNode.parentNode.parentNode.getElementsByTagName('a')[2].innerHTML,this.parentNode.parentNode.parentNode.getElementsByTagName('li')[2].innerHTML);return false;" href=""><img src="<#ZC_BLOG_HOST#>image/common/quote.gif" height="9" width="9" alt="quote" title="quote" /></a></span> <a name="cmt<#article/comment/id#>"><#article/comment/count#></a>.<a><#article/comment/name#></a></li>
<li class="msgurl"><a href="<#article/comment/urlencoder#>" rel="nofollow" target="_blank"><#article/comment/url#></a></li>
<li class="msgarticle"><#article/comment/content#></li>
<li class="msgtime"><#article/comment/posttime#> <a href="#comment" onclick="RevertComment('<#article/comment/id#>')">回复</a></li>
</ul>
我修改后的代码是
<ul class="msg">
<li class="msgname"><a name="cmt<#article/comment/id#>"><#article/comment/count#>楼</a>.<a href="<#article/comment/urlencoder#>" rel="nofollow" target="_blank"><#article/comment/name#></a></li>
<li class="msgarticle"><#article/comment/content#></li>
<li class="msgtime"><#article/comment/posttime#> [<a onclick="InsertQuote(this.parentNode.parentNode.getElementsByTagName('a')[1].innerHTML,this.parentNode.parentNode.getElementsByTagName('li')[1].innerHTML);return false;" href="">引用</a>][<a href="#comment" onclick="RevertComment('<#article/comment/id#>')">回复</a>] [<a href="javascript:scroll(0,0)">返回顶部</a>]</li>
</ul>
把网址显式显示取消,改到评论者的姓名中隐性显示,同时把原来楼层号前的引用小图标取消,另外在下面回复按钮边增加一个“引用”按钮(这里“返回顶部”是上次添加的),效果看后面的评论区。注意看上面黑体部分函数的变化,网上大量有关“评论留言的引用按钮写法详解”的内容都是源于http://wiki.rainbowsoft.org/doku.php?id=themes:tips,全是从这抄的,但上面有关getElementsByTagName的解释有误,原文如下:
讲解引用所用的JS函数:
引用的函数: InsertQuote(参数1[评论者],参数2[评论内容])
this.parentNode 表示该节点的上一节点
getElementsByTagName('a')[2].innerHTML 表示获取第二个<a>元素的内容,即<#article/comment/name#>
同上,getElementsByTagName('li')[2].innerHTML 为<#article/comment/content#>
颜色标出来的getElementsByTagName部分有误,[2]表示的不是第二元素,而是第三个元素,序号是从0开始编,第一个是[0],所以[2]是第三个。这一段后面的代码是正确的(其中出现了[0])。
另外如评论者无网址,点击评论者名字后默认是跳转到http://www.rainbowsoft.org/,这个修改在FUNCTION中的c_urlredirect.asp,找到
Dim strUrl
strUrl=URLDecodeForAntiSpam(Request.QueryString("url"))
If strUrl="" Then strUrl="http://www.rainbowsoft.org/"
改成:
Dim strUrl
strUrl=URLDecodeForAntiSpam(Request.QueryString("url"))
If strUrl="" Then strUrl="http://www.stormcn.cn/"
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/964.html