前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Emlog修改核心代码实现评论置顶功能

Emlog修改核心代码实现评论置顶功能

作者头像
用户8099761
发布2023-05-11 10:49:28
4580
发布2023-05-11 10:49:28
举报
文章被收录于专栏:私人订制

fee主题已经加入了置顶代码大家不需要再增加。只需要按照以下步骤进行即可,可能教程有点麻烦,如果不会就下载懒人包替换进去吧。

我用的是emlog6.0.1,其他版本的不要用懒人包。

教程开始

        1、执行sql语句创建评论置顶需要的字段

代码语言:javascript
复制
ALTER TABLE  `emlog_comment` ADD  `comment_top` ENUM(  'n',  'y' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  'n' AFTER  `hide`;

    2、找到路径文件/include/model/comment_model.php

        修改第38行中的

代码语言:javascript
复制
$sql = "SELECT * FROM ".DB_PREFIX."comment as a where $andQuery ORDER BY a.date ASC $condition";

    为

代码语言:javascript
复制
$sql = "SELECT * FROM ".DB_PREFIX."comment as a where $andQuery ORDER BY a.comment_top,a.date ASC $condition";

    然后参照图片在186行左右后面插入以下代码

修改核心代码截图.png
修改核心代码截图.png
代码语言:javascript
复制
function topComment($commentId) {
    $this->isYoursComment($commentId);
    $row = $this->db->once_fetch_array("SELECT gid FROM ".DB_PREFIX."comment WHERE cid=$commentId");
    $blogId = intval($row['gid']);
    $commentIds = array($commentId);
    /* 获取子评论ID */
    $query = $this->db->query("SELECT cid,pid FROM ".DB_PREFIX."comment WHERE gid=$blogId AND cid>$commentId ");
    while ($row = $this->db->fetch_array($query)) {
        if (in_array($row['pid'],$commentIds)) {
            $commentIds[] = $row['cid'];
        }
    }
    $commentIds = implode(',',$commentIds);
    $this->db->query("UPDATE ".DB_PREFIX."comment SET comment_top='y' WHERE cid IN ($commentIds)");
    $this->updateCommentNum($blogId);
}

function notopComment($commentId) {
    $this->isYoursComment($commentId);
    $row = $this->db->once_fetch_array("SELECT gid FROM ".DB_PREFIX."comment WHERE cid=$commentId");
    $blogId = intval($row['gid']);
    $commentIds = array($commentId);
    /* 获取子评论ID */
    $query = $this->db->query("SELECT cid,pid FROM ".DB_PREFIX."comment WHERE gid=$blogId AND cid>$commentId ");
    while ($row = $this->db->fetch_array($query)) {
        if (in_array($row['pid'],$commentIds)) {
            $commentIds[] = $row['cid'];
        }
    }
    $commentIds = implode(',',$commentIds);
    $this->db->query("UPDATE ".DB_PREFIX."comment SET comment_top='n' WHERE cid IN ($commentIds)");
    $this->updateCommentNum($blogId);
}

    然后在271行左右后面插入以下代码

代码语言:javascript
复制
case 'topcom':
foreach($comments as $val) {
    $this->topComment($val);
}
case 'notopcom':
foreach($comments as $val) {
    $this->notopComment($val);
}
核心代码修改.png
核心代码修改.png

        3、找到路径文件/admin/comment.php

        在58行之后插入以下代码

核心代码修改2.png
核心代码修改2.png
代码语言:javascript
复制
if ($action=='top') {
    $id = isset($_GET['id']) ? intval($_GET['id']) : '';
    $Comment_Model->topComment($id);
    $CACHE->updateCache(array('sta','comment'));
    emDirect("./comment.php?active_top=1");
}
if ($action=='notop') {
    $id = isset($_GET['id']) ? intval($_GET['id']) : '';
    $Comment_Model->notopComment($id);
    $CACHE->updateCache(array('sta','comment'));
    emDirect("./comment.php?active_notop=1");
}

    然后在98行左右后面插入以下代码

代码语言:javascript
复制
if ($operate == 'top') {
    $Comment_Model->batchComment('topcom', $comments);
    $CACHE->updateCache(array('sta','comment'));
    emDirect("./comment.php?active_top=1");
}
if ($operate == 'notop') {
    $Comment_Model->batchComment('notopcom', $comments);
    $CACHE->updateCache(array('sta','comment'));
    emDirect("./comment.php?active_notop=1");
}

    到这里整个核心代码都插入完成了,之后则是后台模板与前台模板的置顶操作按钮以及标识符等细节代码插入

        之后的操作小杰讲使用Emlog默认的后台模板以及前台主题进行插入,如有差异请自行调试插入。

        4、打开后台模板文件/admin/views/comment.php

        在第5行左右插入以下代码

后台模板提示.png
后台模板提示.png
代码语言:javascript
复制
<?php if(isset($_GET['active_top'])):?><span class="actived">置顶评论成功</span><?php endif;?>
<?php if(isset($_GET['active_notop'])):?><span class="actived">取消置顶成功</span><?php endif;?>

    在57行左右插入置顶标识符输出(这里小杰统一使用top文字进行标识,当然你们也可以替换成图片或者图标进行输出标识)

后台模板置顶标识符.png
后台模板置顶标识符.png
代码语言:javascript
复制
<?php if($value['comment_top']=='y'){echo '<b>TOP</b>';}?>

    在66左右插入以下代码

后台模板置顶按钮插入.png
后台模板置顶按钮插入.png
代码语言:javascript
复制
<?php if($value['comment_top'] == 'y'):?>
<a href="comment.php?action=notop&amp;id=<?php echo $value['cid']; ?>">取消置顶</a>
<?php else: ?>
<a href="comment.php?action=top&amp;id=<?php echo $value['cid']; ?>">置顶</a>
<?php endif;?>

    那么后台的置顶按钮,置顶操作提示,置顶标识符都已经插入完毕,之后我们打开前台模板文件/content/templates/default/module.php

        找到评论列表处

评论列表置顶标识符.png
评论列表置顶标识符.png

        插入以下代码

代码语言:javascript
复制
<?php if($comment['comment_top']=='y'){echo '<span>TOP</span>';}?>

    到这里Emlog修改核心代码实现评论置顶功能的操作就全部完成了。

        预览图

预览.png
预览.png

该功能只支持一级评论,二级评论无效,但是如果一级评论置顶后,跟随的二级评论也还是会跟在一级评论后面

教程转载杨小杰博客

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-4-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 教程开始
  •         预览图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档