From b69248f6a4937f8157d2393bd44c6c55174ae3e7 Mon Sep 17 00:00:00 2001 From: "henry.chen" Date: Thu, 17 Jul 2025 15:55:32 +0800 Subject: [PATCH] feat: support custom page --- cmd/eiblog/config/config.go | 1 + cmd/eiblog/etc/app.yml | 4 ++++ cmd/eiblog/etc/page/custom.html | 8 ++++++++ cmd/eiblog/etc/{website => template}/404.html | 0 cmd/eiblog/etc/{website => template}/README.md | 0 cmd/eiblog/etc/{website => template}/about.html | 0 .../etc/{website => template}/admin/adminLayout.html | 0 .../etc/{website => template}/admin/discussion.html | 0 cmd/eiblog/etc/{website => template}/admin/draft.html | 0 .../etc/{website => template}/admin/general.html | 0 cmd/eiblog/etc/{website => template}/admin/login.html | 0 cmd/eiblog/etc/{website => template}/admin/post.html | 0 cmd/eiblog/etc/{website => template}/admin/posts.html | 0 .../etc/{website => template}/admin/profile.html | 0 cmd/eiblog/etc/{website => template}/admin/serie.html | 0 cmd/eiblog/etc/{website => template}/admin/series.html | 0 cmd/eiblog/etc/{website => template}/admin/tags.html | 0 cmd/eiblog/etc/{website => template}/admin/trash.html | 0 cmd/eiblog/etc/{website => template}/archives.html | 0 cmd/eiblog/etc/{website => template}/article.html | 0 cmd/eiblog/etc/{website => template}/blogroll.html | 0 cmd/eiblog/etc/{website => template}/disqus.html | 0 cmd/eiblog/etc/{website => template}/home.html | 0 cmd/eiblog/etc/{website => template}/homeLayout.html | 2 +- cmd/eiblog/etc/{website => template}/search.html | 0 cmd/eiblog/etc/{website => template}/series.html | 0 cmd/eiblog/etc/{website => template}/st_ana.js | 0 cmd/eiblog/etc/{website => template}/st_blog.css | 0 cmd/eiblog/etc/{website => template}/st_blog.js | 0 cmd/eiblog/etc/{website => template}/st_highlight.js | 0 cmd/eiblog/etc/{website => template}/st_jq.js | 0 cmd/eiblog/etc/{template => xml}/crossdomainTpl.xml | 0 cmd/eiblog/etc/{template => xml}/feedTpl.xml | 0 cmd/eiblog/etc/{template => xml}/opensearchTpl.xml | 0 cmd/eiblog/etc/{template => xml}/robotsTpl.xml | 0 cmd/eiblog/etc/{template => xml}/sitemapTpl.xml | 0 cmd/eiblog/handler/internal/internal.go | 4 ++-- cmd/eiblog/handler/page/fe.go | 1 + cmd/eiblog/main.go | 2 ++ pkg/config/enums.go | 10 ++++++++++ 40 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 cmd/eiblog/etc/page/custom.html rename cmd/eiblog/etc/{website => template}/404.html (100%) rename cmd/eiblog/etc/{website => template}/README.md (100%) rename cmd/eiblog/etc/{website => template}/about.html (100%) rename cmd/eiblog/etc/{website => template}/admin/adminLayout.html (100%) rename cmd/eiblog/etc/{website => template}/admin/discussion.html (100%) rename cmd/eiblog/etc/{website => template}/admin/draft.html (100%) rename cmd/eiblog/etc/{website => template}/admin/general.html (100%) rename cmd/eiblog/etc/{website => template}/admin/login.html (100%) rename cmd/eiblog/etc/{website => template}/admin/post.html (100%) rename cmd/eiblog/etc/{website => template}/admin/posts.html (100%) rename cmd/eiblog/etc/{website => template}/admin/profile.html (100%) rename cmd/eiblog/etc/{website => template}/admin/serie.html (100%) rename cmd/eiblog/etc/{website => template}/admin/series.html (100%) rename cmd/eiblog/etc/{website => template}/admin/tags.html (100%) rename cmd/eiblog/etc/{website => template}/admin/trash.html (100%) rename cmd/eiblog/etc/{website => template}/archives.html (100%) rename cmd/eiblog/etc/{website => template}/article.html (100%) rename cmd/eiblog/etc/{website => template}/blogroll.html (100%) rename cmd/eiblog/etc/{website => template}/disqus.html (100%) rename cmd/eiblog/etc/{website => template}/home.html (100%) rename cmd/eiblog/etc/{website => template}/homeLayout.html (58%) rename cmd/eiblog/etc/{website => template}/search.html (100%) rename cmd/eiblog/etc/{website => template}/series.html (100%) rename cmd/eiblog/etc/{website => template}/st_ana.js (100%) rename cmd/eiblog/etc/{website => template}/st_blog.css (100%) rename cmd/eiblog/etc/{website => template}/st_blog.js (100%) rename cmd/eiblog/etc/{website => template}/st_highlight.js (100%) rename cmd/eiblog/etc/{website => template}/st_jq.js (100%) rename cmd/eiblog/etc/{template => xml}/crossdomainTpl.xml (100%) rename cmd/eiblog/etc/{template => xml}/feedTpl.xml (100%) rename cmd/eiblog/etc/{template => xml}/opensearchTpl.xml (100%) rename cmd/eiblog/etc/{template => xml}/robotsTpl.xml (100%) rename cmd/eiblog/etc/{template => xml}/sitemapTpl.xml (100%) diff --git a/cmd/eiblog/config/config.go b/cmd/eiblog/config/config.go index 3beca38..f94923f 100644 --- a/cmd/eiblog/config/config.go +++ b/cmd/eiblog/config/config.go @@ -37,6 +37,7 @@ type Config struct { Twitter config.Twitter FeedRPC config.FeedRPC Account config.Account + Pages []config.CustomPage } // init 初始化配置 diff --git a/cmd/eiblog/etc/app.yml b/cmd/eiblog/etc/app.yml index 4630503..f966566 100644 --- a/cmd/eiblog/etc/app.yml +++ b/cmd/eiblog/etc/app.yml @@ -12,6 +12,10 @@ hotwords: # 热搜词 - dns staticversion: 1 eshost: # http://elasticsearch:9200 +pages: + - name: 自定义页面 + path: /page/custom.html + showinnav: true general: # 常规配置 pagenum: 10 # 首页展示文章数量 pagesize: 20 # 管理界面 diff --git a/cmd/eiblog/etc/page/custom.html b/cmd/eiblog/etc/page/custom.html new file mode 100644 index 0000000..f13b309 --- /dev/null +++ b/cmd/eiblog/etc/page/custom.html @@ -0,0 +1,8 @@ + + + Custom Page + + +

