TYPECHO WIKI
每一个作品都值得被记录

敬告读者,感谢您对本站的支持,在今年10月份因Racknerd机房硬盘事故,导致本站静态文件全部丢失,包含主题插件网站图片等文件,TypechoWiki经过几次更换站长,凝结了多位站长的心血,如今因为大意只备份了数据库未及时备份静态文件而导致严重数据丢失事故,现已无力回天,经过深思我决定后续可能永久停更该网站,请各位读者寻求其它Typecho周边下载站,另外如果你对本站感兴趣也欢迎报价,我们愿意出售该站联系邮箱[email protected],目前该站的静态文件仅为2019年以前的版本,2019年以后的各位站长精心维护的插件和主题压缩包以及站内图片全部丢失!

TYPECHO 主题技巧:构造数据库请求来获取数据

Typecho维基君Typecho教程 • 1031次浏览 • 发布 2023-01-22 • 更新 2023-01-22

前言

  • 很多同学制作主题时会在网上搜索 “ Typecho 主题常用 function 代码 ”,但其实大部分写到 function.php 中的代码都是为了获取并展示 typecho 没有提供现成获取接口的数据。与其每次都去搜索、复制、粘贴,不如理解机制,根据自己的需要随时手搓代码
  • 本文的内容主要针对 typecho,至于 SQL,不会展开讲解,请自行学习

数据库结构

有两种方式可以了解 typecho 的数据结构

  • 推荐先看 Typecho 官方提供数据库设计文档

  • 看完文档后,可以使用一些工具,查看站点的数据库

    • 例如 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')
);
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »