ptootcms在列表页添加评论功能

最近需要在列表页里添加文章评论,大概是图片这个样子。

ptootcms在列表页添加评论功能

 

现在还处于静态的,那功能怎么实现呢?要知道,文章评论调用当前只能在内容详情页可用。

 

1,在后台系统里修改,配置参数 》会员配置里修改配置,评论功能开启,评论验证码关闭,评论审核关闭。

ptootcms在列表页添加评论功能

 

2,在ExtLabelController.php添加方法。

路径:/apps/home/controller/IndexController.php

作用:该文件的作用之一,是将已经写好的功能添加到对应的单页或列表页中。

修改:大约在249行,在“$content = $this->parser->parserAfter($content); // CMS公共标签后置解析”的下面添加新的功能。

// 列表
    private function getListPage($sort)
    {
        // 调用栏目语言与当前语言不一致时,自动切换语言
        if ($sort->acode != get_lg() && Config::get('lgautosw') !== '0') {
            cookie('lg', $sort->acode);
        }
        if ($sort->listtpl) {
            $this->checkPageLevel($sort->gcode, $sort->gtype, $sort->gnote);
            $content = parent::parser($this->htmldir . $sort->listtpl); // 框架标签解析
            $content = $this->parser->parserBefore($content); // CMS公共标签前置解析
            $pagetitle = $sort->title ? "{sort:title}" : "{sort:name}"; // 页面标题
            $content = str_replace('{pboot:pagetitle}', $this->config('list_title') ?: ($pagetitle . '-{pboot:sitetitle}-{pboot:sitesubtitle}'), $content);
            $content = str_replace('{pboot:pagekeywords}', '{sort:keywords}', $content);
            $content = str_replace('{pboot:pagedescription}', '{sort:description}', $content);
            $content = $this->parser->parserPositionLabel($content, $sort->scode); // CMS当前位置标签解析
            $content = $this->parser->parserSortLabel($content, $sort); // CMS分类信息标签解析
            $content = $this->parser->parserListLabel($content, $sort->scode); // CMS分类列表标签解析
            $content = $this->parser->parserAfter($content); // CMS公共标签后置解析
	    $content = $this->parser->parserCommentLabel($content); // 文章评论
        } else {
            error('请到后台设置分类栏目列表页模板!');
        }
        $this->cache($content, true);
    }

  

添加的代码在该文件的其他地方也能看到:

$content = $this->parser->parserCommentLabel($content); // 文章评论

 

3,ExtLabelController.php添加新的方法,统计当前文章评论数。

路径:/apps/home/controller/ExtLabelController.php

修改:大约在35行,在“private function test()”的方法下面添加新的方法。

//获得评论数量
private function getcommentrows()
{  
    $pattern = '/\{getcommentrows\s?\(([^\}]+)\)\}/';
    if (preg_match($pattern, $this->content, $matches)) {
        $this->content = preg_replace_callback(
        $pattern,
        function($matches){
            $extfield = $matches[1];
            $result = \core\basic\Db::table('`ay_member_comment` a ')->field('count(*) as count')
            ->where("a.contentid='".$extfield."' AND pid = 0 AND a.status=1")
            ->find();
            $value = $result->count;
            return $value;
                     
        },
        $this->content);
    }
}

 

然后在run()方法里面执行该方法

public function run($content)
{
    // 接收数据
    $this->content = $content;
    
    // 执行个人自定义标签函数
    $this->test();
    
    //获得评论数
    $this->getcommentrows();
    
    // 返回数据
    return $this->content;
}

 

4,在列表页模板上添加代码

{pboot:list}
<div class="col-xs-12 pad0 {pboot:if('[list:n]'>'0')}mt15{/pboot:if}">
    
    <div class="bottom mt15">
        <form action="/comment/add/?contentid=[list:id]"  method="post">
            <div class="clear-fix flex fayan">
                <input type="text"  name="comment" id="comment" value="" placeholder="参与评论" />
                <input type="submit" id="" name="" value="评论" />
            </div>
        </form>
        <div class="pinglun">
            {pboot:comment contentid=[list:id] page=0}
            <div class="plitem"><span>[comment:nickname] : </span>[comment:comment]</div>
            {/pboot:comment}
            <div class="plitem"><a href=""><span>查看全部{getcommentrows([list:id])}条评论</span></a></div>
        </div>
    </div>
    
</div>
{/pboot:list}

 

发布评论的表单是

<form action="/comment/add/?contentid=[list:id]"  method="post">
	<div class="clear-fix flex fayan">
		<input type="text"  name="comment" id="comment" value="" placeholder="参与评论" />
		<input type="submit" id="" name="" value="评论" />
	</div>
</form>

  

读取评论的表单是

{pboot:comment contentid=[list:id] page=0}
<div class="plitem"><span>[comment:nickname] : </span>[comment:comment]</div>
{/pboot:comment}

 

pboot:comment 标签需要参数page=0

最后多少条评论用{getcommentrows([list:id])}这个自定义的标签。

ptootcms在列表页添加评论功能

 



最后的效果不错,虽然功能还暂时不是很全,还可以拓展评论点赞,回复评论的功能。

上一篇:使用pycharm专业版(支持远程调试及运行)如何运行mpi的代码呢???(mpi4py的代码)


下一篇:使用Sinopia搭建私有npm仓库