golang简单高效的网站地图生成插件库sitemap-format的使用

Golang简单高效的网站地图生成插件库sitemap-format的使用

简介

sitemap-format是一个简单高效的Golang网站地图生成库,具有简洁的语法糖。它可以帮助你快速生成符合标准的XML网站地图。

Coverage

安装

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",
})

最佳实践

  1. URL数量限制:单个sitemap文件最多包含50,000个URL,文件大小不超过50MB
  2. 更新频率:根据内容实际更新频率设置changefreq
  3. 优先级:合理设置priority,首页通常设为1.0,重要页面0.8-0.9,一般内容0.5-0.7
  4. 自动生成:建议将sitemap生成集成到内容发布流程中

总结

sitemap-format是一个功能全面且易于使用的Go语言网站地图生成库。它支持:

  • 标准URL条目
  • 图片和视频扩展
  • 多sitemap文件分割
  • sitemap索引生成
  • 自动压缩
  • 自定义输出

通过合理使用这个库,你可以轻松为网站生成搜索引擎友好的sitemap,提升网站内容的可发现性。

回到顶部