Typecho 文档:在 functions.php 里新增路由并输出自定义页面
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3918/
许可方式:CC BY-NC-SA
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
此文档来自网友在 Typecho 论坛上提出的需求,当然,是作者做出了解答,需求是:在不使用插件的前提下,在主题文件 functions.php
里新增路由,并输出自定义页面。
使用方法
A 涉及文件
usr/themes/***/functions.php
B 改造文件
作用:不使用插件新增路由。
1. 打开文件 usr/themes/***/functions.php 在 themeInit($archive) {} 函数体里添加以下代码(留意注释,以及按需修改):
$routeName = 'MyRoute'; // 路由名称
$path = '/custom/my/'; // 自定义路径
$routingTable = Helper::options()->routingTable; // 获取路由表
if (!array_key_exists($routeName, $routingTable)) { // 如果路由表中不存在自定义的路由名称
Helper::addRoute($routeName, $path, 'Widget_Archive', 'render'); // 将自定义路由注册到 Widget_Archive
}
// Helper::removeRoute($routeName); // 如需移除路由,先解除当前行代码注释,同时注释以上 addRoute 以实现人工手动移除路由(不移除也无影响),移除路由后,以下代码依然生效,以通过 404 捕获未定义的路由的方式实现仿自定义路由
$requestUri = $archive->request->getRequestUri(); // 完整路径
if (stripos($requestUri, $path) !== false) { // 如果路由中包含自定义路径,则使用 lopwon.php 页面
$archive->need('lopwon.php'); // 自定义页面,请在 functions.php 相同目录创建 lopwon.php 文件
exit;
}
至此,访问自定义路由即可显示 lopwon.php 页面内容。