找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1701|回复: 0

[分享] dedecms 开发点赞功能

[复制链接]
发表于 2018-8-1 09:52:51 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
首先后台执行SQL

  1. ALTER TABLE dede_archives ADD zan int(11) NOT NULL DEFAULT '0' AFTER weight;
复制代码


也就是在 dede_archives 表中增加 zan  这个字段,加到weight这个字段后边。

然后执行

  1. CREATE TABLE IF NOT EXISTS `dede_zan` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `aid` int(11) NOT NULL,
  4.   `ip` varchar(40) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
复制代码

这个表是保存被赞的文档aid 及IP的,为了检测是否赞过的IP

然后在include/extend.func.php 中增加以下函数,用来获取文档被赞次数的


  1. function zan($aid)
  2. {
  3.     global $dsql;
  4.     $row = $dsql->GetOne("Select id,zan From dede_archives where id='".$aid."'");
  5.     return $row['zan'];
  6.     }
复制代码



打开模板templets/default/article_article.htm

加入css

  1. .zan p{
  2. background:#000; opacity:.8;filter:alpha(opacity=80);}
  3. .zan p a{padding-left:30px; height:24px; background:url(/images/heart.png) no-repeat  
  4. 4px -1px;color:#fff; font-weight:bold; font-size:14px}
  5. .zan p a:hover{background-position:4px -25px;text-decoration:none}
复制代码


加入JS,记得引入jquery.js
  1. <script type="text/javascript" src="/jquery.js"></script>

  2. $(function(){
  3.     $("p a").click(function(){
  4.         var zan = $(this);
  5.         var id = zan.attr("rel"); //对应id
  6.         zan.fadeOut(300); //渐隐效果
  7.         $.ajax({
  8.             type:"POST",
  9.             url:"/zan.php",
  10.             data:"id="+id,
  11.             cache:false, //不缓存此页面
  12.             success:function(data){
  13.                 zan.html(data);
  14.                 zan.fadeIn(300); //渐显效果
  15.             }
  16.         });
  17.         return false;
  18.     });
  19. });

  20. 加入

  21. <div class="zan"><p><a href="#"  
  22. title="赞一个 "class="img_on" rel="{dede:field.id/}">{dede:field.id function="zan(@me)"/}</a></p></div>
复制代码



建立zan.php 放到根目录

  1. <?php
  2. require_once (dirname(__FILE__) . "/include/common.inc.php");
  3. $ip =getip(); //获取用户IP
  4. $id = $_POST['id'];
  5. if(!isset($id) || empty($id)) exit;

  6. //查询已赞过的IP

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

  10. if($count==0){ //如果没有记录

  11.     $dsql->ExecuteNoneQuery("update dede_archives set zan=zan+1 where id='$id'; ");//写入赞数
  12.    
  13.     $dsql->ExecuteNoneQuery("insert into dede_zan (aid,ip) values ('$id','$ip'); ");//写入IP,及被赞的AID

  14.     $rows = $dsql->GetOne("Select zan  from dede_archives where id='".$id."'");//获取被赞的数量
  15.     $zan = $rows['zan']; //获取赞数值
  16.     echo $zan;
  17. }else{
  18.     echo "赞过了..";
  19. }
复制代码

好了,点赞功能开发好了。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-30 13:38 , Processed in 0.040411 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表