实现文章无限点赞功能的完整代码如下所示,包括数据库设计、前端页面、后端处理逻辑等部分:数据库设计:在Typecho的数据库中创建一个新表typecho_likes,包含字段post_id(文章ID)和...
实现文章无限点赞功能的完整代码如下所示,包括数据库设计、前端页面、后端处理逻辑等部分:
数据库设计:在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;
}
?>
以上代码是一个简单的实现文章无限点赞功能的示例,需要根据实际情况进行适当调整和修改。