EMLOG非插件实现一键点赞功能的方法

点赞打赏是博客网站里常见的元素之一,很多情况下都是通过插件的方式来实现的,但实际上点赞功能也是可以通过代码直接实现的,现在就来为大家分享一下EMLOG非插件实现一键点赞功能的方法。

一、操作方法

1、打开模板文件module.php,在合适的位置添加如下代码

<?php //点赞
function syzan(){
$DB = MySql::getInstance();
if($DB->num_rows($DB->query("show columns from ".DB_PREFIX."blog like 'slzan'")) == 0){
$sql = "ALTER TABLE ".DB_PREFIX."blog ADD slzan int unsigned NOT NULL DEFAULT '0'";
$DB->query($sql);}}syzan();
function update($logid){
$logid = intval($_POST['id']);
$DB = Database::getInstance();
$DB->query("UPDATE " . DB_PREFIX . "blog SET slzan=slzan+1 WHERE gid=$logid");
setcookie('slzanpd_'. $logid, 'true', time() + 31536000);}
function lemoninit() {if( @$_POST['plugin'] == 'slzanpd' &&@$_POST['action'] == 'slzan' &&isset($_POST['id'])){
$id = intval($_POST['id']);
header("Access-Control-Allow-Origin: *");
update($id);echo getnum($id);die;}}lemoninit();
function getnum($id){
static $arr = array();
$DB = Database::getInstance();
if(isset($arr[$logid])) return $arr[$logid];
$sql = "SELECT slzan FROM " . DB_PREFIX . "blog WHERE gid=$id";
$res = $DB->query($sql);
$row = $DB->fetch_array($res);
$arr[$id] = intval($row['slzan']);
return $arr[$id];}
?>

2、打开模板文件echo_log.php,在合适的位置添加如下代码

<a class="slzanpd" data-slzanpd="<?php echo $logData['logid'];?>" title="喜欢这篇文章就赞一个吧!">赞 (<?php echo(isset($logData['slzan'])?$logData['slzan']:getnum($logData['logid']));?>次)</a>

3、打开公共JS文件,在底部添加如下代码

$(document).on('click', '.slzanpd',
function() {
    var a = $(this),
    id = a.data('slzanpd');
    if (slzanpd_check(id)) {
        alert('您已赞过本文!');
    } else {
        $.post('', {
            plugin: 'slzanpd',
            action: 'slzan',
            id: id
        },
        function(b) {
            a.find('u').html(b);
            slzanpd_(a);
        });
    }
});
function slzanpd_check(id) {
    return new RegExp('slzanpd_' + id + '=true').test(document.cookie);
}
$('[data-slzanpd]').each(function() {
    var a = $(this),
    id = a.data('slzanpd');
    if (slzanpd_check(id)) {
        slzanpd_(a);
    } else {
        a.attr('title', '点赞一下,动力更足!')
    }
});
function slzanpd_(a) {
    a.css('cursor', 'not-allowed').attr('title', '您已赞过本文!');
}

二、原理解析

通过PHP代码实现点赞,通过JS代码对点赞状态进行判断

三、注意事项

1、本教程实现的点赞功能比较简单,如果需要更漂亮的效果请自行书写样式CSS

2、如果动手能力较差的话,还是推荐使用EMLOG点赞打赏和分享插件

版权归属: 博客志
相关推荐

评论区

博主头像
博客志
知道不知道
  • 892

    文章

  • 0

    评论

  • 815173

    浏览