TYPECHO 主题技巧:构造数据库请求来获取数据
前言
- 很多同学制作主题时会在网上搜索 “ Typecho 主题常用 function 代码 ”,但其实大部分写到 function.php 中的代码都是为了获取并展示 typecho 没有提供现成获取接口的数据。与其每次都去搜索、复制、粘贴,不如理解机制,根据自己的需要随时手搓代码
- 本文的内容主要针对 typecho,至于 SQL,不会展开讲解,请自行学习
数据库结构
有两种方式可以了解 typecho 的数据结构
推荐先看 Typecho 官方提供数据库设计文档
- 官方文档地址:http://docs.typecho.org/database
- 官方文档针对的是老版本,仅供参考,明白原理就好
看完文档后,可以使用一些工具,查看站点的数据库
- 例如 PhpMyAdmin
- 注意不要乱改
一个栗子
假设我们要统计全站一共有多少篇文章
- 文章数据是存在 typecho 的 post 表中,每篇文章一条记录
- 统计文章数量也就是 count 一些有多少条记录
function countPosts() {
$db = Typecho_Db::get();
$count = $db->fetchRow(
$db->select('COUNT(1)')
->from('table.contents')
->where('type = ?', 'post')
);
return $count['COUNT(1)'];
}
- 在需要获取文章数量的地方,用
<?php countPosts() ?>
调用
举一反三
- 获取所有分类的数量
function countCategories() {
$db = Typecho_Db::get();
$count = $db->fetchRow(
$db->select('COUNT(1)')
->from('table.metas')
->where('type = ?', 'category')
);
return $count['COUNT(1)'];
}
- 获取公开文章的数量
$count = $db->fetchRow(
$db->select('COUNT(1)')
->from('table.contents')
->where('type = ?', 'post')
->where('status = ?', 'publish')
);