dev
truthhun 1 year ago
parent 45e046c82f
commit 81a89c0918

@ -47,6 +47,7 @@ func (s *ConfigAPIService) UpdateConfig(ctx context.Context, req *pb.Configs) (*
fmt.Println(err.Error())
}
doesUpdateSEO := false
isEmail := false
for idx, cfg := range cfgs {
if cfg.Category == model.ConfigCategoryEmail && cfg.Name == model.ConfigEmailPassword && cfg.Value == "******" {
@ -54,6 +55,9 @@ func (s *ConfigAPIService) UpdateConfig(ctx context.Context, req *pb.Configs) (*
cfgs[idx].Value = s.dbModel.GetConfigOfEmail(model.ConfigEmailPassword).Password
}
isEmail = isEmail || cfg.Category == model.ConfigCategoryEmail
if cfg.Category == model.ConfigCategorySystem {
doesUpdateSEO = true
}
}
err = s.dbModel.UpdateConfigs(cfgs, "value")
@ -71,6 +75,10 @@ func (s *ConfigAPIService) UpdateConfig(ctx context.Context, req *pb.Configs) (*
}
}
if doesUpdateSEO {
s.dbModel.InitSEO()
}
return &emptypb.Empty{}, nil
}

@ -254,7 +254,12 @@ func (m *DBModel) initDatabase() (err error) {
// 初始化友情链接
if err = m.initFriendlink(); err != nil {
m.logger.Error("initFriendlink", zap.Error(err))
return
}
// 初始化静态页面SEO
m.InitSEO()
return
}

@ -1,6 +1,7 @@
package model
import (
"bytes"
"fmt"
"moredoc/util/sitemap"
"os"
@ -9,6 +10,7 @@ import (
"strings"
"time"
"github.com/PuerkitoBio/goquery"
"go.uber.org/zap"
"gorm.io/gorm"
)
@ -108,6 +110,52 @@ func (m *DBModel) UpdateSitemap() (err error) {
return
}
// SEO
func (m *DBModel) InitSEO() {
// 扫描dist目录下的所有HTML文件将文件名作为SEO的关键字
cfg := m.GetConfigOfSystem()
dist := "dist"
pages := map[string]string{
"200.html": "",
"404.html": "404 - 页面未找到 - ",
"findpassword/index.html": "找回密码 - ",
"index.html": "",
"login/index.html": "用户登录 - ",
"register/index.html": "用户注册 - ",
"search/index.html": "文档搜索 - ",
"upload/index.html": "文档上传 - ",
}
filepath.Walk(dist, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
path = filepath.ToSlash(path)
if filepath.Ext(path) == ".html" && !strings.HasPrefix(path, dist+"/admin") {
name := strings.TrimPrefix(path, dist+"/")
if defaultTitle, ok := pages[name]; ok {
m.logger.Debug("initSEO", zap.String("file", path))
bs, _ := os.ReadFile(path)
if doc, errDoc := goquery.NewDocumentFromReader(bytes.NewReader(bs)); errDoc != nil {
m.logger.Error("initSEO", zap.Error(errDoc), zap.String("file", path))
} else {
doc.Find("title").SetText(defaultTitle + cfg.Sitename)
doc.Find("meta[name='keywords']").SetAttr("content", cfg.Keywords)
doc.Find("meta[name='description']").SetAttr("content", cfg.Description)
doc.Find("meta[content='moredoc']").Remove()
doc.Find("meta[name='og:type']").Remove()
if htmlStr, errHtml := doc.Html(); errHtml == nil {
os.WriteFile(path, []byte(htmlStr), os.ModePerm)
}
}
}
}
return nil
})
}
func (m *DBModel) cronUpdateSitemap() {
layout := "2006-01-02"
lastUpdated := time.Now().Format(layout)

@ -10,7 +10,8 @@ export default {
name: 'viewport',
content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0',
},
{ hid: 'description', name: 'description', content: '' },
{ name: 'keywords', content: '' },
{ name: 'description', content: '' },
{ name: 'format-detection', content: 'telephone=no' },
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],

Loading…
Cancel
Save