Typecho 文档:让标签页的路径显示为静态地址
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/3379.html
许可方式:CC BY-NC-SA
官方演示:tag/firefly.html
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
此文档来自网友在 Typecho 论坛上提出的需求,当然,是作者做出了解答。该功能不常用,但对于在意 SEO 的使用者,倒是可以尝试下。
使用方法
A 涉及文件
var/Widget/Options/Permalink.php
B 改造文件
作用:自定义标签页的路径形式。
打开文件 var/Widget/Options/Permalink.php 新增三处代码:
1. 在适当位置(如:第 53 行)添加以下代码:
/**
* 检查tagPattern里是否含有必要参数
*
* @param mixed $value
* @return bool
*/
public function checkTagPattern($value): bool
{
return strpos($value, '{slug}') !== false
|| strpos($value, '{mid}') !== false;
}
2. 搜索找到
$routingTable['category']['url'] = '/' . ltrim($this->encodeRule($this->request->categoryPattern), '/');
在以上代码的(下一行),添加以下代码:
$routingTable['tag']['url'] = '/' . ltrim($this->encodeRule($this->request->tagPattern), '/');
3. 搜索找到
/** 提交按钮 */
在以上注释的(上一行),添加以下代码:
/** 标签页面 */
$tagPattern = new Form\Element\Text(
'tagPattern',
null,
$this->decodeRule($this->options->routingTable['tag']['url']),
_t('标签路径'),
_t('可用参数: <code>{mid}</code> 标签 ID, <code>{slug}</code> 标签缩略名')
. '<br />' . _t('请在路径中至少包含上述的一项参数.')
);
$tagPattern->input->setAttribute('class', 'mono w-60');
$form->addInput($tagPattern->addRule([$this, 'checkTagPattern'], _t('标签路径中没有包含 {mid} 或者 {slug} ')));
至此,在后台》设置》永久链接,已经可以看到(标签路径)的功能选项。或者,下载文件包,使用作者已经改造好的程序文件,替换源文件即可。
This is a message