原版Typecho的description和keywords标签无法自定义,默认摘要就是描述,标签就是关键字。这还是有些不友好的,更多的时候想要灵活一点。


版权说明:

本文转载于博主【Yuan】的博文SEO优化之增加自定义description和keywords标签菜单 - [Typecho/Handsome],并在表达方式上加了自己的个性化,更方便读者操作。

已申请原作者转载授权


博主是基于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是否为空字符串,如果是空字符串也使用原方法。

最终效果

在写文章的后台里就有这个字段:

字段

最终效果


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/tykeydes.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 06 月 14 日
如果觉得我的文章对你有用,请随意赞赏