TP5.0框架实现无限级评论回复功能的方法分析

 358 2019-10-14 23:50:04 艾奇站长网

TAG:thinkphp无限级评论

这篇文章主要介绍了TP5.0框架实现无限级评论回复功能的方法,结合实例形式分析了thinkPHP5.0框架下无限级评论回复功能相关的数据库、评论功能及界面布局实现方法,需要的朋友可以参考下。

本文实例讲述了TP5.0框架实现无限级评论回复功能的方法。分享给大家供大家参考,具体如下:


1、首先是数据表的设计:

create table zy_huifu
(
    code int auto_increment primary key, #回复代号
    puser varchar(50), #回复人员
    listcode int, #文章代号
    time varchar(50), #回复时间
    content text, #回复内容
    pcode int, #父级代号 0文章
    leval int, #级别 0顶级 1其它
    isok int #已读未读0未读1已读
);

评论和回复放在了一张表里面,为了在显示的时候做区分,评论作为顶级回复级别代号为0,其它的子级回复级别代号为1。

每个回复都有一个父级代号代表回复的哪一条评论,如果是直接评论的文章,父级代号设置为0 

2、接下来是在页面上显示评论和回复信息:


TP5.0框架实现无限级评论回复功能的方法分析(图1)


在控制器里面,我们需要去查询该文章下的所有评论及回复内容,并且注册到TP框架里面,这里调用了一个方法 CommentList() 来获取该文章下的评论回复:

//查询评论
$ahuifu = $this->CommentList($code,0);
$this->assign("ahuifu",$ahuifu);
CommentList() 方法如下,使用递归的方式将所有评论回复按照一定的顺序查询出来并且存储到数组里面: 
//读取评论列表的递归,code为文章代号,pcode为父级代号
public function CommentList($code,$pcode){
    $commentlist = array(); //存储评论数组
    $list = Db::table("zy_huifu")
    ->alias('a')
    ->where("listcode",$code)
    ->where("pcode",$pcode)
    ->join("zy_user b","a.puser = b.uid")
    ->select();
    foreach($list as $v){
        $commentlist[] = $v;
        //查询子回复
        $zi = $this->CommentList($code,$v["code"]);
        if(count($zi)){
            foreach($zi as $v1){
                $commentlist[] = $v1;
            }
        }
    }
    return $commentlist;
}

在view视图页面显示数据:

{volist name="ahuifu" id="vp"}
    {if condition="($vp.leval == 0)"}
    <div class="panel panel-default pl_list">
        <div class="panel-body pl_list_nr">
            <div class="show_nr_pl_tou">
                <img src="{$vp.img}" width="30" height="30" />  
                <span>{$vp.name}</span> 
                <span>{$vp.time|date="Y-m-d H:i:s",###}</span> 
                <span><button class="btn btn-primary btn-xs show_huifu_btn" pcode="{$vp.code}">回复</button></span>
            </div>
            <div class="show_nr_pl_nr">
                {$vp.content}
            </div>
        </div>
    </div>
    {else /}
    <div class="panel panel-default pl_list">
        <div class="panel-body pl_list_nr" style="margin-left:50px">
            <div class="show_nr_pl_tou">
                <img src="{$vp.img}" width="30" height="30" />  
                <span>{$vp.name}</span> 
                <span>{$vp.time|date="Y-m-d H:i:s",###}</span> 
                <span><button class="btn btn-primary btn-xs show_huifu_btn" pcode="{$vp.code}">回复</button></span>
            </div>
            <div class="show_nr_pl_nr">
                {$vp.content}
            </div>
        </div>
    </div>
    {/if}
{/volist}

3、添加回复及评论

添加评论的时候注意将父级代号pcode添加为0,将级别leval添加为0即可。

添加回复的时候将父级代号添加为要回复的这一条数据的主键,将级别leval添加为1即可。

具体实现比较简单,不赘述。


希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。



猜你喜欢
网站优化需要使用http协议吗?http协议对于seo优化有什么好处?

网站优化需要使用http协议吗?http协议对于seo优化有什么好处?

教程资讯 117 2019-10-07

https,现在我们打开网站的时候,经常会发现很多网站都在使用https协议,这对于一些还没有使用过https协议的站长...

TAG:https网站优化seo优化

WordPress主题教程,知更鸟主题评论留言等级美化教程,部署美化留言者等级图标

WordPress主题教程,知更鸟主题评论留言等级美化教程,部署美化留言者等级图标

教程资讯 252 2019-10-29

WordPress的评论区个人总是感觉不太美观,找了各种办法美化博客评论区,还找了很多相关教程,好多不支持知更鸟Begi...

TAG:WordPress主题知更鸟等级图标

Discuz!论坛教程之修改admin.php防止直接恶意访问

Discuz!论坛教程之修改admin.php防止直接恶意访问

教程资讯 241 2019-10-12

Discuz!论坛教程之修改admin.php防止直接恶意访问打开 admin.php 文件找到$d...

TAG:Discuz论坛教程

WordPress文章列表 添加文章内图片数量展示

WordPress文章列表 添加文章内图片数量展示

教程资讯 164 2019-09-30

对于一些图片的WP站来说在文章列表上可以展示文章内数量的功能还是非常不错的设计,小编也刚刚从君子不器上看到实现方法,所以...

TAG:WordPress文章图片