diff --git a/internal/theme/common/bodyclass.go b/internal/theme/common/bodyclass.go
index a90a252..45006e3 100644
--- a/internal/theme/common/bodyclass.go
+++ b/internal/theme/common/bodyclass.go
@@ -12,14 +12,14 @@ import (
)
func (h *Handle) CalBodyClass() {
- h.GinH["bodyClass"] = h.BodyClass(h.Class...)
+ h.ginH["bodyClass"] = h.BodyClass(h.class...)
}
func (h *Handle) BodyClass(class ...string) string {
if constraints.Ok != h.Stats {
class = append(class, "error404")
}
- switch h.Scene {
+ switch h.scene {
case constraints.Home:
class = append(class, "home", "blog")
@@ -36,7 +36,7 @@ func (h *Handle) BodyClass(class ...string) string {
case constraints.Category, constraints.Tag:
class = append(class, "archive", "category")
cat := h.Index.Param.Category
- _, cate := slice.SearchFirst(cache.CategoriesTags(h.C, h.Scene), func(my models.TermsMy) bool {
+ _, cate := slice.SearchFirst(cache.CategoriesTags(h.C, h.scene), func(my models.TermsMy) bool {
return my.Name == cat
})
if cate.Slug[0] != '%' {
@@ -56,17 +56,17 @@ func (h *Handle) BodyClass(class ...string) string {
case constraints.Detail:
class = append(class, "post-template-default", "single", "single-post")
class = append(class, str.Join("postid-", number.ToString(h.Detail.Post.Id)))
- if len(h.ThemeMods.ThemeSupport.PostFormats) > 0 {
+ if len(h.themeMods.ThemeSupport.PostFormats) > 0 {
class = append(class, "single-format-standard")
}
}
- if wpconfig.IsCustomBackground(h.Theme) {
+ if wpconfig.IsCustomBackground(h.theme) {
class = append(class, "custom-background")
}
- if h.ThemeMods.CustomLogo > 0 || str.ToInteger(wpconfig.GetOption("site_logo"), 0) > 0 {
+ if h.themeMods.CustomLogo > 0 || str.ToInteger(wpconfig.GetOption("site_logo"), 0) > 0 {
class = append(class, "wp-custom-logo")
}
- if h.ThemeMods.ThemeSupport.ResponsiveEmbeds {
+ if h.themeMods.ThemeSupport.ResponsiveEmbeds {
class = append(class, "wp-embed-responsive")
}
return strings.Join(class, " ")
diff --git a/internal/theme/common/common.go b/internal/theme/common/common.go
index 94ae61e..b904aab 100644
--- a/internal/theme/common/common.go
+++ b/internal/theme/common/common.go
@@ -1,6 +1,7 @@
package common
import (
+ "github.com/fthvgb1/wp-go/helper/maps"
"github.com/fthvgb1/wp-go/helper/slice"
str "github.com/fthvgb1/wp-go/helper/strings"
"github.com/fthvgb1/wp-go/internal/cmd/reload"
@@ -17,35 +18,23 @@ type Handle struct {
Index *IndexHandle
Detail *DetailHandle
C *gin.Context
- Theme string
+ theme string
Session sessions.Session
- GinH gin.H
- Password string
- Scene int
+ ginH gin.H
+ password string
+ scene int
Code int
Stats int
- Templ string
- Class []string
- Components map[string][]Components
- ThemeMods wpconfig.ThemeMods
- HandleFns map[int][]HandleCall
- Error error
+ templ string
+ class []string
+ components map[string][]Components
+ themeMods wpconfig.ThemeMods
+ handleFns map[int][]HandleCall
+ err error
}
-func NewHandle(c *gin.Context, scene int, theme string) *Handle {
- mods, err := wpconfig.GetThemeMods(theme)
- logs.ErrPrintln(err, "获取mods失败")
- return &Handle{
- C: c,
- Theme: theme,
- Session: sessions.Default(c),
- GinH: gin.H{},
- Scene: scene,
- Stats: constraints.Ok,
- ThemeMods: mods,
- Components: make(map[string][]Components),
- HandleFns: make(map[int][]HandleCall),
- }
+func (h *Handle) CommonThemeMods() wpconfig.ThemeMods {
+ return h.themeMods
}
// Components Order 为执行顺序,降序执行
@@ -54,12 +43,68 @@ type Components struct {
Order int
}
+type HandleFn[T any] func(T)
+
+type HandlePipeFn[T any] func(HandleFn[T], T)
+
+type HandleCall struct {
+ Fn HandleFn[*Handle]
+ Order int
+}
+
+func (h *Handle) Err() error {
+ return h.err
+}
+
+func (h *Handle) SetErr(err error) {
+ h.err = err
+}
+
+func (h *Handle) Password() string {
+ return h.password
+}
+
+func (h *Handle) SetTempl(templ string) {
+ h.templ = templ
+}
+
+func (h *Handle) Scene() int {
+ return h.scene
+}
+
+func (h *Handle) SetDatas(GinH gin.H) {
+ maps.Merge(h.ginH, GinH)
+}
+func (h *Handle) SetData(k string, v any) {
+ h.ginH[k] = v
+}
+
+func (h *Handle) PushClass(class ...string) {
+ h.class = append(h.class, class...)
+}
+
+func NewHandle(c *gin.Context, scene int, theme string) *Handle {
+ mods, err := wpconfig.GetThemeMods(theme)
+ logs.ErrPrintln(err, "获取mods失败")
+ return &Handle{
+ C: c,
+ theme: theme,
+ Session: sessions.Default(c),
+ ginH: gin.H{},
+ scene: scene,
+ Stats: constraints.Ok,
+ themeMods: mods,
+ components: make(map[string][]Components),
+ handleFns: make(map[int][]HandleCall),
+ }
+}
+
func NewComponents(fn func(*Handle) string, order int) Components {
return Components{Fn: fn, Order: order}
}
func (h *Handle) PushHandleFn(stats int, fns ...HandleCall) {
- h.HandleFns[stats] = append(h.HandleFns[stats], fns...)
+ h.handleFns[stats] = append(h.handleFns[stats], fns...)
}
func (h *Handle) AddComponent(name string, fn func(*Handle) string) {
@@ -68,25 +113,25 @@ func (h *Handle) AddComponent(name string, fn func(*Handle) string) {
v = fn(h)
reload.SetStr(name, v)
}
- h.GinH[name] = v
+ h.ginH[name] = v
}
func (h *Handle) PushHeadScript(fn ...Components) {
- h.Components[constraints.HeadScript] = append(h.Components[constraints.HeadScript], fn...)
+ h.components[constraints.HeadScript] = append(h.components[constraints.HeadScript], fn...)
}
func (h *Handle) PushFooterScript(fn ...Components) {
- h.Components[constraints.FooterScript] = append(h.Components[constraints.FooterScript], fn...)
+ h.components[constraints.FooterScript] = append(h.components[constraints.FooterScript], fn...)
}
func (h *Handle) GetPassword() {
pw := h.Session.Get("post_password")
if pw != nil {
- h.Password = pw.(string)
+ h.password = pw.(string)
}
}
func (h *Handle) ExecHandleFns() {
- calls, ok := h.HandleFns[h.Stats]
+ calls, ok := h.handleFns[h.Stats]
if ok {
slice.SortSelf(calls, func(i, j HandleCall) bool {
return i.Order > j.Order
@@ -95,7 +140,7 @@ func (h *Handle) ExecHandleFns() {
call.Fn(h)
}
}
- fns, ok := h.HandleFns[constraints.AllStats]
+ fns, ok := h.handleFns[constraints.AllStats]
if ok {
for _, fn := range fns {
fn.Fn(h)
@@ -105,10 +150,10 @@ func (h *Handle) ExecHandleFns() {
}
func (h *Handle) PreTemplate() {
- if h.Templ == "" {
- h.Templ = str.Join(h.Theme, "/posts/index.gohtml")
- if h.Scene == constraints.Detail {
- h.Templ = str.Join(h.Theme, "/posts/detail.gohtml")
+ if h.templ == "" {
+ h.templ = str.Join(h.theme, "/posts/index.gohtml")
+ if h.scene == constraints.Detail {
+ h.templ = str.Join(h.theme, "/posts/detail.gohtml")
}
}
}
@@ -134,15 +179,15 @@ func (h *Handle) Render() {
h.AddComponent("customLogo", CalCustomLogo)
h.CalMultipleComponents()
h.CalBodyClass()
- h.C.HTML(h.Code, h.Templ, h.GinH)
+ h.C.HTML(h.Code, h.templ, h.ginH)
}
func (h *Handle) PushComponents(name string, components ...Components) {
- h.Components[name] = append(h.Components[name], components...)
+ h.components[name] = append(h.components[name], components...)
}
func (h *Handle) CalMultipleComponents() {
- for k, ss := range h.Components {
+ for k, ss := range h.components {
v, ok := reload.GetStr(k)
if !ok {
slice.SortSelf(ss, func(i, j Components) bool {
@@ -154,19 +199,10 @@ func (h *Handle) CalMultipleComponents() {
}), "\n")
reload.SetStr(k, v)
}
- h.GinH[k] = v
+ h.ginH[k] = v
}
}
-type HandleFn[T any] func(T)
-
-type HandlePipeFn[T any] func(HandleFn[T], T)
-
-type HandleCall struct {
- Fn HandleFn[*Handle]
- Order int
-}
-
func NewHandleFn(fn HandleFn[*Handle], order int) HandleCall {
return HandleCall{Fn: fn, Order: order}
}
@@ -181,7 +217,7 @@ func HandlePipe[T any](initial func(T), fns ...HandlePipeFn[T]) HandleFn[T] {
}
func Render(h *Handle) {
- switch h.Scene {
+ switch h.scene {
case constraints.Detail:
h.Detail.Render()
default:
diff --git a/internal/theme/common/customcss.go b/internal/theme/common/customcss.go
index 226e156..4217c9d 100644
--- a/internal/theme/common/customcss.go
+++ b/internal/theme/common/customcss.go
@@ -7,10 +7,10 @@ import (
)
func CalCustomCss(h *Handle) (r string) {
- if h.ThemeMods.CustomCssPostId < 1 {
+ if h.themeMods.CustomCssPostId < 1 {
return
}
- post, err := cache.GetPostById(h.C, uint64(h.ThemeMods.CustomCssPostId))
+ post, err := cache.GetPostById(h.C, uint64(h.themeMods.CustomCssPostId))
if err != nil || post.Id < 1 {
return
}
diff --git a/internal/theme/common/customheader.go b/internal/theme/common/customheader.go
index e5f7e80..38a7e0f 100644
--- a/internal/theme/common/customheader.go
+++ b/internal/theme/common/customheader.go
@@ -8,11 +8,11 @@ import (
)
func (h *Handle) DisplayHeaderText() bool {
- return h.ThemeMods.ThemeSupport.CustomHeader.HeaderText && "blank" != h.ThemeMods.HeaderTextcolor
+ return h.themeMods.ThemeSupport.CustomHeader.HeaderText && "blank" != h.themeMods.HeaderTextcolor
}
func (h *Handle) GetCustomHeader() (r models.PostThumbnail, isRand bool) {
- hs, err := cache.GetHeaderImages(h.C, h.Theme)
+ hs, err := cache.GetHeaderImages(h.C, h.theme)
if err != nil {
logs.ErrPrintln(err, "获取页眉背景图失败")
return
diff --git a/internal/theme/common/customlogo.go b/internal/theme/common/customlogo.go
index a0d66b7..6a5b74c 100644
--- a/internal/theme/common/customlogo.go
+++ b/internal/theme/common/customlogo.go
@@ -9,7 +9,7 @@ import (
)
func CalCustomLogo(h *Handle) (r string) {
- id := uint64(h.ThemeMods.CustomLogo)
+ id := uint64(h.themeMods.CustomLogo)
if id < 1 {
id = str.ToInteger[uint64](wpconfig.GetOption("site_logo"), 0)
if id < 1 {
diff --git a/internal/theme/common/detail.go b/internal/theme/common/detail.go
index 4047a12..b640ae1 100644
--- a/internal/theme/common/detail.go
+++ b/internal/theme/common/detail.go
@@ -24,7 +24,7 @@ func NewDetailHandle(handle *Handle) *DetailHandle {
}
func (d *DetailHandle) BuildDetailData() (err error) {
- d.GinH["title"] = wpconfig.GetOption("blogname")
+ d.ginH["title"] = wpconfig.GetOption("blogname")
err = d.CheckAndGetPost()
if err != nil {
return
@@ -41,7 +41,7 @@ func (d *DetailHandle) CheckAndGetPost() (err error) {
if id > maxId || id <= 0 {
d.Stats = constraints.ParamError
err = errors.New("无效的文档id")
- d.Class = append(d.Class, "error404")
+ d.class = append(d.class, "error404")
}
if err != nil {
return
@@ -55,24 +55,24 @@ func (d *DetailHandle) CheckAndGetPost() (err error) {
}
d.Post = post
- d.GinH["user"] = cache.GetUserById(d.C, post.PostAuthor)
- d.GinH["title"] = fmt.Sprintf("%s-%s", post.PostTitle, wpconfig.GetOption("blogname"))
+ d.ginH["user"] = cache.GetUserById(d.C, post.PostAuthor)
+ d.ginH["title"] = fmt.Sprintf("%s-%s", post.PostTitle, wpconfig.GetOption("blogname"))
return
}
func (d *DetailHandle) PasswordProject() {
if d.Post.PostPassword != "" {
plugins.PasswordProjectTitle(&d.Post)
- if d.Password != d.Post.PostPassword {
+ if d.password != d.Post.PostPassword {
plugins.PasswdProjectContent(&d.Post)
}
- d.GinH["post"] = d.Post
+ d.ginH["post"] = d.Post
}
}
func (d *DetailHandle) Comment() {
comments, err := cache.PostComments(d.C, d.Post.Id)
logs.ErrPrintln(err, "get d.Post comment", d.Post.Id)
- d.GinH["comments"] = comments
+ d.ginH["comments"] = comments
d.Comments = comments
}
@@ -83,27 +83,27 @@ func (d *DetailHandle) RenderComment() {
}
ableComment := true
if d.Post.CommentStatus != "open" ||
- (d.Post.PostPassword != "" && d.Password != d.Post.PostPassword) {
+ (d.Post.PostPassword != "" && d.password != d.Post.PostPassword) {
ableComment = false
}
- d.GinH["showComment"] = ableComment
+ d.ginH["showComment"] = ableComment
if len(d.Comments) > 0 && ableComment {
dep := str.ToInteger(wpconfig.GetOption("thread_comments_depth"), 5)
- d.GinH["comments"] = plugins.FormatComments(d.C, d.CommentRender, d.Comments, dep)
+ d.ginH["comments"] = plugins.FormatComments(d.C, d.CommentRender, d.Comments, dep)
}
}
func (d *DetailHandle) ContextPost() {
prev, next, err := cache.GetContextPost(d.C, d.Post.Id, d.Post.PostDate)
logs.ErrPrintln(err, "get pre and next post", d.Post.Id, d.Post.PostDate)
- d.GinH["next"] = next
- d.GinH["prev"] = prev
+ d.ginH["next"] = next
+ d.ginH["prev"] = prev
}
func (d *DetailHandle) Render() {
d.PasswordProject()
d.RenderComment()
- d.GinH["post"] = d.Post
+ d.ginH["post"] = d.Post
d.Handle.Render()
}
diff --git a/internal/theme/common/index.go b/internal/theme/common/index.go
index 9a5ec30..02dc4cd 100644
--- a/internal/theme/common/index.go
+++ b/internal/theme/common/index.go
@@ -29,7 +29,7 @@ func NewIndexHandle(handle *Handle) *IndexHandle {
func (i *IndexHandle) ParseIndex(parm *IndexParams) (err error) {
i.Param = parm
- switch i.Scene {
+ switch i.scene {
case constraints.Home, constraints.Search:
i.Param.ParseSearch()
case constraints.Category:
@@ -47,9 +47,9 @@ func (i *IndexHandle) ParseIndex(parm *IndexParams) (err error) {
}
i.Param.ParseParams()
i.Param.CacheKey = i.Param.getSearchKey()
- i.GinH["title"] = i.Param.getTitle()
- i.GinH["search"] = i.Param.Search
- i.GinH["header"] = i.Param.Header
+ i.ginH["title"] = i.Param.getTitle()
+ i.ginH["search"] = i.Param.Search
+ i.ginH["header"] = i.Param.Header
return
}
@@ -61,7 +61,7 @@ func (i *IndexHandle) GetIndexData() (posts []models.Posts, totalRaw int, err er
Join: i.Param.Join,
In: [][]any{i.Param.PostType, i.Param.PostStatus},
}
- switch i.Scene {
+ switch i.scene {
case constraints.Home, constraints.Category, constraints.Tag, constraints.Author:
posts, totalRaw, err = cache.PostLists(i.C, i.Param.CacheKey, i.C, q, i.Param.Page, i.Param.PageSize)
@@ -88,7 +88,7 @@ func (i *IndexHandle) Pagination() {
q = fmt.Sprintf("?%s", q)
}
paginations := pagination.NewParsePagination(i.TotalRows, i.Param.PageSize, i.Param.Page, i.Param.PaginationStep, q, i.C.Request.URL.Path)
- i.GinH["pagination"] = pagination.Paginate(i.PageEle, paginations)
+ i.ginH["pagination"] = pagination.Paginate(i.PageEle, paginations)
}
@@ -106,7 +106,7 @@ func (i *IndexHandle) BuildIndexData(parm *IndexParams) (err error) {
i.Posts = posts
i.TotalRows = totalRows
- i.GinH["totalPage"] = number.CalTotalPage(totalRows, i.Param.PageSize)
+ i.ginH["totalPage"] = number.CalTotalPage(totalRows, i.Param.PageSize)
return
}
@@ -121,7 +121,7 @@ func (i *IndexHandle) ExecPostsPlugin(calls ...func(*models.Posts)) {
}
plugin := GetListPostPlugins(pluginConf, postsPlugins)
- i.GinH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts](plugin, i.Handle, Defaults(calls...)))
+ i.ginH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts](plugin, i.Handle, Defaults(calls...)))
}
diff --git a/internal/theme/common/listpostplugins.go b/internal/theme/common/listpostplugins.go
index f1b9658..f20ecc3 100644
--- a/internal/theme/common/listpostplugins.go
+++ b/internal/theme/common/listpostplugins.go
@@ -33,7 +33,7 @@ func PasswordProject(next Fn[models.Posts], h *Handle, post models.Posts) (r mod
r = post
if post.PostPassword != "" {
plugins.PasswordProjectTitle(&r)
- if h.Password != post.PostPassword {
+ if h.password != post.PostPassword {
plugins.PasswdProjectContent(&r)
return
}
@@ -96,7 +96,7 @@ func (i *IndexHandle) ExecListPagePlugin(m map[string]Plugin[models.Posts, *Hand
plugin := GetListPostPlugins(pluginConf, m)
- i.GinH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts, *Handle](plugin, i.Handle, Defaults(calls...)))
+ i.ginH["posts"] = slice.Map(i.Posts, PluginFn[models.Posts, *Handle](plugin, i.Handle, Defaults(calls...)))
}
diff --git a/internal/theme/common/template.gohtml b/internal/theme/common/template.gohtml
index 1148039..af4522f 100644
--- a/internal/theme/common/template.gohtml
+++ b/internal/theme/common/template.gohtml
@@ -12,6 +12,12 @@
{{end}}
{{end}}
+{{define "common/footer"}}
+ {{if .footerScript}}
+ {{.footerScript|unescaped}}
+ {{end}}
+{{end}}
+
{{define "common/customLogo"}}
{{if .customLogo}}
{{.customLogo|unescaped}}
diff --git a/internal/theme/common/widgetareadata.go b/internal/theme/common/widgetareadata.go
index 7181ea7..ff3fa8a 100644
--- a/internal/theme/common/widgetareadata.go
+++ b/internal/theme/common/widgetareadata.go
@@ -7,8 +7,8 @@ import (
)
func (h *Handle) WidgetAreaData() {
- h.GinH["archives"] = cache.Archives(h.C)
- h.GinH["recentPosts"] = slice.Map(cache.RecentPosts(h.C, 5), ProjectTitle)
- h.GinH["categories"] = cache.CategoriesTags(h.C, constraints.Category)
- h.GinH["recentComments"] = cache.RecentComments(h.C, 5)
+ h.ginH["archives"] = cache.Archives(h.C)
+ h.ginH["recentPosts"] = slice.Map(cache.RecentPosts(h.C, 5), ProjectTitle)
+ h.ginH["categories"] = cache.CategoriesTags(h.C, constraints.Category)
+ h.ginH["recentComments"] = cache.RecentComments(h.C, 5)
}
diff --git a/internal/theme/twentyfifteen/colorschemecss.go b/internal/theme/twentyfifteen/colorschemecss.go
index d63416c..6fc7c95 100644
--- a/internal/theme/twentyfifteen/colorschemecss.go
+++ b/internal/theme/twentyfifteen/colorschemecss.go
@@ -19,7 +19,7 @@ func colorSchemeCss(h *common.Handle) string {
}
func calColorSchemeCss(h *common.Handle) (r string) {
color := getColorScheme(h)
- if "default" == h.ThemeMods.ColorScheme || len(color) < 1 {
+ if "default" == h.CommonThemeMods().ColorScheme || len(color) < 1 {
return
}
textColorRgb := slice.ToAnySlice(Hex2RgbUint8(color[3]))
@@ -48,29 +48,31 @@ func calColorSchemeCss(h *common.Handle) (r string) {
func calSidebarTextColorCss(h *common.Handle) (r string) {
colors := getColorScheme(h)
- if h.ThemeMods.SidebarTextcolor == "" || h.ThemeMods.SidebarTextcolor == colors[4] {
+ themeMods := h.CommonThemeMods()
+ if themeMods.SidebarTextcolor == "" || themeMods.SidebarTextcolor == colors[4] {
return
}
- linkColorRgb := Hex2RgbUint8(h.ThemeMods.SidebarTextcolor)
+ linkColorRgb := Hex2RgbUint8(themeMods.SidebarTextcolor)
color := slice.ToAnySlice(linkColorRgb)
textColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.7)`, color...)
borderColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.1)`, color...)
borderFocusColor := fmt.Sprintf(`rgba( %[1]v, %[2]v, %[3]v, 0.3)`, color...)
- r = fmt.Sprintf(sidebarTextColorTemplate, h.ThemeMods.SidebarTextcolor, textColor, borderColor, borderFocusColor)
+ r = fmt.Sprintf(sidebarTextColorTemplate, themeMods.SidebarTextcolor, textColor, borderColor, borderFocusColor)
return
}
func calHeaderBackgroundColorCss(h *common.Handle) (r string) {
colors := getColorScheme(h)
- if h.ThemeMods.HeaderBackgroundColor == "" || h.ThemeMods.HeaderBackgroundColor == colors[1] {
+ themeMods := h.CommonThemeMods()
+ if themeMods.HeaderBackgroundColor == "" || themeMods.HeaderBackgroundColor == colors[1] {
return
}
- r = fmt.Sprintf(headerBackgroundColorCssTemplate, h.ThemeMods.HeaderBackgroundColor, h.ThemeMods.HeaderBackgroundColor)
+ r = fmt.Sprintf(headerBackgroundColorCssTemplate, themeMods.HeaderBackgroundColor, themeMods.HeaderBackgroundColor)
return
}
func getColorScheme(h *common.Handle) (r []string) {
- x, ok := colorscheme[h.ThemeMods.ColorScheme]
+ x, ok := colorscheme[h.CommonThemeMods().ColorScheme]
if ok {
r = x.Colors
}
diff --git a/internal/theme/twentyfifteen/custombackground.go b/internal/theme/twentyfifteen/custombackground.go
index 62216a3..fdba529 100644
--- a/internal/theme/twentyfifteen/custombackground.go
+++ b/internal/theme/twentyfifteen/custombackground.go
@@ -31,29 +31,30 @@ var repeat = map[string]string{
}
func CalCustomBackGround(h *common.Handle) (r string) {
- if h.ThemeMods.BackgroundImage == "" && h.ThemeMods.BackgroundColor == themesupport.CustomBackground.DefaultColor {
+ themeMods := h.CommonThemeMods()
+ if themeMods.BackgroundImage == "" && themeMods.BackgroundColor == themesupport.CustomBackground.DefaultColor {
return
}
s := str.NewBuilder()
- if h.ThemeMods.BackgroundImage != "" {
- s.Sprintf(` background-image: url("%s");`, helper.CutUrlHost(h.ThemeMods.BackgroundImage))
+ if themeMods.BackgroundImage != "" {
+ s.Sprintf(` background-image: url("%s");`, helper.CutUrlHost(themeMods.BackgroundImage))
}
- backgroundPositionX := helper.Defaults(h.ThemeMods.BackgroundPositionX, themesupport.CustomBackground.DefaultPositionX)
+ backgroundPositionX := helper.Defaults(themeMods.BackgroundPositionX, themesupport.CustomBackground.DefaultPositionX)
backgroundPositionX = maps.WithDefaultVal(postx, backgroundPositionX, "left")
- backgroundPositionY := helper.Defaults(h.ThemeMods.BackgroundPositionY, themesupport.CustomBackground.DefaultPositionY)
+ backgroundPositionY := helper.Defaults(themeMods.BackgroundPositionY, themesupport.CustomBackground.DefaultPositionY)
backgroundPositionY = maps.WithDefaultVal(posty, backgroundPositionY, "top")
positon := fmt.Sprintf(" background-position: %s %s;", backgroundPositionX, backgroundPositionY)
- siz := helper.DefaultVal(h.ThemeMods.BackgroundSize, themesupport.CustomBackground.DefaultSize)
+ siz := helper.DefaultVal(themeMods.BackgroundSize, themesupport.CustomBackground.DefaultSize)
siz = maps.WithDefaultVal(size, siz, "auto")
siz = fmt.Sprintf(" background-size: %s;", siz)
- repeats := helper.Defaults(h.ThemeMods.BackgroundRepeat, themesupport.CustomBackground.DefaultRepeat)
+ repeats := helper.Defaults(themeMods.BackgroundRepeat, themesupport.CustomBackground.DefaultRepeat)
repeats = maps.WithDefaultVal(repeat, repeats, "repeat")
repeats = fmt.Sprintf(" background-repeat: %s;", repeats)
- attachment := helper.Defaults(h.ThemeMods.BackgroundAttachment, themesupport.CustomBackground.DefaultAttachment)
+ attachment := helper.Defaults(themeMods.BackgroundAttachment, themesupport.CustomBackground.DefaultAttachment)
attachment = helper.Or(attachment == "fixed", "fixed", "scroll")
attachment = fmt.Sprintf(" background-attachment: %s;", attachment)
s.WriteString(positon, siz, repeats, attachment)
diff --git a/internal/theme/twentyfifteen/customheader.go b/internal/theme/twentyfifteen/customheader.go
index 3ee0560..c238df9 100644
--- a/internal/theme/twentyfifteen/customheader.go
+++ b/internal/theme/twentyfifteen/customheader.go
@@ -117,6 +117,6 @@ func customHeader(h *common.Handle) {
header.Store(headers)
}
}
- h.GinH["customHeader"] = headers
+ h.SetData("customHeader", headers)
return
}
diff --git a/internal/theme/twentyfifteen/layout/footer.gohtml b/internal/theme/twentyfifteen/layout/footer.gohtml
index 3094fdd..ec3cc11 100644
--- a/internal/theme/twentyfifteen/layout/footer.gohtml
+++ b/internal/theme/twentyfifteen/layout/footer.gohtml
@@ -12,6 +12,7 @@
- {{ block "footer" .}}
- {{end}}
+ {{template "common/footer" .}}
+ {{ block "footer" .}}
+ {{end}}
{{end}}
\ No newline at end of file
diff --git a/internal/theme/twentyfifteen/twentyfifteen.go b/internal/theme/twentyfifteen/twentyfifteen.go
index bae98a3..e011489 100644
--- a/internal/theme/twentyfifteen/twentyfifteen.go
+++ b/internal/theme/twentyfifteen/twentyfifteen.go
@@ -42,7 +42,7 @@ func dispatch(next common.HandleFn[*common.Handle], h *common.Handle) {
common.NewComponents(colorSchemeCss, 10),
)
h.PushHandleFn(constraints.AllStats, common.NewHandleFn(customHeader, 10))
- switch h.Scene {
+ switch h.Scene() {
case constraints.Detail:
detail(next, h.Detail)
default:
diff --git a/internal/theme/twentyseventeen/colorscheme.go b/internal/theme/twentyseventeen/colorscheme.go
index 668f3ee..38c254c 100644
--- a/internal/theme/twentyseventeen/colorscheme.go
+++ b/internal/theme/twentyseventeen/colorscheme.go
@@ -10,11 +10,11 @@ import (
)
func colorScheme(h *common.Handle) (r string) {
- if "custom" != wpconfig.GetThemeModsVal(h.Theme, "colorscheme", "light") {
+ if "custom" != wpconfig.GetThemeModsVal(ThemeName, "colorscheme", "light") {
return
}
s := str.NewBuilder()
- hue := number.ToString(wpconfig.GetThemeModsVal[int64](h.Theme, "colorscheme_hue", 250))
+ hue := number.ToString(wpconfig.GetThemeModsVal[int64](ThemeName, "colorscheme_hue", 250))
saturation := fmt.Sprintf("%d%%", int(.8*50))
css := customCss
for k, v := range map[string]string{
diff --git a/internal/theme/twentyseventeen/customheader.go b/internal/theme/twentyseventeen/customheader.go
index 366afb4..bdcc1c1 100644
--- a/internal/theme/twentyseventeen/customheader.go
+++ b/internal/theme/twentyseventeen/customheader.go
@@ -6,8 +6,9 @@ import (
)
func customHeader(h *common.Handle) (r string) {
- headerTextColor := h.ThemeMods.HeaderTextcolor
- if headerTextColor == "" || headerTextColor == h.ThemeMods.ThemeSupport.CustomHeader.DefaultTextColor {
+ themeMods := h.CommonThemeMods()
+ headerTextColor := themeMods.HeaderTextcolor
+ if headerTextColor == "" || headerTextColor == themeMods.ThemeSupport.CustomHeader.DefaultTextColor {
return
}
css := `
diff --git a/internal/theme/twentyseventeen/layout/footer.gohtml b/internal/theme/twentyseventeen/layout/footer.gohtml
index 3ccc3da..480ad5c 100644
--- a/internal/theme/twentyseventeen/layout/footer.gohtml
+++ b/internal/theme/twentyseventeen/layout/footer.gohtml
@@ -11,6 +11,7 @@
- {{ block "footer" .}}
- {{end}}
+ {{template "common/footer" .}}
+ {{ block "footer" .}}
+ {{end}}
{{end}}
\ No newline at end of file
diff --git a/internal/theme/twentyseventeen/twentyseventeen.go b/internal/theme/twentyseventeen/twentyseventeen.go
index ebe8698..cc01983 100644
--- a/internal/theme/twentyseventeen/twentyseventeen.go
+++ b/internal/theme/twentyseventeen/twentyseventeen.go
@@ -41,13 +41,13 @@ func ready(next common.HandleFn[*common.Handle], h *common.Handle) {
common.NewComponents(colorScheme, 10),
common.NewComponents(customHeader, 10),
)
- h.GinH["HeaderImage"] = getHeaderImage(h)
- h.GinH["scene"] = h.Scene
+ h.SetData("HeaderImage", getHeaderImage(h))
+ h.SetData("scene", h.Scene())
next(h)
}
func dispatch(next common.HandleFn[*common.Handle], h *common.Handle) {
- switch h.Scene {
+ switch h.Scene() {
case constraints.Detail:
detail(next, h.Detail)
default:
@@ -64,7 +64,7 @@ var listPostsPlugins = func() map[string]common.Plugin[models.Posts, *common.Han
func index(next common.HandleFn[*common.Handle], i *common.IndexHandle) {
err := i.BuildIndexData(common.NewIndexParams(i.C))
if err != nil {
- i.Templ = str.Join(ThemeName, "/posts/error.gohtml")
+ i.SetTempl(str.Join(ThemeName, "/posts/error.gohtml"))
i.Render()
return
}
@@ -76,7 +76,7 @@ func index(next common.HandleFn[*common.Handle], i *common.IndexHandle) {
func detail(next common.HandleFn[*common.Handle], d *common.DetailHandle) {
err := d.BuildDetailData()
if err != nil {
- d.Templ = str.Join(ThemeName, "/posts/error.gohtml")
+ d.SetTempl(str.Join(ThemeName, "/posts/error.gohtml"))
d.Render()
return
}
@@ -115,7 +115,7 @@ func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls
func postThumbnail(next common.Fn[models.Posts], h *common.Handle, t models.Posts) models.Posts {
if t.Thumbnail.Path != "" {
t.Thumbnail.Sizes = "(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px"
- if h.Scene == constraints.Detail {
+ if h.Scene() == constraints.Detail {
t.Thumbnail.Sizes = "100vw"
}
}
@@ -138,7 +138,7 @@ func getHeaderImage(h *common.Handle) (r models.PostThumbnail) {
}
return
}
- r.Path = helper.CutUrlHost(h.ThemeMods.ThemeSupport.CustomHeader.DefaultImage)
+ r.Path = helper.CutUrlHost(h.CommonThemeMods().ThemeSupport.CustomHeader.DefaultImage)
r.Width = 2000
r.Height = 1200
r.Sizes = "100vw"
@@ -147,23 +147,26 @@ func getHeaderImage(h *common.Handle) (r models.PostThumbnail) {
}
func calClass(h *common.Handle) {
- u := wpconfig.GetThemeModsVal(h.Theme, "header_image", h.ThemeMods.ThemeSupport.CustomHeader.DefaultImage)
+ themeMods := h.CommonThemeMods()
+ u := wpconfig.GetThemeModsVal(ThemeName, "header_image", themeMods.ThemeSupport.CustomHeader.DefaultImage)
+ var class []string
if u != "" && u != "remove-header" {
- h.Class = append(h.Class, "has-header-image")
+ class = append(class, "has-header-image")
}
- if len(h.ThemeMods.SidebarsWidgets.Data.Sidebar1) > 0 {
- h.Class = append(h.Class, "has-sidebar")
+ if len(themeMods.SidebarsWidgets.Data.Sidebar1) > 0 {
+ class = append(class, "has-sidebar")
}
- if h.ThemeMods.HeaderTextcolor == "blank" {
- h.Class = append(h.Class, "title-tagline-hidden")
+ if themeMods.HeaderTextcolor == "blank" {
+ class = append(class, "title-tagline-hidden")
}
- h.Class = append(h.Class, "hfeed")
- h.Class = append(h.Class, str.Join("colors-", wpconfig.GetThemeModsVal(h.Theme, "colorscheme", "light")))
- if h.Scene == constraints.Archive {
- if "one-column" == wpconfig.GetThemeModsVal(h.Theme, "page_layout", "") {
- h.Class = append(h.Class, "page-one-column")
+ class = append(class, "hfeed")
+ class = append(class, str.Join("colors-", wpconfig.GetThemeModsVal(ThemeName, "colorscheme", "light")))
+ if h.Scene() == constraints.Archive {
+ if "one-column" == wpconfig.GetThemeModsVal(ThemeName, "page_layout", "") {
+ class = append(class, "page-one-column")
} else {
- h.Class = append(h.Class, "page-two-column")
+ class = append(class, "page-two-column")
}
}
+ h.PushClass(class...)
}