在官方的wiki中,針對評論部分的標簽調用是集成了評論樓號的,即標簽{$comment.FloorID}。這個標簽是不計算子評論的,所以并不是采用key直接計算出的樓號。經過測試,我們會發現,這個樓號存在一定BUG!具體表現為:ZblogPHP如果開啟了評論倒序,樓號依然是從輸出的第一條開始計算樓層,這樣并不方便大家的使用,作為一名開發者,如果使用這樣的代碼來開發zblog主題或插件,明顯會讓人覺得很不專業!下面我就針對這一問題來給大家一步一步說明下怎樣能正確的實現ZBLOG的正/倒序評論輸出樓號!
ZBlog開發中實現評論的樓層號正確輸出的具體方法代碼
廢話不多說,我們以默認主題的相關文件為例,找到主題文件夾下template/comments.php文件
第一步,找到評分輸出的循環位置:
{foreach $comments as $key => $comment}
{template:comment}
{/foreach}第二步,計算出當前文章(或頁面)的一級評論的總數:
{php}
$where = array(array('=', 'comm_LogID', $article->ID),array('=', 'comm_RootID','0'),array('=', 'comm_IsChecking', 0));
$_comments = $zbp->GetCommentList('*',$where,null,null,null);
$commentsRootSum = count($_comments)+1;
{/php}上面的變量$commentsRootSum就是一級評論的總數。
第三步,為每個評論賦倒序樓號值:
{foreach $comments as $key => $comment}{$commentRootFloor=$commentsRootSum-$comment.FloorID}{template:comment}{/foreach}最后,在你想要的位置輸出樓號,(這里要換到單條評論的模板,默認主題為template/comment.php)添加代碼即可:
{if $comment.Level=='1'}{$commentRootFloor}樓{/if}上面的代碼需要在開啟倒序以后才能正確輸出,為了保證正序倒序都能正常,所以調改一下代碼為:
{php}
if($option['ZC_COMMENT_REVERSE_ORDER']=='1') {
$where = array(array('=', 'comm_LogID', $article->ID),array('=', 'comm_RootID','0'),array('=', 'comm_IsChecking', 0));
$_comments = $zbp->GetCommentList('*',$where,null,null,null);
$commentsRootSum = count($_comments)+1;
}else{
$commentsRootSum = 0;
}
{/php}
{foreach $comments as $key => $comment}
{$commentRootFloor=abs($comment.FloorID-$commentsRootSum)}
{template:comment}
{/foreach}好了,現在就能夠正常的倒序輸出評論的樓號了,不過只針對一級評論做了,如要對子評論排樓,就自己去判斷修改吧。
注意:我們這里要把查詢的代碼放在循環的外面,不然要出現重復Query,浪費資源。
皖公網安備 34162202000270號