织梦列表页,支持顶(赞)和踩的功能,顶过后标红高亮显示

2022/11/11 08:43    5G收录网    已浏览193次

模板

01 <script language="javascript" type="text/javascript"
02 function postDigg(ftype,aid)  
03 {
04     var taget_obj = document.getElementById('diggNum'+aid);  
05     
06     var saveid = GetCookie('diggid');   //我所有赞过的文章id
07     //alert(saveid);
08     if(saveid != null)  
09     {
10         var saveids = saveid.split(',');  
11         var hasid = false;  
12         saveid = '';  
13         j = 1;  
14         for(i=saveids.length-1;i>=0;i--)  
15         {
16             if(saveids[i]==aid && hasid) continue; //我顶过 
17             else {  
18                 if(saveids[i]==aid && !hasid) hasid = true;  
19                 saveid += (saveid=='' ? saveids[i] : ','+saveids[i]);  
20                 j++;  
21                 if(j==20 && hasid) break;  
22                 if(j==19 && !hasid) break;  
23             }  
24         }  
25         if(hasid) {
26         //alert("您已经顶过该帖,请不要重复顶帖 !");
27         //如果点击后,被赞过.则不需要更新统计,直接改变颜色
28         $('#digg'+aid).addClass("icon-heart-on");
29         return;
30         }  
31         else saveid += ','+aid;  
32         SetCookie('diggid',saveid,1); 
33         
34     }  
35     else  
36     {   //如果cookie中无记录,则记录
37         SetCookie('diggid',aid,1);
38         
39     }  
40     myajax = new DedeAjax(taget_obj,false,false,'','','');  
41     var url = "{dede:global.cfg_phpurl/}/digg_ajax_list.php?action="+ftype+"&id="+aid;  
42     myajax.SendGet2(url);
43     
44     DedeXHTTP = null; 
45 }  
46  
47 </script>

1 {dede:arclist row='6' orderby='id' titlelen='100'}
2  
3  <span  id="diggNum[field:id/]">&nbsp;<a href="javascript:"class=" text-bbb text-16" onclick="javascript:postDigg('good',[field:id/])"><span id="digg[field:id/]" class="icon-heart2 ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</a>[field:goodpost/]
4 </span> 
5 {/dede:arclist}

css

1 .icon-heart2{
2     background: url(../images/bg-main.png) -22px 5px no-repeat;
3 }
4 .icon-heart2:hover{
5     background: url(../images/bg-main.png) 2px 4px no-repeat;
6 }
7 .icon-heart-on{
8     background: url(../images/bg-main.png) 2px 4px no-repeat;
9 }

然后在,plus中新建立一个digg_ajax_list.PHP文件,内容为
 

01 <?php  
02    
03 require_once(dirname(__FILE__)."/../include/common.inc.php");  
04   
05 $action = isset($action) ? trim($action) : '';  
06 $id = empty($id)? 0 : intval(preg_replace("/[^\d]/",'', $id));  
07   
08 if($id < 1)  
09 {  
10     exit();  
11 }  
12 $maintable = 'archives';  
13 if($action == 'good')  
14 {  
15     $dsql->ExecuteNoneQuery("Update `$maintable` set scores = scores + {$cfg_caicai_add},goodpost=goodpost+1,lastpost=".time()." where id='$id'");  
16 }  
17 else if($action=='bad')  
18 {  
19     $dsql->ExecuteNoneQuery("Update `$maintable` set scores = scores - {$cfg_caicai_sub},badpost=badpost+1,lastpost=".time()." where id='$id'");  
20 }  
21 $digg = '';  
22 $row = $dsql->GetOne("Select goodpost,badpost,scores From `$maintable` where id='$id' ");  
23 if(!is_array($row))  
24 {  
25     exit();  
26 }  
27 if($row['goodpost']+$row['badpost'] == 0)  
28 {  
29     $row['goodper'] = $row['badper'] = 0;  
30 }  
31 else
32 {  
33     $row['goodper'] = number_format($row['goodpost']/($row['goodpost']+$row['badpost']),3)*100;  
34     $row['badper'] = 100-$row['goodper'];  
35 }  
36   
37 if(empty($formurl)) $formurl = '';  
38 if($formurl=='caicai')  
39
40     if($action == 'good') $digg = $row['goodpost'];  
41     if($action == 'bad') $digg  = $row['badpost'];  
42 }  
43 else
44 {  
45     $row['goodper'] = trim(sprintf("%4.2f", $row['goodper']));  
46     $row['badper'] = trim(sprintf("%4.2f", $row['badper']));      
47     $digg = '<a  class=" text-bbb text-16"href="javascript:" onclick="javascript:postDigg(\'good\','.$id.')"><span  =id="digg'.$id.'"class="icon-heart-on">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</a>'.$row['goodpost'];   //点击后,如果从没有被赞过,则自动把新的点击次数重写入目标位置.
48 }  
49 AjaxHead();  
50 echo $digg;  
51 exit();  
52 ?>