前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SEO优化之增加自定义description和keywords标签菜单 - [Typecho/Handsome]

SEO优化之增加自定义description和keywords标签菜单 - [Typecho/Handsome]

作者头像
kr
发布2022-06-15 17:56:29
2.5K0
发布2022-06-15 17:56:29
举报
文章被收录于专栏:个人教程

末尾有2022-04-21更新内容

情况

  • 原版Typecho的description和keywords标签无法自定义,对SEO不够友好。
  • Handsome版本:8.4.0
  • Typecho版本:1.2.0

操作

修改文章撰写页自定义字段菜单

  • 打开usr/themes/handsome/functions_mine.php文件,在第676行(function themeFields(Typecho_Widget_Helper_Layout $layout)函数内即可)增加如下代码:
代码语言:javascript
复制
$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);
  • 如图:
1648920391(1).jpg
1648920391(1).jpg
解释
  • 就是在原来的菜单最前面加上description和keywords两个菜单项

修改修改Typecho内容文章基类的description和keywords来源

  • 打开var/Widget/Archive.php文件,在第1071行($allows = [...]后一行)增加如下代码:
代码语言:javascript
复制
if(!is_null($this->fields->description)){
            $allows['description'] = $this->fields->description;
        }
        if(!is_null($this->fields->keywords)){
            $allows['keywords'] = $this->fields->keywords;
        }
  • 如图:
1648920366(1).jpg
1648920366(1).jpg
解释
  • 大概原理是如果为空就使用默认的description和keywords标签,不为空就使用文章撰写时设置的标签

完成

  • 现在去刷新即可看到效果

2022-04-21 更新

情况

  1. 经反馈存在首页description和keywords存在问题,会自动获取第一页文章最后一篇文章的description和keywords。
  2. 上一个方法是直接修改的Typecho源码,这次增加个修改Handsome源码的方法。

操作

修复首页description和keywords显示BUG

具体方法
  • 打开var/Widget/Archive.php,在与上文同样的位置将增加的代码改为如下即可:
代码语言:javascript
复制
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是否为空字符串,如果是空字符串也使用原方法。

修改Handsome源码的方法

  • 经过简单测试没有问题,实际使用请自测。
  • 已经修复一开始提到的首页BUG。
  • 没加标签和分类判断,参考上面的代码看着加就是了,用AND连接。
  • 参考header.php使用官方文档:自定义头部信息输出 - Typecho Docs
具体方法
  • 打开usr/themes/handsome/component/header.php,找到第54行,也就是<?php
代码语言:javascript
复制
<?php
        if($this->is('index')){
            $this->header(Content::exportGeneratorRules($this));
        }else{
            $custom_headerb = '';
            if(!is_null($this->fields->description)){
                $custom_headerb .= 'description=';
                $custom_headerb .= $this->fields->description;
            }
            if(!is_null($this->fields->keywords)){
                if(strcmp($custom_headerb,'') == 0){
                    $custom_headerb .= 'keywords=';
                    $custom_headerb .= $this->fields->keywords;
                }else{
                    $custom_headerb .= '&keywords=';
                    $custom_headerb .= $this->fields->keywords;
                }
            }
            if(strcmp($custom_headerb,'') == 0){
                $this->header(Content::exportGeneratorRules($this));
            }else{
                $this->header($custom_headerb);
            }
        }
    ?>
解释
  • 先判断是不是首页,如果是首页就用原方法。
  • 如果不是首页,就分别判断descriptionkeywords是否填写,将他们拼起来。
  • 如果descriptionkeywords都没填写依旧用原方法。
  • 最后送到header()函数中去。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 04 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 情况
  • 操作
    • 修改文章撰写页自定义字段菜单
      • 修改修改Typecho内容文章基类的description和keywords来源
        • 完成
        • 2022-04-21 更新
          • 情况
            • 操作
              • 修复首页description和keywords显示BUG
              • 修改Handsome源码的方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档