自定义 typecho 文章的 Keywords 和 Description

前言

  • 虽然有一些搜索引擎已经不是很注重页面的 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);
}
  • 回到文章编辑页面,可以看到下方出现了两个自定义字段

typecho自定义字段.png

引用自定义字段

  • 编辑模板的 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 的逻辑输出
关联标签:TYPECHO , PHP , TYPECHO 主题 , SEO
版权声明:转载必须保留署名并超链到原内容