2013年10月11日 星期五

作者和一般回應的標示區別 (Author comment highlighting)



作者和一般回應的標示區別 (Author comment highlighting)

在自己的 Blog 裡會有一些路人針對文章來做回應或留言討論,身為作者,也可以針對這些一般的回應做出回答或解釋,如果不把作者的回應和一般人的做一點區分,當回應很多的時候都混在一起,也會搞不清楚自己是否回答過。因此,可以在樣版裡做一點手腳,如果判斷到發表回應的人是作者,就做一點樣式上的改變,用來區別作者和一般人的回應。我想過很多作法,不過有些複雜,改動的程式也要很多,算了,還是用最簡單、變動最少的方式,只更改作者回應的字型顏色就好。

打開範本 (Template) 直接修改 HTML,記得要展開 Widget,在 CSS 的區段先加入以下定義(指定作者回應的字型顏色):
/* Author Comment Styles */
#comments-block .author-comment {
  color: #f00;
}
接著,在範本的程式碼裡尋找下面這一行:
<dl id='comments-block'>
這一行下面開始的迴圈跑的就是在顯示文章一篇篇的回應留言。我把整段顯示回應的程式碼貼出來,新增和修改的部分用紅色標註,如果要用也可以直接直接複製下面整段,貼入蓋掉原來的部分。
<dl id='comments-block'>
  <b:loop values='data:post.comments' var='comment'>
    <dt expr:class='&quot;comment-author &quot; + data:comment.authorClass' expr:id='data:comment.anchorName'>
      <a expr:name='data:comment.anchorName'/>
      <b:if cond='data:comment.authorUrl'>
        <!-- Author Comment highlighting -->
        <b:if cond='data:comment.author == data:post.author'>
          <b:if cond='data:comment.authorClass == "blogger-comment-icon"'>
            <b><data:comment.author/></b> :
          <b:else/>
            <a expr:href='data:comment.authorUrl' rel='nofollow'>
              <data:comment.author/></a> <data:commentPostedByMsg/>
          </b:if>
        <b:else/>
          <a expr:href='data:comment.authorUrl' rel='nofollow'>
            <data:comment.author/></a> <data:commentPostedByMsg/>
        </b:if>
      <b:else/>
        <data:comment.author/> <data:commentPostedByMsg/>
      </b:if>
    </dt>
    <dd class='comment-body'>
      <b:if cond='data:comment.isDeleted'>
        <span class='deleted-comment'><p><data:comment.body/></p></span>
      <b:else/>
        <!-- Author Comment highlighting -->
        <b:if cond='data:comment.author == data:post.author'>
          <b:if cond='data:comment.authorClass == "blogger-comment-icon"'>
            <p class='author-comment'><data:comment.body/></p>
          <b:else/>
            <p><data:comment.body/></p>
          </b:if>
        <b:else/>
          <p><data:comment.body/></p>
        </b:if>
      </b:if>
    </dd>
    <dd class='comment-footer'>
      <span class='comment-timestamp'>
        <a expr:href='"#comment-" + data:comment.id' title='comment permalink'>
          <data:comment.timestamp/></a>
        <b:include data='comment' name='commentDeleteIcon'/>
      </span>
    </dd>
  </b:loop>
</dl>
主要的改變有:更改顯示作者的樣式,作者名稱字型粗體沒有連結,並且以冒號結尾。另外指定作者回應的內文套用 CSS 樣式: "author-comment",也就是一開始另外定義的 Class,這些變動都可以依照個人配色和喜好去更改。
不過,這段程式碼用來判斷作者還是有瑕疵,如果回應的人自訂名稱,而自訂的名字「剛好」和 Blog 作者名字字串一模一樣,而且他也是 Blogger 的使用者,那他的回應也可以「假裝」是作者的,以上的程式碼並沒辦法作更嚴謹的檢查。這也是最後決定不要在上面玩太多手腳,只改一點樣式顏色作些區別就好了。
更新:因為 Blogger 曾新增部份樣板功能,像支援非 Blogger 帳號留言(因此留言者前面多了一個識別用小圖示),所以以上程式碼也做了一點修正,並且參照留言者(白花花)的建議,對作者回應的識別度稍稍加強。
再更新:因為 Blogger 新增的「回應頭像」功能,導致原來判斷作者的第二項檢查:cond='data:comment.authorClass == "blogger-comment-icon"' 會失效,如果要這個 Hack 正常無誤有兩種解決方法:請到「設定」、「意見」裡「在評論上顯示簡介圖片」功能勾選到「否」,這個 Hack 就會正常(而且禁用回應圖像,用 Blogger 小圖示),第二種則是拿掉上面提到「第二項檢查」的 if else 判斷句,這樣也可以搭配新的回應圖像功能使用。

本文引自 http://abintech.twidv.com/2006/11/author-comment-highlighting.html

沒有留言:

張貼留言