在网站建设中,实现点赞功能是一个常见的需求。以下是如何在DedeCMS中添加点赞功能的详细步骤,包括SQL语句、PHP代码和前端样式设计。 首先,我们需要在数据库中进行一些修改。通过执行以下SQL语句,我们可以在`dede_archives`表中新增一个名为`zan`的字段,用于记录文章的点赞次数。

ALTER TABLE dede_archives ADD zan int(11) NOT NULL DEFAULT '0' AFTER weight;
接下来,为了防止重复点赞,我们需要创建一个新的表`dede_zan`,用来存储每个点赞的IP地址和对应的文档ID(aid)。

CREATE TABLE IF NOT EXISTS `dede_zan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `aid` int(11) NOT NULL,
  `ip` varchar(40) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
然后,打开`include/extend.func.php`文件,并添加一个函数来获取文章的点赞数。

function zan($aid) {
    global $dsql;
    $row = $dsql->GetOne("Select id,zan From dede_archives where id='" . $aid . "'");
    return $row['zan'];
}
接下来,在模板文件`templets/default/article_article.htm`中加入相应的CSS样式,以美化点赞按钮。

.zan p{
background:#000; opacity:.8;filter:alpha(opacity=80);
}
.zan p a{
padding-left:30px; height:24px; background:url(/images/heart.png) no-repeat 4px -1px;
color:#fff; font-weight:bold; font-size:14px
}
.zan p a:hover{
background-position:4px -25px;text-decoration:none
}
此外,还需要引入jQuery库并添加JavaScript代码,以便处理点赞请求。

$(function(){
    $("p a").click(function(){
        var zan = $(this);
        var id = zan.attr("rel");
        zan.fadeOut(300);
        $.ajax({
            type:"POST",
            url:"/zan.php",
            data:"id="+id,
            cache:false,
            success:function(data){
                zan.html(data);
                zan.fadeIn(300);
            }
        });
        return false;
    });
});
在HTML部分,添加如下代码片段,用于显示点赞按钮。
最后,创建一个名为`zan.php`的文件并放置在网站根目录下,用于处理后端逻辑。

require_once (dirname(__FILE__) . "/include/common.inc.php");
$ip =getip();
$id = $_POST@['id'];
if(!isset($id) || empty($id)) exit;

$dsql->SetQuery("SELECT ip FROM dede_zan WHERE aid='".$id."' and ip='$ip'");
$dsql->Execute();
$count = $dsql->GetTotalRow();

if($count==0){
    $dsql->ExecuteNoneQuery("update dede_archives set zan=zan+1 where id='$id'; ");
    $dsql->ExecuteNoneQuery("insert into dede_zan (aid,ip) values ('$id','$ip'); ");
    $rows = $dsql->GetOne("Select zan from dede_archives where id='".$id."'");
    $zan = $rows['zan'];
    echo $zan;
}else{
    echo "赞过了..";
}
至此,点赞功能已经开发完成。以上步骤确保了用户可以为内容点赞,并且同一IP地址不会重复点赞。这样的功能不仅可以提升用户体验,还能增加用户参与度。