Typecho 文档:通过页面链接获取标题

10月26日

适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3829/
许可方式:CC BY-NC-SA

注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。

敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。

文档说明

在制作站点统计插件 Lopwon Stats 时,有一个需求:已知访客访问页面的链接,要获取该页面的标题,将其显示在面板中,以便查看。一种可以使用 JS 的 fetch 发送请求,以正则匹配页面的 <title> 标签内容,即插件 Lopwon Stats 采用的方式,优点是按需显示;另一种可以在后端查询数据库,一次性显示,适合文章量较少时,即本文档介绍的。


使用方法

A 涉及文件

usr/themes/***/functions.php

B 改造文件

作用:通过页面链接获取标题

1. 打开文件  usr/themes/***/functions.php 添加以下代码:

    function getTitle($path) {
        $db = Typecho_Db::get();
        $result = $db->fetchAll(
            $db->select()
               ->from('table.contents')
               ->where('table.contents.type = ? OR table.contents.type = ? OR table.contents.type = ?', 'post', 'page', 'attachment')
        );

        foreach ($result as $lopwon) {
            $pushValue = Typecho_Widget::widget('Widget_Abstract_Contents')->push($lopwon);
            $permalink = $pushValue['permalink'];

            if (stripos($permalink, $path) !== false) {
                return $lopwon['title'];
            }
        }

        return null;
    }

至此,通过调用 getTitle($path); 如:getTitle('/888.html'); 即可显示该页面的标题。
store