原版Typecho的description和keywords标签无法自定义,默认摘要就是描述,标签就是关键字。这还是有些不友好的,更多的时候想要灵活一点。
版权说明:
本文转载于博主【Yuan】的博文[SEO优化之增加自定义description和keywords标签菜单 - [Typecho/Handsome]](https://www.9kr.cc/archives/36/),并在表达方式上加了自己的个性化,更方便读者操作。
博主是基于Handsome主题的,其他主题自行进行参考修改。
原生的关键词keywords及描述description
原生的Handsome主题里,标签就是这篇文章的关键词,摘要部分就是这篇文章的描述。我随机选了一篇文章作为示例:
自定义的具体方法
1、添加自定义字段的位置
打开usr/themes/handsome/functions_mine.php
文件,在第676行(function themeFields(Typecho_Widget_Helper_Layout $layout)
函数内即可)增加如下代码,可以直接放到这个函数的最后就行:
$description = new Typecho_Widget_Helper_Form_Element_Text('description', NULL, NULL, _t('描述'), _t('简单一句话描述'));$description->input->setAttribute('class', 'text w-100');
$layout->addItem($description);
$keywords = new Typecho_Widget_Helper_Form_Element_Text('keywords', NULL, NULL, _t('关键词'), _t('多个关键词用英文下逗号隔开'));$keywords->input->setAttribute('class', 'text w-100');
$layout->addItem($keywords);
2、传入字段的参数
打开var/Widget/Archive.php
,在第1071行($allows = [...]
后一行)增加如下代码:
// 自定义关键词以及描述
if(($this->is('index') == False)AND($this->is('tag') == False)AND($this->is('category') == False)){
if((!is_null($this->fields->description))AND(strcmp($this->fields->description,'') != 0)){
$allows['description'] = $this->fields->description;
}
if((!is_null($this->fields->keywords))AND(strcmp($this->fields->keywords,'') != 0)){
$allows['keywords'] = $this->fields->keywords;
}
}
- 大概原理是如果为空就使用默认的description和keywords标签,不为空就使用文章撰写时设置的标签
- 增加了一个判断语句判断当前页面是否首页/标签/分类,非首页、标签和分类才执行。
- 再增加了一个判断语句判断description和keywords是否为空字符串,如果是空字符串也使用原方法。
最终效果
在写文章的后台里就有这个字段:
2 条评论
文章的摘要和标签不就是充当描述和关键词的功能嘛
确实是这样,但是我用的经常不顺手,一篇文章四五个关键词,更适合SEO的描述和关键词系统自带的已经不太能满足我的需求了。题目,描述,关键词这三个占文章质量的40%。自定义可以更加灵活,别的也没啥