在SEO中一般要求不同的页面展现不同的title以及description,网络上关于实现wordpress的title信息有很多版本,部分版本的实现非常复杂,用了很多个if来分门别类的判断。所以接触到Typecho的title实现方式后就有点惊讶,就这,这么方便的么(以下代码来自typecho默认主题):
<title><?php $this->archiveTitle(array(
'category' => '分类 %s 下的文章',
'search' => '包含关键字 %s 的文章',
'tag' => '标签 %s 下的文章',
'author' => '%s 发布的文章'
), '', ' - '); ?><?php $this->options->title(); ?></title>
随着对这个小软件的深入使用,官方提供的代码有点满足不了需求了,比如某天博主想修改一下按日期归档页的title,按日期归档页面的默认title是日期的输出值,本博客的日期归档页,点击“23年10”这个归档后,title也是“23年10”。觉得这样过于简单了一些,就想同作者页一样,修改成“23年10月 发布的文章”这种形式。
<title><?php $this->archiveTitle(array(
'category' => '分类 %s 下的文章',
'search' => '包含关键字 %s 的文章',
'tag' => '标签 %s 下的文章',
'author' => '%s 发布的文章',
'date' => '%s 发布的文章'
), '', ' - '); ?><?php $this->options->title(); ?></title>
因为没有具体的资料,自己尝试了几个关键字,发现直接填写“archive”是无法实现这个效果的,因为是按日期归档嘛,所以就试着输入了一个“date”,它还真起作用了,你看,有时候人类的悲欢也是可以相通的。
但老依赖悲欢相通也不是长久之计,于是去翻了一下typecho的源码,这里解释一下,源码其实完全看不懂,好在typecho代码精简,文件不多,挨个翻一翻,多少能翻到一点东西的:
$handles = [
'index' => 'indexHandle',
'index_page' => 'indexHandle',
'archive' => 'archiveEmptyHandle',
'archive_page' => 'archiveEmptyHandle',
404 => 'error404Handle',
'single' => 'singleHandle',
'page' => 'singleHandle',
'post' => 'singleHandle',
'attachment' => 'singleHandle',
'comment_page' => 'singleHandle',
'category' => 'categoryHandle',
'category_page' => 'categoryHandle',
'tag' => 'tagHandle',
'tag_page' => 'tagHandle',
'author' => 'authorHandle',
'author_page' => 'authorHandle',
'archive_year' => 'dateHandle',
'archive_year_page' => 'dateHandle',
'archive_month' => 'dateHandle',
'archive_month_page' => 'dateHandle',
'archive_day' => 'dateHandle',
'archive_day_page' => 'dateHandle',
'search' => 'searchHandle',
'search_page' => 'searchHandle'
];
在“typecho/var/Widget/Archive.php”文件中找到了这样一组代码,应该比较接近我们的需求了,博主刚才误打误撞的“date”,在这里也得到了印证,比如“error404Handle”,估计摘除“Handle”这几个字符就可以投入使用了。