前言
- 虽然有一些搜索引擎已经不是很注重页面的 keywords 和 description 标签,但哪怕是为了在搜索结果中展示的更好看一些,我们也应该为每篇文章设置符合内容的 keywords 和 description
- Typecho 的文章页和独立页面,会根据文章内容截取 description,但往往截出来的内容混杂了标题等各种无关元素,阅读起来并不友好
总体思路
- 在文章的编辑页面新增两个自定义字段,分别代表当前文章的 keywords 和 description,这样我们就可以自行填写想要的内容
- 在 Typecho 主题的头部位置,引用这两个字段的内容
自定义字段
- 在主题的 function.php 中,增加如下内容并保存
function themeFields($layout) {
$d = new Typecho_Widget_Helper_Form_Element_Textarea('d', NULL, NULL, _t('自定义 seo description'), _t('输入 description'));
$layout->addItem($d);
$k = new Typecho_Widget_Helper_Form_Element_Textarea('k', NULL, NULL, _t('自定义 seo keywords'), _t('输入 keywords,使用英文逗号隔开'));
$layout->addItem($k);
}
- 回到文章编辑页面,可以看到下方出现了两个自定义字段
引用自定义字段
- 编辑模板的 header.php 文件,找到如下内容
$this->header();
if($this->is('post') || $this->is('page')) {
$description = $this->fields->d ? $this->fields->d : $this->getDescription();
echo '<meta name="description" content="'.$description.'" />';
$keywords = $this->fields->k ? $this->fields->k : $this->getKeywords();
echo '<meta name="keywords" content="'.$keywords.'" />';
$this->header('keywords=&description=');
}else{
$this->header();
}
最终效果
- 如果填写了这两个字段,那么就会按照填写的内容输出
- 如果没有填写,会按照原来 Typecho 的逻辑输出