php输出楼层号,ZBlog开发中实现评论楼层号正确输出的具体方法代码

在官方的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,浪费资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 一键登录插件,FastAdmin一键管理插件

FastAdmin中的插件可以通过命令行快速的进行安装、卸载、禁用和启用。准备工作请确保你的FastAdmin已经能正常登录后台请确保php所在的目录已经加入到系统环境变量,否则会提示找不到该命令打开命令行控制台进入到FastAdmin根目录,也就是think文件所在的目…

java代码复数包括虚部和实部,Java中编写Applet程序验证复数类(在问题补充中)实现接收用户输入的复数的实部和虚部,计算复数与复数,复数与实数的加减,乘除操作...

2008-11-16 回答我把方法给你写出来,测试程序的主函数你就自己写把/*** Cigarette ash Inc.* author 烟灰* version 1.00 2008/6/7*///编写一个类ComplexNumber实现复数的运算:public class ComplexNumber {double m_dRealPart;double m_dImaginPart;public Complex…

matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...

很简单的方程求解程序,调用mulDNewton函数求解,之前在Matlab 2011b版本上运行成功,现在在Matlab 2018a版本上总是出错,程序代码和出错的提示如下,mulDNewton函数代码也如下。请教大神该程序应该如何修改,请…

matlab实验函数编写与程序设计,matlab实验四函数编写与程序设计.doc

实验四:函数编写与程序设计一、实验目的1 . 掌握M文件的创建。2.掌握函数的编写规则。3.掌握函数的调用。4 . 掌握基本的输入输出函数以及显示函数的用法。5.会用Matlab程序设计实现一些工程算法问题。二、实验内容1 . 设计程序&a…

php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?

刚刚发现的一个很奇怪的现象下面这个数组我设置为类的属性,其中SYSTEM_LIB为我定义的常量final class Application { public static $_libarray( route > SYSTEM_LIB./lib_route.php, mysql > SYSTEM_LIB./lib_mysql.php, );}但最终运行时报错为Parse error: …

php比例算法,图片比例转换算法

项目要求将图片上传的任意图片按固定比例进行转换,没办法自己就写了一个,代码如下:public function cropImage($imagePath, $savePath, $scale){$imgHandler $this->model(Picture_Model_Image);$imgHandler->setSrcImg($imagePath);$…

oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法

由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,OS REDHAT 5.4数据库无归档,无备份 [oraclehuna由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,,O…

php sqlite id自增,Android sqlite设置主键自增长的方法教程

今天在APP中增加一个添加项目的功能,项目的主键为整数,要让它自增长。既然要自增长,那么在代码里面就不用给id字段赋值。但是调试的时候发现不行,提示主键重复,观察了输出,不赋值的话,id默认为0…

oracle flashback 深入研究,oracle 之flashback 深入研究。

oracle 之flashback 深入研究。今天是2013-08-24,开始进行oracle flashback 内部原理研究,记录一下笔记。SQL> startupORACLE instance started.Total System Global Area 405020672 bytesFixed Size 2213816 bytesVariable Size …

linux删除了mount目录,Linux记录-分区(df/fdisk/mount/umount/fuser)

1.查看磁盘挂载(df -TH)2.卸载umount /dev/vdb13.查杀用户进程(fuser -m -v -i -k /dev/vdb1)4.再次卸载umount /dev/vdb1,并查看挂载信息df -TH5.删除分区(fdisk /dev/vdb m d 1 d w)6.查看分区(fdisk -l,没有Start-End磁盘分区表示可用)7.添加分区(fdi…

linux中pak命令,如何在Linux系统中安装Flatpak

选择你的Linux发行版快速安装Flatpak及使用Flatpak。支持Ubuntu、Fedora、Red Hat Enterprise Linux、Deepin、Endless OS、Linux Mint、openSUSE、Arch、Debian、CentOS、Gentoo、Solus、Alpine、Mageia、Pop!_OS、elementary OS、Raspbian。以下为你逐一介绍如何在这些Linux版…

linux服务器组件有哪些,推荐几个linux服务器面板

天兴工作室自zblog从asp换到了php就一直在玩php的程序,php的程序肯定是搭配linux系统更方便一些。现在的云服务器也都不贵几百块钱一年,就算是个人也玩得起。当然linux服务器和windows服务器的用法完全是两样:windows系统就跟本地电脑一样操作…

ubuntu 改linux密码忘了怎么办,Ubuntu 14.04忘记root密码的解决方法

电脑20多天没用,忘记Ubuntu 14.04 root密码了,下面是在网上找到的一个解决办法,其它的和这个也大概相同。因为其中有些缺漏,没能给我解决问题。通过分析最终问题还是解决了,现解决方案的关键点记录一下。希望能方便到其…

drcom linux怎么运行,Drcom_linux

64位ubuntu设置32位环境sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0//目前自己用到sudo apt-get install libsm6:i386sudo apt-get install libxi6:i386sudo apt-get install libxrender1:i386sudo apt-get install libxrandr2:i386sudo apt-get install libxcur…

linux设置历史命令保留数目限制,linux下修改history命令保存条数

在linux系统下、history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history,但只保留1000条命令(这个是由默认的shell变量所设置了的)但是为什么我们执行history命令后会出现大于1000条的历…

虚拟机linux如何扩大内存吗,如何扩大Vmware虚拟机中Ubuntu系统磁盘空间的方法

在虚拟机里安装系统,有时即会遇到初始分配的磁盘空间不够用的情况。如果是windows系统,则直接在虚拟机选项里扩容即可,但linux系统则没有这么简单。下面是整理的vmware下ubuntu系统磁盘扩容的方法与步骤,仅供参考。提示&#xff1…

linux lvm lv扩充--虚拟机,虚拟机新增磁盘后lvm下的lv扩容

系统环境:CentOS 6.5_X64一、识别新增磁盘:ls /sys/class/fc_host (会看到host1,host2...hostN,对每个host进行如下操作)echo "- - -" > /sys/class/scsi_host/host1/scan (中间是有空格的)!!echo "- - -" > /sys/class/scsi_…

linux7yum安装mysql,CentOS7 使用yum安装mysql

1、安装libaio,yum install libaio2、卸载mariadbyum remove mariadb-libs-5.5.41-2.el7_0.x86_643、下载mysql yumrepositorywget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm4、添加Mysql yumrepository到系统列表的中,执行…

linux读整个文件内容,Linux查看整个文件

Linux查看整个文件使用cat命令显示文本文件的内容使用cat命令可以显示文本文件的内容。cat后面可以不加任何选项,直接跟文件名功能说明:查看某个文件的内容###cat命令语法cat [参数] [文件]选项与参数:-A:显示所有的内容&#xff…

linux终端怎么设置monaco,Monaco Editor 使用指南

为什么要写这篇文章?最近开发了一个简单的在线代码编辑器,基于 Monaco Editor 实现,没有了解过 Monaco 的人可能不知道,我们常用的 VS Code 也是基于它实现的~回到正题,Monaco Editor 有一份完整的官方文档&#xff0c…