typecho 后台添加文章、页面阅读数量统计功能 & 新版本 1.3 下的更新
2026-03-02 新版本 1.3 下的更新
新的 typecho 1.3 找了一个官方推荐的 docker 容器部署,然后按照当前文档去找,结果发现字段不对。登录到 mysql 数据库发现,字段变成了 views。且独立页面似乎没有参与统计,阅读数全都是 0。
- var/Widget/Contents/Page/Admin.php
- admin/manage-pages.php
- admin/manage-posts.php
下面两个后台的视图还是一样的修改(字段名为 views),主要看查询数据的变化。视图中获取数据源来自以下两个类:
var/Widget/Contents/Post/Admin.php- var/Widget/Contents/Page/Admin.php
文章的类里 $select = $this->select() 未追踪到具体的写法,最后证明不需要修改,所以应该是获取了所有的字段。
独立页面的类里列举需要的字段,复制添加一个 views 字段即可。
$select = $this->select(
'table.contents.cid',
'table.contents.views'
...
)因为本站使用了 typecho VOID 主题和配套插件,插件功能里包含了统计 UV 的功能,所以不用再去额外的安装 viewCount 之类的插件。浏览数统计了,前端也展示了,但在后台的文章列表和页面列表上看不到这项数据。
可能是因为后台文章和独立页面涉及到的文件属于 typecho 后台的核心页面,所以插件也不好修改这两块的展示。之前自己也想去数据库里找到这个字段,然后自己修改来着,但因为对 typecho 框架不熟悉,所以自己改一直是个想法。今天闲来找一些实用的插件时,顺便就找到了一篇修改教程:在 typecho 后台添加文章、页面阅读统计功能 - childsay。
教程前面部分增加数据库文章表的阅读字段并添加统计阅读数量的函数。后面部分是我关心的修改后台部分的内容。主要以下修改三个文件:
- var/Widget/Abstract/Contents.php
- admin/manage-pages.php
- admin/manage-posts.php
第一个大概是在取模型数据时,添加上这个字段。257 行加入 , 'table.contents.view_count'。
第二个修改 独立页面 页面部分,对已有 table 部分添加一列 阅读 。
第三个修改 文章 页面部分,对已有 table 部分添加一列 阅读 。
注意:
- 独立页面调用的对象是 $pages ,而文章调用的对象是 $posts 。
- 插件添加 阅读 字段可能并不是 view_count , 比如我使用的 VOID 配套插件里对应字段为 viewsNum ,所以修改时要根据自己情况修改字段名。
- 注意没有文章情况下(在下面的 else 判断逻辑里),提示信息的 colspan 要 +1,因为多了一列。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
海滨擎蟹
微信
支付宝