首先声明

代码并不是唯一,实现方式也不是唯一,这里博主只提供一种简单粗暴的教程思路。如果有更好可以方案就不需要查看此篇教程,至于代码效率,安全等问题不在下面的教程考虑范围内,只要能跑就行。好了,下面正式开始教程。

第一步:添加API接口地址(博主这里由于不喜欢使用异步加载数据就没有使用json格式数据传输)
function themeInit($archive){
$route = $archive->request->getPathInfo();
if (strpos($route, '/api/') !== false) {
        switch ($route) {

            case '/api/zx':

                zx($archive);

            break;

            case '/api/sx':

                sx($archive);

            break;
        }

}
}
第二步:添加走心评论精选操作功能(其实这里可以合并成一个函数,可以节省一部分重复查询问题)

1.这个函数主要用于给评论添加走心精选功能

/* 评论走心处理 */
function zx($archive){
    //评论id
    $coid = (int) $_GET['coid'];

    if (!$coid) {
        echo '<script>
            alert("评论ID无效,请刷新页面重试!");
            window.history.back(); // 返回上一页
          </script>';
        return;
    }
    
    
    //判断是否为登录 true 为已经登录
    $loginState = false;
    if (Typecho_Widget::widget('Widget_User')->hasLogin() && Typecho_Widget::widget('Widget_User')->pass('administrator')) {
        $loginState = true;
    }
    if (!$loginState) {
        echo '<script>
            alert("请先登录");
            window.history.back(); // 返回上一页
          </script>';
        return;
    }
    $db = Typecho_Db::get();
    if (!array_key_exists('zouxin', $data = $db->fetchRow($db->select()->from('table.comments')->where('coid = ?', $coid)))) {
        //  在文章表中创建一个字段用来存储点赞数量
        $db->query('ALTER TABLE `' . $db->getPrefix() . 'comments` ADD `zouxin` INT(10) NOT NULL DEFAULT 0;');
    }

    $updateRows = $db->query($db->update('table.comments')->rows(array('zouxin' => 1))->where('coid = ?', $coid));
    
    if($updateRows){
            echo '<script>
                alert("设为走心成功");
                window.history.back(); // 返回上一页
              </script>';
        }else{
            echo '<script>
                alert("设为走心失败");
                window.history.back(); // 返回上一页
              </script>';
        }

}

2.这个函数主要用于给评论取消走心精选功能

/* 评论走心处理 */
function sx($archive){
    //评论id
    $coid = (int) $_GET['coid'];

    if (!$coid) {
        echo '<script>
            alert("评论ID无效,请刷新页面重试!");
            window.history.back(); // 返回上一页
          </script>';
        return;
    }
    
    
    //判断是否为登录 true 为已经登录
    $loginState = false;
    if (Typecho_Widget::widget('Widget_User')->hasLogin() && Typecho_Widget::widget('Widget_User')->pass('administrator')) {
        $loginState = true;
    }
    if (!$loginState) {
        echo '<script>
            alert("请先登录");
            window.history.back(); // 返回上一页
          </script>';
        return;
    }
    $db = Typecho_Db::get();
    if (!array_key_exists('zouxin', $data = $db->fetchRow($db->select()->from('table.comments')->where('coid = ?', $coid)))) {
        //  在文章表中创建一个字段用来存储点赞数量
        $db->query('ALTER TABLE `' . $db->getPrefix() . 'comments` ADD `zouxin` INT(10) NOT NULL DEFAULT 0;');
    }

    $updateRows = $db->query($db->update('table.comments')->rows(array('zouxin' => 0))->where('coid = ?', $coid));
    
    if($updateRows){
            echo '<script>
                alert("取消走心成功");
                window.history.back(); // 返回上一页
              </script>';
        }else{
            echo '<script>
                alert("取消走心失败");
                window.history.back(); // 返回上一页
              </script>';
        }

}
第三步:在评论文件中添加相关操作了链接,重要提示:这一步需要自定义评论才可以使用,如果这就使用官方的默认评论格式无法添加下面的代码。下面的代码自己随便在自定义评论函数当中任意位置添加。(注意:博主这里实在不知道要用什么代码获取相关URL,就直接把URL写死了,如果在实际环境中出现url地址问题,可以自行更具提示调整)
<?php if (Helper::options()->zouxin && Typecho_Widget::widget('Widget_User')->hasLogin() && Typecho_Widget::widget('Widget_User')->pass('administrator')): ?>
                <span class="fg"> . </span>
                <?php if ($comments->zouxin == 1): ?>
                <a href="<?php Helper::options()->index("/api/sx?coid=$comments->coid"); ?>" class="btn btn-xs btn-info">取消走心</a>
                <?php else: ?>
                <a href="<?php Helper::options()->index("/api/zx?coid=$comments->coid"); ?>" class="btn btn-xs btn-success">设为走心</a>
                <?php endif; ?>
                <?php endif; ?>
第四步:自定义一个独立页面模板,然后后台创建独立页面选择你相应的模板即可。(重要提示:这里博主也不会使用官方自带的分页代码,索性就不使用,反正无伤大雅。)

此处内容需要评论 回复 后方可阅读。