首先后台执行SQL
1
|
ALTER TABLE dede_archives ADD zan int (11) NOT NULL DEFAULT '0' AFTER weight; |
也就是在 dede_archives 表中增加 zan 这个字段,加到weight这个字段后边。
然后执行
1
2
3
4
5
6
|
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 |
这个表是保存被赞的文档aid 及IP的,为了检测是否赞过的IP
然后在include/extend.func.php 中增加以下函数,用来获取文档被赞次数的
1
2
3
4
5
6
|
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
1
2
3
4
5
|
.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 } |
加入JS,记得引入jquery.js
<script type="text/javascript" src="/jquery.js"></script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$( function (){ $( "p a" ).click( function (){ var zan = $( this ); var id = zan.attr( "rel" ); //对应id 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 ; }); }); |
加入
1
2
|
< div class = "zan" >< p >< a href = "#" title = "赞一个 " class = "img_on" rel = "{dede:field.id/}" >{dede:field.id function="zan(@me)"/}</ a ></ p ></ div > |
建立zan.php 放到根目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<php require_once (dirname( __FILE__ ) . "/include/common.inc.php" ); $ip =getip(); //获取用户IP $id = $_POST [ 'id' ]; if (!isset( $id ) || empty ( $id )) exit ; //查询已赞过的IP $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'); " ); //写入IP,及被赞的AID $rows = $dsql ->GetOne( "Select zan from dede_archives where id='" . $id . "'" ); //获取被赞的数量 $zan = $rows [ 'zan' ]; //获取赞数值 echo $zan ; } else { echo "赞过了.." ; } |
好了,点赞功能开发好了。