Skip to content

Commit 5971fbd

Browse files
committed
每天凌晨自动更新站点地图(sitemap)
1 parent fa6c3c0 commit 5971fbd

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

TODO.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
- [x] 文档上传过程中临时文件命名出现重名的问题
3434
- [x] 后台配置了备案号前台无法显示的问题(不知道是什么时候写死在模板里了)
3535
- [x] 是否允许上传重复文档(管理后台 -> 系统设置 进行设置)
36+
- [x] 每天凌晨 2:00 自动更新站点地图(sitemap)
3637

3738
## DocHub v2.3
3839
- [ ] 用户注册和登录成功之后的跳转优化

models/Models.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func Init() {
6161
}
6262
//安装初始数据
6363
install()
64+
AutoSitemap()
6465
}
6566

6667
//注册数据库

models/SeoModel.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@ func GetTableSeo() string {
3535
return getTable("seo")
3636
}
3737

38+
// 自动更新站点地图
39+
func AutoSitemap() {
40+
go func() {
41+
seo := NewSeo()
42+
file := filepath.Join(helper.RootPath, "sitemap.xml")
43+
for {
44+
now := time.Now()
45+
targetTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" 02:00:00", time.Local)
46+
info, err := os.Stat(file)
47+
if err != nil {
48+
seo.BuildSitemap()
49+
} else {
50+
// 当前时间大于目标时间,并且文件更新时间小于目标时间
51+
if now.Sub(targetTime) > 0 && info.ModTime().Sub(targetTime) < 0 && NewSys().GetByField("AutoSitemap").AutoSitemap {
52+
seo.BuildSitemap()
53+
}
54+
}
55+
time.Sleep(1 * time.Minute)
56+
}
57+
}()
58+
}
59+
3860
//获取SEO
3961
//@param page 页面
4062
//@param defaultTitle 默认标题
@@ -101,7 +123,7 @@ func (this *Seo) BuildSitemap() {
101123
fileNum = fileNum + 1
102124
}
103125
//创建文件夹
104-
os.MkdirAll("sitemap", os.ModePerm)
126+
os.MkdirAll(filepath.Join(helper.RootPath, "sitemap"), os.ModePerm)
105127
for i := 0; i < fileNum; i++ {
106128
var docs []DocumentInfo
107129
o.QueryTable(GetTableDocumentInfo()).Filter("Status__gt", -1).Limit(limit).Offset(i*limit).All(&docs, "Id", "TimeCreate")
@@ -118,7 +140,7 @@ func (this *Seo) BuildSitemap() {
118140
Priority: 0.9,
119141
})
120142
}
121-
if err := Sitemap.CreateSitemapContent(su, file); err != nil {
143+
if err := Sitemap.CreateSitemapContent(su, filepath.Join(helper.RootPath, file)); err != nil {
122144
helper.Logger.Error("sitemap生成失败:" + err.Error())
123145
}
124146
}

models/SysModel.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ type Sys struct {
4242
StoreType string `orm:"default(cs-oss);column(StoreType);size(15)"` //文档存储方式
4343
CheckRegEmail bool `orm:"default(true);column(CheckRegEmail);"` //是否需要验证注册邮箱,如果需要验证注册邮箱,提要求发送注册验证码
4444
AllowRepeatedDoc bool `orm:"default(false);column(AllowRepeatedDoc)"` //是否允许上传重复文档
45+
AutoSitemap bool `orm:"default(true);column(AutoSitemap)"` //每天凌晨自动更新站点地图
4546
}
4647

4748
func NewSys() *Sys {

views/Admin/default/Sys/index.html

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,19 @@ <h1 class="page-header">系统设置</h1>
2828
<input type="text" class="form-control" name="DomainPc" value="{{.DomainPc}}" />
2929
</div>
3030

31+
32+
<div class="form-group">
33+
<label >网站备案号</label>
34+
<input type="text" class="form-control" name="Icp" placeholder="请输入网站备案号,如 桂ICP备 xxxx" value="{{.Icp}}" />
35+
</div>
36+
3137
<div class="col-xs-4" style="padding-left: 0px;">
3238
<div class="form-group">
33-
<label >网站备案号</label>
34-
<input type="text" class="form-control" name="Icp" placeholder="请输入网站备案号,如 桂ICP备 xxxx" value="{{.Icp}}" />
39+
<label >是否每天凌晨2:00自动更新站点地图</label>
40+
<select name="AutoSitemap" class="form-control">
41+
<option {{if eq .AutoSitemap true}}selected="selected"{{end}} value="true">启用</option>
42+
<option {{if eq .AutoSitemap false}}selected="selected"{{end}} value="false">关闭</option>
43+
</select>
3544
</div>
3645
</div>
3746

0 commit comments

Comments
 (0)