Custom Page

+ + \ No newline at end of file diff --git a/cmd/eiblog/etc/website/404.html b/cmd/eiblog/etc/template/404.html similarity index 100% rename from cmd/eiblog/etc/website/404.html rename to cmd/eiblog/etc/template/404.html diff --git a/cmd/eiblog/etc/website/README.md b/cmd/eiblog/etc/template/README.md similarity index 100% rename from cmd/eiblog/etc/website/README.md rename to cmd/eiblog/etc/template/README.md diff --git a/cmd/eiblog/etc/website/about.html b/cmd/eiblog/etc/template/about.html similarity index 100% rename from cmd/eiblog/etc/website/about.html rename to cmd/eiblog/etc/template/about.html diff --git a/cmd/eiblog/etc/website/admin/adminLayout.html b/cmd/eiblog/etc/template/admin/adminLayout.html similarity index 100% rename from cmd/eiblog/etc/website/admin/adminLayout.html rename to cmd/eiblog/etc/template/admin/adminLayout.html diff --git a/cmd/eiblog/etc/website/admin/discussion.html b/cmd/eiblog/etc/template/admin/discussion.html similarity index 100% rename from cmd/eiblog/etc/website/admin/discussion.html rename to cmd/eiblog/etc/template/admin/discussion.html diff --git a/cmd/eiblog/etc/website/admin/draft.html b/cmd/eiblog/etc/template/admin/draft.html similarity index 100% rename from cmd/eiblog/etc/website/admin/draft.html rename to cmd/eiblog/etc/template/admin/draft.html diff --git a/cmd/eiblog/etc/website/admin/general.html b/cmd/eiblog/etc/template/admin/general.html similarity index 100% rename from cmd/eiblog/etc/website/admin/general.html rename to cmd/eiblog/etc/template/admin/general.html diff --git a/cmd/eiblog/etc/website/admin/login.html b/cmd/eiblog/etc/template/admin/login.html similarity index 100% rename from cmd/eiblog/etc/website/admin/login.html rename to cmd/eiblog/etc/template/admin/login.html diff --git a/cmd/eiblog/etc/website/admin/post.html b/cmd/eiblog/etc/template/admin/post.html similarity index 100% rename from cmd/eiblog/etc/website/admin/post.html rename to cmd/eiblog/etc/template/admin/post.html diff --git a/cmd/eiblog/etc/website/admin/posts.html b/cmd/eiblog/etc/template/admin/posts.html similarity index 100% rename from cmd/eiblog/etc/website/admin/posts.html rename to cmd/eiblog/etc/template/admin/posts.html diff --git a/cmd/eiblog/etc/website/admin/profile.html b/cmd/eiblog/etc/template/admin/profile.html similarity index 100% rename from cmd/eiblog/etc/website/admin/profile.html rename to cmd/eiblog/etc/template/admin/profile.html diff --git a/cmd/eiblog/etc/website/admin/serie.html b/cmd/eiblog/etc/template/admin/serie.html similarity index 100% rename from cmd/eiblog/etc/website/admin/serie.html rename to cmd/eiblog/etc/template/admin/serie.html diff --git a/cmd/eiblog/etc/website/admin/series.html b/cmd/eiblog/etc/template/admin/series.html similarity index 100% rename from cmd/eiblog/etc/website/admin/series.html rename to cmd/eiblog/etc/template/admin/series.html diff --git a/cmd/eiblog/etc/website/admin/tags.html b/cmd/eiblog/etc/template/admin/tags.html similarity index 100% rename from cmd/eiblog/etc/website/admin/tags.html rename to cmd/eiblog/etc/template/admin/tags.html diff --git a/cmd/eiblog/etc/website/admin/trash.html b/cmd/eiblog/etc/template/admin/trash.html similarity index 100% rename from cmd/eiblog/etc/website/admin/trash.html rename to cmd/eiblog/etc/template/admin/trash.html diff --git a/cmd/eiblog/etc/website/archives.html b/cmd/eiblog/etc/template/archives.html similarity index 100% rename from cmd/eiblog/etc/website/archives.html rename to cmd/eiblog/etc/template/archives.html diff --git a/cmd/eiblog/etc/website/article.html b/cmd/eiblog/etc/template/article.html similarity index 100% rename from cmd/eiblog/etc/website/article.html rename to cmd/eiblog/etc/template/article.html diff --git a/cmd/eiblog/etc/website/blogroll.html b/cmd/eiblog/etc/template/blogroll.html similarity index 100% rename from cmd/eiblog/etc/website/blogroll.html rename to cmd/eiblog/etc/template/blogroll.html diff --git a/cmd/eiblog/etc/website/disqus.html b/cmd/eiblog/etc/template/disqus.html similarity index 100% rename from cmd/eiblog/etc/website/disqus.html rename to cmd/eiblog/etc/template/disqus.html diff --git a/cmd/eiblog/etc/website/home.html b/cmd/eiblog/etc/template/home.html similarity index 100% rename from cmd/eiblog/etc/website/home.html rename to cmd/eiblog/etc/template/home.html diff --git a/cmd/eiblog/etc/website/homeLayout.html b/cmd/eiblog/etc/template/homeLayout.html similarity index 58% rename from cmd/eiblog/etc/website/homeLayout.html rename to cmd/eiblog/etc/template/homeLayout.html index d917ec3..9c0f04a 100644 --- a/cmd/eiblog/etc/website/homeLayout.html +++ b/cmd/eiblog/etc/template/homeLayout.html @@ -1 +1 @@ -{{.Title}}{{.AdSense}}{{if .Version}}{{end}}{{if .Version}}{{else}}{{end}}
{{.LayoutContent}}
{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}} +{{.Title}}{{.AdSense}}{{if .Version}}{{end}}{{if .Version}}{{else}}{{end}}
{{.LayoutContent}}
{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}}{{if .Version}}{{else}}{{end}} diff --git a/cmd/eiblog/etc/website/search.html b/cmd/eiblog/etc/template/search.html similarity index 100% rename from cmd/eiblog/etc/website/search.html rename to cmd/eiblog/etc/template/search.html diff --git a/cmd/eiblog/etc/website/series.html b/cmd/eiblog/etc/template/series.html similarity index 100% rename from cmd/eiblog/etc/website/series.html rename to cmd/eiblog/etc/template/series.html diff --git a/cmd/eiblog/etc/website/st_ana.js b/cmd/eiblog/etc/template/st_ana.js similarity index 100% rename from cmd/eiblog/etc/website/st_ana.js rename to cmd/eiblog/etc/template/st_ana.js diff --git a/cmd/eiblog/etc/website/st_blog.css b/cmd/eiblog/etc/template/st_blog.css similarity index 100% rename from cmd/eiblog/etc/website/st_blog.css rename to cmd/eiblog/etc/template/st_blog.css diff --git a/cmd/eiblog/etc/website/st_blog.js b/cmd/eiblog/etc/template/st_blog.js similarity index 100% rename from cmd/eiblog/etc/website/st_blog.js rename to cmd/eiblog/etc/template/st_blog.js diff --git a/cmd/eiblog/etc/website/st_highlight.js b/cmd/eiblog/etc/template/st_highlight.js similarity index 100% rename from cmd/eiblog/etc/website/st_highlight.js rename to cmd/eiblog/etc/template/st_highlight.js diff --git a/cmd/eiblog/etc/website/st_jq.js b/cmd/eiblog/etc/template/st_jq.js similarity index 100% rename from cmd/eiblog/etc/website/st_jq.js rename to cmd/eiblog/etc/template/st_jq.js diff --git a/cmd/eiblog/etc/template/crossdomainTpl.xml b/cmd/eiblog/etc/xml/crossdomainTpl.xml similarity index 100% rename from cmd/eiblog/etc/template/crossdomainTpl.xml rename to cmd/eiblog/etc/xml/crossdomainTpl.xml diff --git a/cmd/eiblog/etc/template/feedTpl.xml b/cmd/eiblog/etc/xml/feedTpl.xml similarity index 100% rename from cmd/eiblog/etc/template/feedTpl.xml rename to cmd/eiblog/etc/xml/feedTpl.xml diff --git a/cmd/eiblog/etc/template/opensearchTpl.xml b/cmd/eiblog/etc/xml/opensearchTpl.xml similarity index 100% rename from cmd/eiblog/etc/template/opensearchTpl.xml rename to cmd/eiblog/etc/xml/opensearchTpl.xml diff --git a/cmd/eiblog/etc/template/robotsTpl.xml b/cmd/eiblog/etc/xml/robotsTpl.xml similarity index 100% rename from cmd/eiblog/etc/template/robotsTpl.xml rename to cmd/eiblog/etc/xml/robotsTpl.xml diff --git a/cmd/eiblog/etc/template/sitemapTpl.xml b/cmd/eiblog/etc/xml/sitemapTpl.xml similarity index 100% rename from cmd/eiblog/etc/template/sitemapTpl.xml rename to cmd/eiblog/etc/xml/sitemapTpl.xml diff --git a/cmd/eiblog/handler/internal/internal.go b/cmd/eiblog/handler/internal/internal.go index 74b9e04..c9eec69 100644 --- a/cmd/eiblog/handler/internal/internal.go +++ b/cmd/eiblog/handler/internal/internal.go @@ -39,12 +39,12 @@ func init() { logrus.Fatal("init timezone: ", err) } // 模板解析初始化 - root := filepath.Join(config.EtcDir, "template", "*.xml") + root := filepath.Join(config.EtcDir, "xml", "*.xml") XMLTemplate, err = template.New("eiblog").Funcs(tools.TplFuncMap).ParseGlob(root) if err != nil { logrus.Fatal("init xml template: ", err) } - root = filepath.Join(config.EtcDir, "website") + root = filepath.Join(config.EtcDir, "template") files := tools.ReadDirFiles(root, func(fi fs.DirEntry) bool { // should not read dir & .DS_Store return strings.HasPrefix(fi.Name(), ".") diff --git a/cmd/eiblog/handler/page/fe.go b/cmd/eiblog/handler/page/fe.go index a43ec48..dcf74b5 100644 --- a/cmd/eiblog/handler/page/fe.go +++ b/cmd/eiblog/handler/page/fe.go @@ -42,6 +42,7 @@ func baseFEParams(c *gin.Context) gin.H { "Disqus": config.Conf.Disqus, "AdSense": config.Conf.Google.AdSense, "Version": version, + "Pages": config.Conf.Pages, } } diff --git a/cmd/eiblog/main.go b/cmd/eiblog/main.go index 65e32e5..2530336 100644 --- a/cmd/eiblog/main.go +++ b/cmd/eiblog/main.go @@ -44,6 +44,8 @@ func runHTTPServer(endRun chan error) { // static files, page e.Static("/static", filepath.Join(config.EtcDir, "assets")) + // custom pages + e.Static("/page", filepath.Join(config.EtcDir, "page")) // static files file.RegisterRoutes(e) diff --git a/pkg/config/enums.go b/pkg/config/enums.go index 9ba469c..6a31d0c 100644 --- a/pkg/config/enums.go +++ b/pkg/config/enums.go @@ -118,3 +118,13 @@ type Blogger struct { // 版权, 如 本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。 Copyright string // 版权 } + +// CustomPage 自定义页面配置 +type CustomPage struct { + // 页面名称, 如 独立作品 + Name string + // 页面链接, 如 /works + Path string + // 是否显示在导航栏, 如 true + ShowInNav bool +}