开源一款基于 Typecho 开发的浏览、点赞插件

2024-05-08

3082

4

一款基于 typecho 的浏览量、点赞量统计插件。

本插件是基于typecho 1.3.0版本,并采用php 8的语法开发的,如果您的typecho版本低于1.3.0,请先升级到该版本,否则会存在兼容性问题,由于typecho 1.3.0目前还是alpha版,保险起见,你可以直接通过如下地址下载:

https://pan.baidu.com/s/1kuCOQ2KrRCjT79LTLGFfcQ?pwd=yyds

该代码是从作者官方镜像joyqi/typecho:nightly-php8.2-fpm中复制出来的,未作任何修改。我的网站正在运行的也是这个版本,已经经过了我和朋友们的检验,目前运行良好,可以放心使用。

插件特色

  • 支持浏览量统计与显示
  • 支持点赞量统计与显示
  • 支持文章列表自定义排序
  • 支持浏览量、点赞量异步接口调用
  • 实现浏览量、点赞量当天不重复计算
  • 支持点赞在当天取消
  • 实现防抖策略,避免多次重复提交
  • 实现榜单查询功能

插件安装

  1. 下载 LZStat ,解压到 usr/plugins/ 目录下,将文件夹命名为 LZStat,确保Plugin.php文件直接在LZStat文件夹下;
  2. 登录博客后台,进入控制台->插件,选择 LZStat 插件;
  3. 启用插件即可。

功能介绍

1. 浏览量统计与显示

插件启用之后,代码无需任何改动,也不需要配置,默认就可以实现对文章浏览量的统计,然后你就可以在你的页面中,通过如下代码显示统计结果了。

<?php $this->viewsNum(); ?>

2. 点赞量统计与显示

点赞量统计与浏览量统计类似,只是没有默认统计一说,而是必须手动点击触发。因此,你必须在被点击的元素上,加上set-likes类和data-cid属性,示例代码如下:

<i class="set-likes iconfont icon-zan" data-cid="<?php $this->cid(); ?>"></i>

然后,通过如下代码显示点赞量:

<?php $this->viewsNum(); ?>

当然,如果你点错了或者后悔了,再次点击,就会取消点赞,即点赞数减一。

你也可以在自己的css文件中加入如下样式,以实现鼠标悬停的效果(因为每个人想要的效果可能不一样,所以该样式没有内置到插件中)。

.set-likes:hover {
  cursor: pointer;
  color: #dc3545;
}

如果你希望点赞完成后,点赞量在当前页面无刷新的更新,则需要在显示点赞量的标签上加上get-likes类和data-cid属性,示例代码如下:

<span class="get-likes" data-cid="<?php $this->cid(); ?>"><?php $this->likesNum(); ?></span>

3. 自定义排序

文章列表默认按照创建时间降序排序,但你可以通过修改插件的设置,实现按创建时间浏览量点赞量权重(点赞量 * 100 + 浏览量)等更多形式的排序。例如,本文中提到的 导航网站 就是按照权重排序的。

4. 榜单查询

你也可以手动根据创建时间浏览量点赞量权重排序,查询前N条数据,主要用于侧边栏的最新文章热门文章等功能,调用示例如下:

<?php $rank = \TypechoPlugin\LZStat\Plugin::getRank(); ?>
<h3><?= $rank["title"]; ?></h3>
<?php if (empty($rank["posts"])) : ?>
    <div>暂无数据</div>
<?php else : ?>
    <div>
    <?php $posts = $rank["posts"];
    while ($posts->next()) : ?>
        <a href="<?php $posts->permalink() ?>"><?php $posts->title() ?></a>
    <?php endwhile; ?>
    </div>
<?php endif; ?>

排序方式(created,viewsNum,likesNum,weight)可以通过插件设置,也可以通过参数传递,查询条数通过博客控制台的 设置->阅读->文章列表数目 指定。考虑到每个人想要的显示效果不同,该功能只提供了数据查询接口,界面渲染需要自己写代码实现。

统计接口

如果上述方式都不能满足你的需求,你也可以直接通过调用下面的接口实现统计功能,然后自行实现界面渲染。

接口名称请求类型接口地址返回值示例
浏览量统计GET/action/stat?do=views&cid=${cid}{"total":0}
点赞量统计GET/action/stat?do=likes&cid=${cid}{"total":0}

适配主题

本插件目前已在以下主题中测试通过:

你可以转到主题源码,查看具体用法,后续还会尝试让其适配更多类型的主题,以实现更通用、易用的目的!

不足之处

由于本插件是基于Cookie实现的,因此,如果用户在浏览器中禁用了Cookie,则无法实现浏览量、点赞量不重复计算,取消点赞等功能;另外,更换浏览器或者手动删除Cookie,也都会导致数据统计不准确。

插件的复杂性和数据准确性,鱼和熊掌二者不可兼得,权衡利弊之后,我认为浏览量和点赞量的准确性相对而言不那么重要,因而依然选择了基于Cookie的实现方式,因此,在你使用本插件之前,也必须认可这一点才行。

总结

浏览量和点赞量统计几乎是所有类型的网站都需要的功能,网上也有很多的版本,但始终没有合我心意的。因此,我自己实现了这个插件,希望在满足自己需求的基础上,通过后续适配更多不同类型的主题,也能满足更多人的需求!

最后,想要用好 Typecho,少不了 PHP 的相关知识,点击下方按钮可获取全套的 PHP 零基础视频教程
百度网盘
上述学习资源均来源于网络,搜集整理不易,仅供学习研究使用,如有需要,请保存至个人网盘备份,以防下架或丢失!

相关推荐

  1. 终于收到 Google Adsense 漂洋过海邮寄过来的 PIN 码了 2025-03-13
  2. 为博客网站增加一个简单的算术验证码,防止机器人垃圾评论轰炸 2025-03-12
  3. 如何基于 Typecho 实现中英双语网站(下) 2025-02-20
  4. 如何基于 Typecho 实现中英双语网站(上) 2025-02-09
  5. Typecho中添加外链跳转的过渡页 2024-12-18

本文作者: 老朱

原文链接: 开源一款基于 Typecho 开发的浏览、点赞插件

版权声明: 本站所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

免责声明: 文中如涉及第三方资源,均来自互联网,仅供学习研究,禁止商业使用,如有侵权,联系我们24小时内删除!

Typecho 插件

评论10

😊 😃 😄 😁 😆 😅 😂 🤣 🙂 🙃 😉 😇 😏 😌 😍 😘 😗 😙 😚 😋 😛 😜 😝 😒 😔 😖 😞 😟 😠 😡 😳 😨 😰 😥 😢 😭 😱 😲 😵 😷 🤒 🤕 🤢 😴 🤤 😪 😫 😬 😮 🤲 🤜 🤛 🤚 🤝 🙏 🤞 🤟 🤘 🤙 👌 👍 👎 👊 👏 🙌 👐 💪
  1. 老孙

    刚好我这个主题也需要这个插件.拿来试试

    2024-05-24 16:01
  2. Shuo

    是不是如果科学的话图片就能显示出来了?我这边目前还是不行的。

    2024-05-09 22:57
    1. 老朱

      不是,该显示不出来的还是会显示不出来,只能从设计上缓解,比如CDN不稳定的时候就临时显示一张本地图片,或者外观上设计成没有图片就不显示图片的样式,毕竟大部分情况还是可以用的

      2024-05-10 10:24