This commit is contained in:
xing 2023-02-09 16:08:18 +08:00
parent 1100b89312
commit abfcc9b1ad
2 changed files with 28 additions and 18 deletions

View File

@ -18,6 +18,14 @@ type Handle struct {
Stats int Stats int
} }
func (h Handle) Detail() {
}
func (h Handle) Index() {
}
type Fn[T any] func(T) T type Fn[T any] func(T) T
type Plugin[T any] func(next Fn[T], h Handle, t T) T type Plugin[T any] func(next Fn[T], h Handle, t T) T

View File

@ -42,18 +42,23 @@ func Hook(h2 common.Handle) {
return return
} }
if h.Scene == plugins.Detail { if h.Scene == plugins.Detail {
h.detail() h.Detail()
return return
} }
h.index() h.Index()
} }
var plugin = common.Plugins() var plugin = func() []common.Plugin[models.Posts] {
return append(common.Plugins(), postThumbnail)
}()
func (h handle) index() { func (h handle) Index() {
if h.Stats != plugins.Empty404 { if h.Stats != plugins.Empty404 {
posts := h.GinH["posts"].([]models.Posts)
posts = slice.Map(posts, common.PluginFn[models.Posts](plugin, h.Handle, common.Digests(h.C))) h.GinH["posts"] = slice.Map(
h.GinH["posts"].([]models.Posts),
common.PluginFn[models.Posts](plugin, h.Handle, common.Digests(h.C)))
p, ok := h.GinH["pagination"] p, ok := h.GinH["pagination"]
if ok { if ok {
pp, ok := p.(pagination.ParsePagination) pp, ok := p.(pagination.ParsePagination)
@ -61,14 +66,13 @@ func (h handle) index() {
h.GinH["pagination"] = pagination.Paginate(paginate, pp) h.GinH["pagination"] = pagination.Paginate(paginate, pp)
} }
} }
h.GinH["posts"] = h.postThumbnail(posts, h.Scene)
} }
h.GinH["bodyClass"] = h.bodyClass() h.GinH["bodyClass"] = h.bodyClass()
h.C.HTML(h.Code, h.templ, h.GinH) h.C.HTML(h.Code, h.templ, h.GinH)
} }
func (h handle) detail() { func (h handle) Detail() {
post := h.GinH["post"].(models.Posts) post := h.GinH["post"].(models.Posts)
h.GinH["bodyClass"] = h.bodyClass() h.GinH["bodyClass"] = h.bodyClass()
//host, _ := wpconfig.Options.Load("siteurl") //host, _ := wpconfig.Options.Load("siteurl")
@ -105,17 +109,15 @@ func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls
return plugins.FormatLi(templ, ctx, m, depth, isTls, eo, parent) return plugins.FormatLi(templ, ctx, m, depth, isTls, eo, parent)
} }
func (h handle) postThumbnail(posts []models.Posts, scene int) []models.Posts { func postThumbnail(next common.Fn[models.Posts], h common.Handle, t models.Posts) models.Posts {
return slice.Map(posts, func(t models.Posts) models.Posts { if t.Thumbnail.Path != "" {
if t.Thumbnail.Path != "" { if slice.IsContained(h.Scene, []int{plugins.Home, plugins.Archive, plugins.Search}) {
if slice.IsContained(scene, []int{plugins.Home, plugins.Archive, plugins.Search}) { t.Thumbnail.Sizes = "(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px"
t.Thumbnail.Sizes = "(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" } else {
} else { t.Thumbnail.Sizes = "100vw"
t.Thumbnail.Sizes = "100vw"
}
} }
return t }
}) return next(t)
} }
func (h handle) getHeaderImage(c *gin.Context) (r models.PostThumbnail) { func (h handle) getHeaderImage(c *gin.Context) (r models.PostThumbnail) {