golang简单高效的网站地图生成插件库sitemap-format的使用
Golang简单高效的网站地图生成插件库sitemap-format的使用
简介
sitemap-format是一个简单高效的Golang网站地图生成库,具有简洁的语法糖。它可以帮助你快速生成符合标准的XML网站地图。
安装
go get github.com/mingard/sitemap-format
使用示例
创建基本网站地图
package main
import (
"fmt"
sitemap "github.com/mingard/sitemap-format"
)
func main() {
// 创建新的sitemap实例
xml := sitemap.New()
// 创建新的位置条目
loc := sitemap.NewLoc()
loc.SetLocation("https://domain.com")
// 将位置添加到sitemap
xml.Add(loc)
// 输出XML字符串
out, _ := xml.OutputString()
fmt.Println(out)
}
/*
输出:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://domain.com</loc>
<lastmod>2022-11-03T11:56:00.26065Z</lastmod>
</url>
</urlset>
*/
完整功能示例
package main
import (
"fmt"
"time"
sitemap "github.com/mingard/sitemap-format"
)
func main() {
// 创建sitemap实例
sm := sitemap.New()
// 添加多个URL
urls := []string{
"https://domain.com/home",
"https://domain.com/about",
"https://domain.com/contact",
}
for _, url := range urls {
loc := sitemap.NewLoc()
loc.SetLocation(url)
// 设置最后修改时间(可选)
loc.SetLastMod(time.Now())
// 设置变更频率(可选)
loc.SetChangeFreq("weekly")
// 设置优先级(可选)
loc.SetPriority(0.8)
sm.Add(loc)
}
// 输出到字符串
xmlString, err := sm.OutputString()
if err != nil {
fmt.Println("生成sitemap出错:", err)
return
}
fmt.Println(xmlString)
// 也可以直接写入文件
// err = sm.OutputToFile("sitemap.xml")
// if err != nil {
// fmt.Println("写入文件出错:", err)
// }
}
特性
- 简单易用的API
- 自动生成符合标准的XML
- 支持所有sitemap属性(loc, lastmod, changefreq, priority)
- 100%测试覆盖率
- 良好的文档支持
这个库非常适合需要快速生成网站地图的Golang项目,使用简单且功能完整。
更多关于golang简单高效的网站地图生成插件库sitemap-format的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang简单高效的网站地图生成插件库sitemap-format的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用sitemap-format生成网站地图
sitemap-format是一个简单高效的Go语言网站地图生成库,它可以帮助你快速生成符合Google标准的XML网站地图。下面我将详细介绍如何使用这个库。
安装
首先使用go get安装这个库:
go get github.com/ikeikeikeike/go-sitemap-generator/v2/stm
基本用法
创建简单的网站地图
package main
import (
"os"
"github.com/ikeikeikeike/go-sitemap-generator/v2/stm"
)
func main() {
// 创建sitemap对象
sm := stm.NewSitemap()
// 设置基本信息
sm.SetDefaultHost("https://www.example.com")
sm.SetSitemapsPath("sitemaps") // 可选,设置sitemap文件存放路径
sm.SetCompress(true) // 可选,是否压缩生成.gz文件
sm.SetVerbose(true) // 可选,显示详细日志
// 添加URL
sm.Add(stm.URL{
{"loc", "/"},
{"lastmod", "2023-01-01"},
{"changefreq", "daily"},
{"priority", "1.0"},
})
sm.Add(stm.URL{
{"loc", "/about"},
{"lastmod", "2023-01-02"},
{"changefreq", "monthly"},
{"priority", "0.8"},
})
// 生成sitemap文件
err := sm.Finalize().Write()
if err != nil {
panic(err)
}
}
生成sitemap索引文件
当你的网站很大时,可能需要分割成多个sitemap文件,这时可以使用sitemap索引:
func main() {
sm := stm.NewSitemap()
sm.SetDefaultHost("https://www.example.com")
// 创建第一个sitemap
sm1 := sm.NewSitemap()
sm1.SetFilename("sitemap1.xml")
sm1.Add(stm.URL{{"loc", "/page1"}})
// 创建第二个sitemap
sm2 := sm.NewSitemap()
sm2.SetFilename("sitemap2.xml")
sm2.Add(stm.URL{{"loc", "/page2"}})
// 生成sitemap索引文件
sm.CreateSitemapIndex()
// 写入文件
err := sm.Finalize().Write()
if err != nil {
panic(err)
}
}
自定义输出
如果你不想直接写入文件,可以获取XML内容:
func main() {
sm := stm.NewSitemap()
sm.SetDefaultHost("https://www.example.com")
sm.Add(stm.URL{{"loc", "/"}})
// 获取XML内容
content, err := sm.XMLContent()
if err != nil {
panic(err)
}
// 自定义处理XML内容
os.WriteFile("custom_sitemap.xml", content, 0644)
}
高级功能
添加图片和视频
sitemap-format支持添加图片和视频信息:
sm.Add(stm.URL{
{"loc", "/gallery"},
{"image", []stm.Attrs{
{{"loc", "https://example.com/image1.jpg"}},
{{"loc", "https://example.com/image2.jpg"}},
}},
{"video", []stm.Attrs{
{
{"thumbnail_loc", "https://example.com/video1_thumbnail.jpg"},
{"title", "Video 1"},
{"description", "This is video 1"},
{"content_loc", "https://example.com/video1.mp4"},
},
}},
})
设置命名空间
如果需要添加自定义命名空间:
sm.SetNamespaces(map[string]string{
"image": "http://www.google.com/schemas/sitemap-image/1.1",
"video": "http://www.google.com/schemas/sitemap-video/1.1",
})
最佳实践
- URL数量限制:单个sitemap文件最多包含50,000个URL,文件大小不超过50MB
- 更新频率:根据内容实际更新频率设置changefreq
- 优先级:合理设置priority,首页通常设为1.0,重要页面0.8-0.9,一般内容0.5-0.7
- 自动生成:建议将sitemap生成集成到内容发布流程中
总结
sitemap-format是一个功能全面且易于使用的Go语言网站地图生成库。它支持:
- 标准URL条目
- 图片和视频扩展
- 多sitemap文件分割
- sitemap索引生成
- 自动压缩
- 自定义输出
通过合理使用这个库,你可以轻松为网站生成搜索引擎友好的sitemap,提升网站内容的可发现性。