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