欢迎来到元素模板ys720.com,本站提供专业的织梦模板PBOOTCMS模板网站模板网站修改/网站仿站
当前位置:主页 > 程序教程 > DEDECMS教程 >
DEDECMS教程

织梦不用插件,如何实现列表页顶踩的高亮方法

(元素模板) / 2019-08-15 15:56
今天主要说的说如何实现织梦文章顶踩点赞功能,今天我们想实现在列表页对内容点赞顶踩,然后点赞之后会高亮显示。

可限制每个人对一个内容的点赞数次,比如以下是规定3次.超过三次会限制的。注意,模板中必须引入cookie相关的js,即.通过cookie记住是否顶过:

<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>

因为这句,所以需要引入jq,当然也可以直接用原生js的:

<script src="{dede:global.cfg_templets_skin/}/js/jquery.min.js"></script>

以下为模板代码:

<script language="javascript" type="text/javascript">  
 
//SetCookie('diggid',null,1); //清空cookie
function postDigg(ftype,aid)   
{
    var taget_obj = document.getElementById(
'diggNum'
+aid);   
    
    var saveid = GetCookie(
'diggid'
);   
//我所有赞过的文章id
  
//  alert(saveid);
    
if
(saveid != null)   
    {
        var saveids = saveid.split(
','
);   
        var hasid = 
false

//cookie中是否已有顶过的记录
        var can_digg = 
false
;  
//是否还可再顶一次 
        saveid = 
''
;   
      
//  j = 1;   
        
for
(i=saveids.length-
1
;i>=
0
;i--)   
        {
        var oldaid_arr=saveids[i].split(
':'
); 
    
//    alert(saveids[i]);
            
if
(oldaid_arr[
0
]==aid) {
            hasid=
true
;
            
if
(  oldaid_arr[
1
]>=
3
){
            saveid += (saveid==
''
 ? saveids[i]  :   
','
+saveids[i] ); 
           
            can_digg=
false
;
            
//alert('大于3');
           
           
            }
else
{
//小于点击次数
            
//alert('再顶一次');
            can_digg=
true
;
               saveid += (saveid==
''
 ? oldaid_arr[
0
]+
':'
+ (parseInt(oldaid_arr[
1
])+
1
): 
','
+oldaid_arr[
0
]+
':'
+ (parseInt(oldaid_arr[
1
])+
1
));   
            }
           
            }
else 
{
            
//alert('id不对应');
            saveid += (saveid==
''
 ? saveids[i]  :   
','
+saveids[i] );  
            }   
        }
///循环结束        
        
if
(hasid) {
        
if
(can_digg){
           
        }
else
{
       alert(
"您已经顶过该帖3次了,请休息一下吧 !"
);
        
return
;
       }
         SetCookie(
'diggid'
,saveid,
1
); 
        }   
else 
{
        saveid += 
','
+aid+
':1'
;
//原 cookie没有本文章id 在后面追加上
       
          SetCookie(
'diggid'
,saveid,
1
); 
        
// alert('原 cookie没有本文章id 在后面追加上');
        }
        
        
    }
    
else 
  
    {   
//如果cookie中无记录,则记录
        SetCookie(
'diggid'
,aid+
':1'
,
1
); 
       
// alert('cookie中无记录');
    }   
   
    myajax = 
new 
DedeAjax(taget_obj,
false
,
false
,
''
,
''
,
''
);   
    var url = 
"{dede:global.cfg_phpurl/}/digg_ajax_list.php?action="
+ftype+
"&id="
+aid;   
    myajax.SendGet2(url); 
    
    DedeXHTTP = null;  
}   
function getDigg(){
    var saveid = GetCookie(
'diggid'
);   
//我所有赞过的文章id    
        
if
(saveid != null)   
    {
        var saveids = saveid.split(
','
);   
        var hasid = 
false
;   
        saveid = 
''
;   
        j = 
1
;   
        
for
(i=saveids.length-
1
;i>=
0
;i--)   
        {
        var oldaid_arr=saveids[i].split(
':'
); 
                  $(
'#digg'
+oldaid_arr[
0
]).addClass(
"icon-heart-on"
);
             
//document.getElementById('digg'+saveids[i]).addClass("icon-heart-on");
           
        }   
    
        
    }   
}  
getDigg();
//本函数需要放在网页最下面
</script>

调用代码

{dede:arclist row='6' orderby='id' titlelen='100'}

<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/]

</span>

{/dede:arclist}

CSS代码:

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

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


<?php
     
require_once(dirname(__FILE__).
"/../include/common.inc.php"
);
   
$action = isset($action) ? trim($action) : 
''
;
$id = empty($id)? 

: intval(preg_replace(
"/[^d]/"
,
''
, $id));
   
if
($id < 
1
)
{
        exit();
}
$maintable = 
'dede_archives'
;
if
($action == 
'good'
)
{
        $dsql->ExecuteNoneQuery(
"Update `$maintable` set scores = scores + {$cfg_caicai_add},goodpost=goodpost+1,lastpost="
.time().
" where id='$id'"
);
}
else if
($action==
'bad'
)
{
        $dsql->ExecuteNoneQuery(
"Update `$maintable` set scores = scores - {$cfg_caicai_sub},badpost=badpost+1,lastpost="
.time().
" where id='$id'"
);
}
$digg = 
''
;
$row = $dsql->GetOne(
"Select goodpost,badpost,scores From `$maintable` where id='$id' "
);
if
(!is_array($row))
{
        exit();
}
if
($row[
'goodpost'
]+$row[
'badpost'
] == 
0
)
{
        $row[
'goodper'
] = $row[
'badper'
] = 
0
;
}
else 
{
        $row[
'goodper'
] = number_format($row[
'goodpost'
]/($row[
'goodpost'
]+$row[
'badpost'
]),
3
)*
100
;
        $row[
'badper'
] = 
100
-$row[
'goodper'
];
}
   
if
(empty($formurl)) $formurl = 
''
;
if
($formurl==
'caicai'
)
{
        
if
($action == 
'good'
) $digg = $row[
'goodpost'
];
        
if
($action == 
'bad'
) $digg = $row[
'badpost'
];
}
else 
{
        $row[
'goodper'
] = trim(sprintf(
"%4.2f"
, $row[
'goodper'
]));
        $row[
'badper'
] = trim(sprintf(
"%4.2f"
, $row[
'badper'
]));
        $digg = 
'<a class=" text-bbb text-16"href="javascript:" οnclick="javascript:postDigg('good','
.$id.
')"><span =id="digg'
.$id.
'"class="icon-heart-on">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</a>'
.$row[
'goodpost'
]; 
//点击后,如果从没有被赞过,则自动把新的点击次数重写入目标位置.
}
AjaxHead();
echo $digg;
exit();
?>

完成后在列表页部署好调用代码,即可实现此功能!

Copyright @ 2013-2021 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com