首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[分享]Typecho文章无限点赞功能

天启Lv.1普通用户
2024-08-19 10:22:20
0
54

实现文章无限点赞功能的完整代码如下所示,包括数据库设计、前端页面、后端处理逻辑等部分:
数据库设计:在Typecho的数据库中创建一个新表typecho_likes,包含字段post_id(文章ID)和likes(点赞数)。

CREATE TABLE IF NOT EXISTS `typecho_likes` (
  `post_id` INT(11) NOT NULL,
  `likes` INT(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


前端页面:在文章模板中添加点赞按钮和显示点赞数的部分。

<!-- 点赞按钮 -->
<button class="like-btn" data-post-id="<?php echo $this->cid; ?>">点赞</button>
<!-- 显示点赞数 -->
<span class="likes-count">点赞数:<?php echo getLikesCount($this->cid); ?></span>


JavaScript代码:处理点赞按钮点击事件,并通过Ajax请求后端处理点赞逻辑。

$(document).ready(function(){
    $('.like-btn').click(function(){
        var post_id = $(this).data('post-id');
        $.ajax({
            type: 'POST',
            url: '/action/like.php',
            data: {post_id: post_id},
            success: function(response){
                $('.likes-count').text('点赞数:' + response.likes);
            }
        });
    });
});


后端处理逻辑:在Typecho的主题目录下创建like.php文件,用于处理点赞请求。

<?php
require_once 'path-to-typecho-blog/index.php';
header('Content-Type: application/json');

if(isset($_POST['post_id'])){
    $post_id = $_POST['post_id'];
    $likes = getLikesCount($post_id) + 1;
    $db = Typecho_Db::get();
    $db->query($db->update('table.typecho_likes')->rows(array('likes' => $likes))->where('post_id = ?', $post_id));
    echo json_encode(array('likes' => $likes));
}

function getLikesCount($post_id){
    $db = Typecho_Db::get();
    $row = $db->fetchRow($db->select()->from('table.typecho_likes')->where('post_id = ?', $post_id));
    return $row ? $row['likes'] : 0;
}
?>


以上代码是一个简单的实现文章无限点赞功能的示例,需要根据实际情况进行适当调整和修改。

天启
天启

64 天前

签名 : 大运河向南是我家   54       0
评论
站长交流