dede星星评分插件怎么安装使用?

99ANYc3cd6
预计阅读时长 28 分钟
位置: 首页 DEDE建站 正文

插件简介

星星评分插件(也常被称为顶踩或评分插件)通常包含两个核心功能:

dede 星星评分插件
(图片来源网络,侵删)
  1. 前端显示页面(如文章详情页)显示一组星星(通常是5颗),用户可以点击进行评分。
  2. 后端处理:记录每个用户的评分,并计算内容的平均分或总得分,在列表页或管理后台显示。

市面上有很多版本的星星评分插件,但其核心原理和安装方法大同小异,下面我将介绍一种通用且稳定的安装和使用方法,适用于大多数 DedeCMS 5.7 及 7.x 版本。


安装步骤(通用版)

假设你已经下载了一个星星评分插件,里面通常包含以下文件:

  • star.jpgimages/ 目录:星星的图片文件。
  • score.php:处理评分请求的后台脚本。
  • install.phpsql/ 目录:包含数据库导入脚本。
  • 一些模板文件(.htm)。

以下是详细的安装步骤:

步骤 1:上传文件

通过 FTP 或主机管理面板,将插件文件上传到你的 DedeCMS 根目录下。

dede 星星评分插件
(图片来源网络,侵删)
  • star.jpg 图片上传到 /images/ 目录下。
  • score.php 上传到根目录下。
  • 如果有 install.php,也上传到根目录。
  • 如果有模板文件(如 score.htm),根据其说明上传到 /templets/default/ 或你当前使用的模板目录下。

步骤 2:导入数据库

这是最关键的一步,用于在数据库中创建存储评分数据的表。

  1. 打开 install.php:用记事本或代码编辑器打开插件包里的 install.php 文件。
  2. 找到 SQL 语句:在文件中,你会找到类似以下的 CREATE TABLE 语句:
    CREATE TABLE `dede_starscore` (
      `id` int(11) NOT NULL auto_increment,
      `aid` int(11) NOT NULL default '0',
      `ip` varchar(20) NOT NULL default '',
      `score` tinyint(1) NOT NULL default '0',
      `addtime` int(10) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `aid` (`aid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    • 注意:如果你的表前缀不是 dede_dy_),你需要手动修改这个语句,将所有的 dede_ 替换成你自己的表前缀。
  3. 执行 SQL
    • 方法一(推荐):登录你的网站数据库管理工具(如 phpMyAdmin)。
    • 选择你的 DedeCMS 数据库。
    • 点击“SQL”选项卡,将修改好的 CREATE TABLE 语句粘贴进去,然后执行。
    • 方法二:如果插件提供了 .sql 文件,可以直接在 phpMyAdmin 中导入该文件。

步骤 3:修改模板文件

这是让星星评分显示在前端的步骤,你需要修改两个模板文件。

  1. 修改文章列表页模板 (list_artlist.htm 或类似文件) 在你想显示评分的位置(例如文章标题旁边或摘要下面)加入以下代码:

    <span class="stars">
        [field:id function="GetStarScore(@me)" /]
    </span>
    • 这里的 GetStarScore 是一个自定义函数,我们需要在下一步创建它。
  2. 修改文章详情页模板 (article_article.htm) 在文章内容下方或评论区域,加入用户交互的星星评分代码:

    dede 星星评分插件
    (图片来源网络,侵删)
    <div class="score_area">
        <strong>为这篇文章评分:</strong>
        <ul class="star_list">
            <li><a href="javascript:doscore(1, [field:id/]);" title="1分">1</a></li>
            <li><a href="javascript:doscore(2, [field:id/]);" title="2分">2</a></li>
            <li><a href="javascript:doscore(3, [field:id/]);" title="3分">3</a></li>
            <li><a href="javascript:doscore(4, [field:id/]);" title="4分">4</a></li>
            <li><a href="javascript:doscore(5, [field:id/]);" title="5分">5</a></li>
        </ul>
        <div class="score_result">
            当前平均分:<span id="score_avg">[field:id function="GetStarScore(@me)" /]</span> 分
            (共有 <span id="score_count">[field:id function="GetScoreCount(@me)" /]</span> 人评分)
        </div>
    </div>
    • 这里的 doscore 是一个 JavaScript 函数,用于调用后台的 score.php

步骤 4:修改 PHP 核心文件

这是实现功能逻辑的最后一步。

  1. include/helpers/extend.helper.php 文件末尾添加自定义函数 这个文件是专门用来存放自定义函数的,在文件最后,添加以下两个函数:

    // 获取文章的平均星星评分
    if ( ! function_exists('GetStarScore'))
    {
        function GetStarScore($aid)
        {
            global $dsql;
            $row = $dsql->GetOne("SELECT AVG(score) as avgscore FROM `#@__starscore` WHERE aid='$aid'");
            $score = empty($row['avgscore']) ? 0 : number_format($row['avgscore'], 1);
            // 返回星星的HTML显示
            $str = '';
            $full_star = floor($score);
            $half_star = ($score - $full_star) >= 0.5 ? 1 : 0;
            for($i=1; $i<=5; $i++){
                if($i <= $full_star){
                    $str .= '<img src="/images/star_full.jpg" />';
                }elseif($i == $full_star + 1 && $half_star){
                    $str .= '<img src="/images/star_half.jpg" />';
                }else{
                    $str .= '<img src="/images/star_null.jpg" />';
                }
            }
            return $score . ' ' . $str;
        }
    }
    // 获取文章的评分人数
    if ( ! function_exists('GetScoreCount'))
    {
        function GetScoreCount($aid)
        {
            global $dsql;
            $row = $dsql->GetOne("SELECT COUNT(*) as count FROM `#@__starscore` WHERE aid='$aid'");
            return $row['count'];
        }
    }
    • 注意:上面的函数代码假设你有 star_full.jpg, star_half.jpg, star_null.jpg 三张图片,如果你只有一张 star.jpg,可能需要修改函数逻辑,或者使用 CSS 来实现星星的点亮效果,为了简化,很多插件会直接返回数字分数。
  2. 创建 score.php 文件 如果插件没有提供,你可以在根目录下手动创建一个 score.php 文件,内容如下:

    <?php
    require_once (dirname(__FILE__) . "/include/common.inc.php");
    require_once DEDEINC.'/arc.partview.class.php';
    // 验证是否为AJAX请求
    if(empty($dopost)) $dopost = '';
    if($dopost == 'save')
    {
        $aid = isset($aid) ? intval($aid) : 0;
        $score = isset($score) ? intval($score) : 0;
        $ip = GetIP();
        if($aid > 0 && $score > 0 && $score <= 5)
        {
            // 检查是否已经评分(防止重复评分)
            $row = $dsql->GetOne("SELECT id FROM `#@__starscore` WHERE aid='$aid' AND ip='$ip'");
            if(is_array($row))
            {
                echo json_encode(array('success'=>0, 'msg'=>'您已经评过分了!'));
                exit();
            }
            // 插入评分数据
            $inquery = "INSERT INTO `#@__starscore`(aid,ip,score,addtime) VALUES ('$aid','$ip','$score','" . time() . "'); ";
            if($dsql->ExecuteNoneQuery($inquery))
            {
                // 返回成功和最新的平均分
                $row = $dsql->GetOne("SELECT AVG(score) as avgscore FROM `#@__starscore` WHERE aid='$aid'");
                $avg_score = number_format($row['avgscore'], 1);
                echo json_encode(array('success'=>1, 'msg'=>'评分成功!', 'score'=>$avg_score));
                exit();
            }
        }
        echo json_encode(array('success'=>0, 'msg'=>'评分失败!'));
        exit();
    }
    ?>
  3. 在文章详情页底部引入 JavaScriptarticle_article.htm 模板的底部,</body> 标签之前,添加以下 JavaScript 代码,用于处理 doscore 函数和 AJAX 请求:

    <script type="text/javascript">
    function doscore(score, aid)
    {
        // 使用 jQuery 的 AJAX 方法,如果页面没有加载 jQuery,需要先引入
        jQuery.post("/score.php", {dopost:'save', aid:aid, score:score}, function(data){
            var data = jQuery.parseJSON(data);
            if(data.success == 1)
            {
                alert(data.msg);
                // 更新页面上的平均分显示
                jQuery("#score_avg").html(data.score);
                // 更新评分人数
                jQuery("#score_count").html(parseInt(jQuery("#score_count").html()) + 1);
            }
            else
            {
                alert(data.msg);
            }
        });
    }
    </script>

