一个网站是否对搜索引擎友好,除了内容质量和用户体验外,还有一个重要的因素,就是tdk的设置。tdk是页面三要素title、keywords、description的首字母简称。这一节,我们介绍如何使用golang给博客设置tdk。
文章的tdk在我们发布文章的时候,有可供填写的输入框,可以保存到数据库中,然而首页、列表页需要手工去设置。首页的tdk信息又是seo优化中重中之重的部分,我们需要合理给的博客各个页面设置好tdk信息。
定义页面tdk结构信息
我们在 controller/common.go 文件中,增加一个WebInfo 的struct结构体,并声明使用它:
type WebInfo struct {
Title string `json:"title"`
Keywords string `json:"keywords"`
Description string `json:"description"`
NavBar uint `json:"nav_bar"`
}
var webInfo WebInfo
TitleKeywordsDescriptionNavBar
Title_搜外网:SEO培训入门图文教程、网络营销技术视频网课Keywords,SEO,SEO培训,SEO教程Description搜外网专注SEO培训以及网络营销技术视频网课。为搜外用户提供符合SEO的建站系统搜外6系统、设计小程序的搜外七巧板、滴滴友链等工具平台。NavBar
在前端页面调用tdk信息
因此,我们打开 template/partials/header.html,在head标签内部,增加这三个标签:
<title>{% if webInfo.Title %}{{webInfo.Title}}_{% endif %}{{SiteName}}</title>
{% if webInfo.Keywords %}<meta name="keywords" content="{{webInfo.Keywords}}">{% endif %}
{% if webInfo.Description %}<meta name="description" content="{{webInfo.Description}}">{% endif %}
webInfo.TitleSiteName
keywords标签不是必须的,现在我们就把它做成有则显示,没有则不显示来处理。
同样,description标签也是一样,如果没有设置description信息,则不显示这个标签。
分别给每一个需要给搜索引擎抓取收录的页面设置tdk信息
上面我们已经定义好了tdk信息的结构内容,现在我们就将他们分别的添加到每一个控制器中。
IndexPage()
为了方便设置首页的tdk信息,我们将首页的tdk信息放到config.json中,server部分,扩展server信息:
//...
"server": {
"site_name": "看到你博客",
"env": "development",
"port": 8001,
"log_level": "debug",
"title": "看到你博客:Golang实战开发入门图文教程、Golang实战技术在线学习网站",
"keywords": "golang,golang实战开发,golang实战学习",
"description": "网上有很多的golang开发教程,他们都是从最基础的安装环境、golang语法开始的,对于一个小白,他是有帮助的。然而大家都知道,一味地接受学习,是一个枯燥到让人窒息的过程。更多的时候是,学完就完了,该忘的、不该忘的大部分都忘记了,没有根据自己的实际需求学习,大多都记忆不够深刻。为了打破这种低效率的学习过程,我将从这里开始,介绍一种带着需求学习的golang实战学习方式。",
"icp": "粤ICP备19130249号-2"
}
//...
再在config/server.go处理文件中,扩展server结构体:
type serverConfig struct {
SiteName string `json:"site_name"`
Env string `json:"env"`
Port int `json:"port"`
LogLevel string `json:"log_level"`
Title string `json:"title"`
Keywords string `json:"keywords"`
Description string `json:"description"`
Icp string `json:"icp"`
}
IndexPage()
webTitle := config.ServerConfig.Title
if category != nil {
webTitle += "_" + category.Title
webInfo.NavBar = category.Id
}
webInfo.Title = webTitle
webInfo.Keywords = config.ServerConfig.Keywords
webInfo.Description = config.ServerConfig.Description
ctx.ViewData("webInfo", webInfo)
首页中默认调用设置的title。如果存在分类筛选条件的话,则附加分类标题。首页描述、首页关键词则逐一调用。
ArticleDetail()
webInfo.Title = article.Title
webInfo.Keywords = article.Keywords
webInfo.Description = article.Description
ctx.ViewData("webInfo", webInfo)
文章详情页面中,我们则直接调用文章填写的tdk信息即可。
其他页面为了页面的信息完整,我们也添加上。
Install(ctx iris.Context)
webInfo.Title = "博客初始化"
ctx.ViewData("webInfo", webInfo)
AdminLogin(ctx iris.Context)
webInfo.Title = "登录"
ctx.ViewData("webInfo", webInfo)
至此,tdk信息算是设置完毕了。我们重启项目,来检查一下tdk信息,如果正常,则表示填写正确。
教程用例源码
完整的项目示例代码托管在GitHub上,访问github.com/fesiong/goblog 可以查看完整的教程项目源代码,建议在查看教程的同时,认真对照源码,可以有效提高码代码速度和加深对博客项目的认识。建议直接fork一份来在上面做修改。欢迎点Star。