“织梦顶一下”功能是DedeCMS(织梦内容管理系统)中常见的用户互动模块,允许访客对文章或内容进行点赞支持,通过调用该功能可以有效提升网站的用户参与度和内容活跃度,对增强用户体验、引导用户行为具有积极作用,以下从功能原理、调用方法、参数配置、注意事项及应用场景等方面进行详细说明,帮助网站管理员正确实现并优化该功能。

织梦CMS顶一下功能如何调用?实现步骤与方法详解?

功能原理与作用

“顶一下”功能的核心是通过数据库记录用户对内容的点赞行为,前端页面通过调用接口实时显示点赞数量,并支持用户点击提交点赞数据,其作用主要体现在:

  1. 提升用户互动:鼓励访客参与内容评价,形成“点赞-反馈”的良性互动循环,增强用户粘性; 筛选参考**:高点赞内容可作为优质内容推荐,辅助用户快速找到有价值的信息;
  2. SEO间接优化:用户互动数据(如点赞数)可能被搜索引擎视为内容质量的参考信号,有助于提升页面权重。

调用方法与代码实现

织梦系统中,“顶一下”功能的调用主要通过模板标签和数据库交互实现,具体步骤如下:

数据库准备

默认情况下,织梦的“顶一下”功能依赖dede_stow数据表(存储点赞记录),表结构包含以下关键字段:

  • id:主键,自增ID;
  • aid:关联的文章ID;
  • ip:点赞用户的IP地址(用于防重复提交);
  • dtime:点赞时间。
    若表中无此表,可通过织梦后台“系统”-“SQL命令行工具”执行以下SQL创建(织梦默认已包含,无需手动创建):
    CREATE TABLE `dede_stow` (
    `id` int(11) NOT NULL auto_increment,
    `aid` int(11) NOT NULL default '0',
    `ip` varchar(20) NOT NULL default '',
    `dtime` int(11) NOT NULL default '0',
    PRIMARY KEY  (`id`),
    KEY `aid` (`aid`),
    KEY `ip` (`ip`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

模板标签调用

在织梦模板文件(如文章详情页article_article.htm)中,可通过以下标签实现“顶一下”功能的前端显示和调用:

织梦CMS顶一下功能如何调用?实现步骤与方法详解?

(1)显示点赞按钮与数量

<div class="digg">
  <div class="diggbox digg_good" onclick="JavaScript:postDigg('good',{dede:field.id/})">
    <a href="javascript:;" class="digg_link">顶一下</a>
    <span class="digg_num">{dede:field.goodpost/}</span>
    <span class="digg_percent">({dede:field.goodper/}%)</span>
  </div>
  <div class="diggbox digg_bad" onclick="JavaScript:postDigg('bad',{dede:field.id/})">
    <a href="javascript:;" class="digg_link">踩一下</a>
    <span class="digg_num">{dede:field.badpost/}</span>
    <span class="digg_percent">({dede:field.badper/}%)</span>
  </div>
</div>
  • {dede:field.goodpost/}:显示当前文章的点赞总数;
  • {dede:field.goodper/}:显示点赞占比(需配合后端计算);
  • {dede:field.id/}:当前文章ID,用于关联点赞数据。

(2)JavaScript交互代码

在模板文件中需引入织梦自带的JS交互脚本(通常位于/include/dedeajax2.js),实现点击提交和局部刷新:

<script type="text/javascript" src="{dede:global.cfg_cmspath/}/include/dedeajax2.js"></script>
<script>
function postDigg(ftype,aid){
  var taget_obj = document.getElementById('newdigg');
  var saveid = GetCookie('diggid');
  if(saveid != null){
    var saveids = saveid.split(',');
    var hasid = false;
    for(i=0;i<saveids.length;i++){
      if(saveids[i]==aid && hasid==false){ hasid = true; }
    }
    if(hasid){ alert('您已经顶过了哦!'); return false; }
  }
  var url = "{dede:global.cfg_cmspath/}/plus/digg_ajax.php?action="+ftype+"&id="+aid;
  var myajax = new DedeAjax(taget_obj,false,false,'','','');
  myajax.SendGet2(url);
  DedeXHTTP = null;
}
</script>

后端接口说明

点赞提交的核心逻辑由/plus/digg_ajax.php文件处理,该文件接收前端传递的action(good/bad)和id(文章ID),通过以下步骤完成数据处理:

  • 验证参数:检查文章ID是否存在、请求是否合法;
  • 防重复提交:通过Cookie记录用户点赞状态(diggid),同一IP/用户在登录状态下(织梦可关联会员系统)限制重复点赞;
  • 更新数据:向dede_stow表插入点赞记录,同时更新文章表dede_archives中的scores(积分)或自定义点赞字段(需提前配置);
  • 返回结果:通过AJAX返回点赞成功/失败状态及最新数量,前端动态显示。

参数配置与扩展

自定义显示样式

通过CSS调整“顶一下”按钮的样式,

.diggbox {
  float: left;
  width: 60px;
  height: 60px;
  border: 1px solid #ddd;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
}
.diggbox a.digg_link {
  display: block;
  padding-top: 10px;
  color: #333;
  text-decoration: none;
}
.diggbox span.digg_num {
  display: block;
  font-size: 20px;
  font-weight: bold;
  color: #f60;
}

限制重复点赞

织梦默认通过Cookie限制同一设备24小时内重复点赞,若需升级为IP+会员双限制,可修改digg_ajax.php中的验证逻辑,

织梦CMS顶一下功能如何调用?实现步骤与方法详解?

// 检查会员登录状态(需开启会员功能)
if($cfg_ml->IsLogin()){
  $mid = $cfg_ml->M_ID;
  $row = $dsql->GetOne("SELECT * FROM `dede_stow` WHERE aid='$aid' AND mid='$mid'");
  if($row) die('您已经顶过了哦!');
}
// 检查IP限制
$ip = GetIP();
$row = $dsql->GetOne("SELECT * FROM `dede_stow` WHERE aid='$aid' AND ip='$ip'");
if($row) die('您已经顶过了哦!');

数据统计与展示

若需在列表页或首页显示文章点赞数,可通过自定义SQL标签实现,例如在列表模板list_article.htm中添加:

{dede:sql sql="SELECT COUNT(*) as diggCount FROM dede_stow WHERE aid=~id~"}
  点赞数:[field:diggCount/]
{/dede:sql}

注意事项与优化建议

  1. 防刷机制

    • 限制单IP每日点赞次数(通过digg_ajax.php判断当日IP点赞数量,超限则拒绝);
    • 对异常高频点赞行为进行拦截(如短时间内同一IP大量请求,可触发验证码或临时封禁)。
  2. 性能优化

    • 避免在首页等高并发页面直接查询dede_stow表,可通过定时任务将点赞数同步到文章表的缓存字段(如click或自定义goodpost),减少数据库压力;
    • 对AJAX请求进行缓存,相同文章的点赞结果可在前端缓存1-5秒,避免重复请求。
  3. 用户体验

    • 点击反馈需即时响应(如按钮变色、数字动态增长),避免页面刷新导致跳转;
    • 对未登录用户提示登录后再点赞(若开启会员系统),引导用户注册。
  4. 数据安全

    • 对提交的aid参数进行过滤,防止SQL注入(织梦默认已做基础处理,但建议二次验证);
    • 定期清理dede_stow表中的过期数据(如按月清理历史记录),避免表过大影响查询效率。

应用场景

  • 文章详情页:最常用场景,在文章内容下方显示“顶一下”按钮,鼓励读者对优质内容表达支持;
  • 列表页/栏目页:对热门文章显示“高赞”标签,吸引访客点击;
  • 会员中心:展示用户的点赞历史和被赞文章列表,增强用户成就感;
  • 专题页:对专题内的优质内容进行点赞排序,辅助用户筛选。

引用说明 基于DedeCMS V5.7版本官方开发文档及社区实践整理,部分代码参考织梦官方模板标签手册及“织梦梦网”技术社区案例,关于数据库结构及AJAX交互逻辑的详细说明,可进一步查阅织梦官方《开发者手册》或访问织梦官网技术支持板块。

相关内容

回顶部