注意事项与常见问题

  1. 表前缀问题:这是最常见的问题,如果你的数据库表前缀不是默认的 dede_,所有 SQL 语句和 PHP 代码中的表名都必须修改。
  2. jQuery 依赖:上面的 AJAX 示例使用了 jQuery,如果你的模板没有引入 jQuery 库,请先在页面头部添加:
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  3. CSS 样式:星星的显示效果通常需要 CSS 来美化,你可以在模板的 CSS 文件中添加样式,让星星横向排列、去掉列表样式等。
  4. 防刷机制:简单的 ip 限制可以防止大部分用户重复评分,但无法防止专业刷分,如果需要更强的防刷机制,可以考虑结合 Cookie 或会员登录状态。
  5. 插件版本:不同的插件版本,文件结构和代码可能略有不同,请仔细阅读你下载的插件包里的 readme.txt说明.txt 文件,按照其特定步骤进行操作。

更简单的替代方案:使用 DedeCMS 官方“顶踩”功能

如果你的需求仅仅是“顶”和“踩”,而不需要复杂的星级评分,DedeCMS 自带的顶踩功能更简单,无需安装插件。

  1. 开启功能:在后台“系统” -> “系统基本参数” -> “核心设置”中,找到“是否启用顶踩功能”,选择“是”。
  2. 修改模板:在需要显示顶踩的地方(如 article_article.htm)加入:
    {dede:field.goodpost/} / {dede:field.badpost/}
  3. 修改 article_add.php:在发布文章时,系统会自动记录顶踩数。

这个方法虽然简单,但不够美观,且功能单一。


安装 DedeCMS 星星评分插件的核心步骤可以概括为: 上传文件 -> 导入数据库 -> 修改模板(添加标签) -> 修改PHP(添加函数和逻辑)

虽然步骤较多,但只要细心,按照教程一步步操作,完全可以成功安装,安装成功后,你的网站互动性将得到显著提升。

-- 展开阅读全文 --
头像
dede后台密码忘了怎么办?
« 上一篇 今天
织梦首页导航点击不了,如何解决?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]