优化 调整目录
This commit is contained in:
parent
b6b92ede34
commit
2d476ea4f6
|
@ -1,4 +1,4 @@
|
||||||
package components
|
package widgets
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SearchFormArgs = "SearchFormArgs"
|
SearchFormArgs = "SearchFormArgs"
|
|
@ -38,7 +38,7 @@ func commonTemplate(t *multipTemplate.MultipleFsTemplate) {
|
||||||
for _, main := range m {
|
for _, main := range m {
|
||||||
file := filepath.Base(main)
|
file := filepath.Base(main)
|
||||||
dir := strings.Split(main, "/")[0]
|
dir := strings.Split(main, "/")[0]
|
||||||
templ := template.Must(template.New(file).Funcs(t.FuncMap).ParseFS(t.Fs, main, filepath.Join(dir, "layout/*.gohtml"), "wp/template.gohtml", "wp/*/*/*.gohtml"))
|
templ := template.Must(template.New(file).Funcs(t.FuncMap).ParseFS(t.Fs, main, filepath.Join(dir, "layout/*.gohtml"), "wp/template.gohtml"))
|
||||||
t.SetTemplate(main, templ)
|
t.SetTemplate(main, templ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,11 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/config"
|
"github.com/fthvgb1/wp-go/internal/pkg/config"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints/components"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/logs"
|
"github.com/fthvgb1/wp-go/internal/pkg/logs"
|
||||||
"github.com/fthvgb1/wp-go/internal/plugins/wphandle"
|
"github.com/fthvgb1/wp-go/internal/plugins/wphandle"
|
||||||
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp/components"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -39,9 +40,9 @@ func Hook(h *wp.Handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func dispatch(next wp.HandleFn[*wp.Handle], h *wp.Handle) {
|
func dispatch(next wp.HandleFn[*wp.Handle], h *wp.Handle) {
|
||||||
h.WidgetArea()
|
components.WidgetArea(h)
|
||||||
h.GetPassword()
|
h.GetPassword()
|
||||||
h.PushComponentFilterFn(components.SearchFormArgs, func(h *wp.Handle, s string) string {
|
h.PushComponentFilterFn(widgets.SearchFormArgs, func(h *wp.Handle, s string) string {
|
||||||
return strings.ReplaceAll(s, `class="search-submit"`, `class="search-submit screen-reader-text"`)
|
return strings.ReplaceAll(s, `class="search-submit"`, `class="search-submit screen-reader-text"`)
|
||||||
})
|
})
|
||||||
wphandle.RegisterPlugins(h, config.GetConfig().Plugins...)
|
wphandle.RegisterPlugins(h, config.GetConfig().Plugins...)
|
||||||
|
|
|
@ -1,21 +1,5 @@
|
||||||
{{define "layout/sidebar" }}
|
{{define "layout/sidebar" }}
|
||||||
<section id="search-2" class="widget widget_search">
|
{{template "common/sidebarWidget" .}}
|
||||||
<form role="search" method="get" class="search-form" action="/">
|
|
||||||
<label for="search-form-1">
|
|
||||||
<span class="screen-reader-text">搜索:</span>
|
|
||||||
</label>
|
|
||||||
<input type="search" id="search-form-1" class="search-field" placeholder="搜索…" value="{{.search}}" name="s">
|
|
||||||
<button type="submit" class="search-submit">
|
|
||||||
<svg class="icon icon-search" aria-hidden="true" role="img">
|
|
||||||
<use href="#icon-search" xlink:href="#icon-search"></use>
|
|
||||||
</svg>
|
|
||||||
<span class="screen-reader-text">搜索</span>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</section>
|
|
||||||
{{template "common/recent-posts" .}}
|
|
||||||
{{template "common/recent-comments" .}}
|
|
||||||
{{template "common/archives" .}}
|
|
||||||
<section id="categories-2" class="widget widget_categories">
|
<section id="categories-2" class="widget widget_categories">
|
||||||
<h2 class="widget-title">分类</h2>
|
<h2 class="widget-title">分类</h2>
|
||||||
<nav aria-label="分类">
|
<nav aria-label="分类">
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/internal/plugins"
|
"github.com/fthvgb1/wp-go/internal/plugins"
|
||||||
"github.com/fthvgb1/wp-go/internal/plugins/wphandle"
|
"github.com/fthvgb1/wp-go/internal/plugins/wphandle"
|
||||||
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp/components"
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -47,7 +48,7 @@ func Hook(h *wp.Handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ready(next wp.HandleFn[*wp.Handle], h *wp.Handle) {
|
func ready(next wp.HandleFn[*wp.Handle], h *wp.Handle) {
|
||||||
h.WidgetArea()
|
components.WidgetArea(h)
|
||||||
h.GetPassword()
|
h.GetPassword()
|
||||||
wphandle.RegisterPlugins(h, config.GetConfig().Plugins...)
|
wphandle.RegisterPlugins(h, config.GetConfig().Plugins...)
|
||||||
h.PushHandleFn(constraints.AllStats, wp.NewHandleFn(calClass, 20))
|
h.PushHandleFn(constraints.AllStats, wp.NewHandleFn(calClass, 20))
|
||||||
|
|
71
internal/theme/wp/components/block.go
Normal file
71
internal/theme/wp/components/block.go
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
package components
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/dlclark/regexp2"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Block struct {
|
||||||
|
Closer string
|
||||||
|
NameSpace string
|
||||||
|
Name string
|
||||||
|
Attrs string
|
||||||
|
Void string
|
||||||
|
Len int
|
||||||
|
StartOffset int
|
||||||
|
}
|
||||||
|
|
||||||
|
var block = regexp2.MustCompile(`<!--\s+(?<closer>/)?wp:(?<namespace>[a-z][a-z0-9_-]*\/)?(?<name>[a-z][a-z0-9_-]*)\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?-->).)*)?}\s+)?(?<void>\/)?-->`, regexp2.IgnoreCase|regexp2.Singleline)
|
||||||
|
|
||||||
|
func ParseBlock(s string) []Block {
|
||||||
|
m, err := block.FindStringMatch(s)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
var blocks []Block
|
||||||
|
for m != nil {
|
||||||
|
if m.GroupCount() < 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
b, _ := token(m.Groups())
|
||||||
|
b.StartOffset = m.Group.Index
|
||||||
|
b.Len = m.Length
|
||||||
|
blocks = append(blocks, b)
|
||||||
|
m, _ = block.FindNextMatch(m)
|
||||||
|
}
|
||||||
|
return blocks
|
||||||
|
}
|
||||||
|
|
||||||
|
func token(g []regexp2.Group) (Block, string) {
|
||||||
|
if len(g) < 1 {
|
||||||
|
return Block{}, "no-more-tokens"
|
||||||
|
}
|
||||||
|
b := Block{NameSpace: "core/"}
|
||||||
|
for i, group := range g {
|
||||||
|
v := group.String()
|
||||||
|
if v == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
switch i {
|
||||||
|
case 1:
|
||||||
|
b.Closer = v
|
||||||
|
case 2:
|
||||||
|
b.NameSpace = v
|
||||||
|
case 3:
|
||||||
|
b.Name = v
|
||||||
|
case 4:
|
||||||
|
b.Attrs = v
|
||||||
|
case 5:
|
||||||
|
b.Void = v
|
||||||
|
default:
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if b.Void != "" {
|
||||||
|
return b, ""
|
||||||
|
}
|
||||||
|
if b.Closer != "" {
|
||||||
|
return b, "block-closer"
|
||||||
|
}
|
||||||
|
return b, "block-opener"
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package wp
|
package widget
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -6,8 +6,9 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/helper/slice"
|
"github.com/fthvgb1/wp-go/helper/slice"
|
||||||
str "github.com/fthvgb1/wp-go/helper/strings"
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints/components"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -47,8 +48,8 @@ var archiveTemplate = `{$before_widget}
|
||||||
{$after_widget}
|
{$after_widget}
|
||||||
`
|
`
|
||||||
|
|
||||||
func Archive(h *Handle) string {
|
func Archive(h *wp.Handle) string {
|
||||||
args := GetComponentsArgs(h, components.ArchiveArgs, archiveArgs.Load())
|
args := wp.GetComponentsArgs(h, widgets.ArchiveArgs, archiveArgs.Load())
|
||||||
args = maps.FilterZeroMerge(archiveArgs.Load(), args)
|
args = maps.FilterZeroMerge(archiveArgs.Load(), args)
|
||||||
conf := wpconfig.GetPHPArrayVal("widget_archives", archivesConfig.Load(), int64(2))
|
conf := wpconfig.GetPHPArrayVal("widget_archives", archivesConfig.Load(), int64(2))
|
||||||
args["{$title}"] = str.Join(args["{$before_title}"], conf["title"].(string), args["{$after_title}"])
|
args["{$title}"] = str.Join(args["{$before_title}"], conf["title"].(string), args["{$after_title}"])
|
||||||
|
@ -58,7 +59,7 @@ func Archive(h *Handle) string {
|
||||||
} else {
|
} else {
|
||||||
s = strings.ReplaceAll(s, "{$html}", archiveUl(h, conf, args, cache.Archives(h.C)))
|
s = strings.ReplaceAll(s, "{$html}", archiveUl(h, conf, args, cache.Archives(h.C)))
|
||||||
}
|
}
|
||||||
return h.ComponentFilterFnHook(components.ArchiveArgs, str.Replace(s, args))
|
return h.ComponentFilterFnHook(widgets.ArchiveArgs, str.Replace(s, args))
|
||||||
}
|
}
|
||||||
|
|
||||||
var dropdownScript = `
|
var dropdownScript = `
|
||||||
|
@ -76,7 +77,7 @@ var dropdownScript = `
|
||||||
/* ]]> */
|
/* ]]> */
|
||||||
</script>`
|
</script>`
|
||||||
|
|
||||||
func archiveDropDown(h *Handle, conf map[any]any, args map[string]string, archives []models.PostArchive) string {
|
func archiveDropDown(h *wp.Handle, conf map[any]any, args map[string]string, archives []models.PostArchive) string {
|
||||||
option := str.NewBuilder()
|
option := str.NewBuilder()
|
||||||
option.Sprintf(`<option value="">%s</option>`, args["{$dropdown_label}"])
|
option.Sprintf(`<option value="">%s</option>`, args["{$dropdown_label}"])
|
||||||
month := strings.TrimLeft(h.Index.Param.Month, "0")
|
month := strings.TrimLeft(h.Index.Param.Month, "0")
|
||||||
|
@ -100,7 +101,7 @@ func archiveDropDown(h *Handle, conf map[any]any, args map[string]string, archiv
|
||||||
return s.String()
|
return s.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func archiveUl(h *Handle, conf map[any]any, args map[string]string, archives []models.PostArchive) string {
|
func archiveUl(h *wp.Handle, conf map[any]any, args map[string]string, archives []models.PostArchive) string {
|
||||||
if slice.IsContained(h.CommonThemeMods().ThemeSupport.HTML5, "navigation-widgets") {
|
if slice.IsContained(h.CommonThemeMods().ThemeSupport.HTML5, "navigation-widgets") {
|
||||||
args["{$nav}"] = fmt.Sprintf(`<nav aria-label="%s">`, conf["title"].(string))
|
args["{$nav}"] = fmt.Sprintf(`<nav aria-label="%s">`, conf["title"].(string))
|
||||||
args["{$navCloser}"] = "</nav>"
|
args["{$navCloser}"] = "</nav>"
|
|
@ -1,38 +0,0 @@
|
||||||
{{define "common/archives"}}
|
|
||||||
<section id="archives-2" class="widget widget_archive">
|
|
||||||
<h2 class="widget-title">{{.archivesConfig.title}}</h2>
|
|
||||||
{{ if eq .archivesConfig.dropdown 1}}
|
|
||||||
<label class="screen-reader-text" for="archives-dropdown-2">{{.archivesConfig.title}}</label>
|
|
||||||
<select id="archives-dropdown-2" name="archive-dropdown">
|
|
||||||
<option value="">选择月份</option>
|
|
||||||
{{range $k,$v := .archives}}
|
|
||||||
<option {{if and (eq $.archiveYear $v.Year) (eq $.archiveMonth $v.Month) }}selected{{end}} value="/p/date/{{$v.Year}}/{{$v.Month|printf "%02s"}}"> {{$v.Year}}年{{$v.Month}}月 {{if eq $.archivesConfig.count 1}} ({{$v.Posts}}){{end}} </option>
|
|
||||||
{{end}}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
/* <![CDATA[ */
|
|
||||||
(function() {
|
|
||||||
const dropdown = document.getElementById("archives-dropdown-2");
|
|
||||||
function onSelectChange() {
|
|
||||||
if ( dropdown.options[ dropdown.selectedIndex ].value !== '' ) {
|
|
||||||
document.location.href = this.options[ this.selectedIndex ].value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dropdown.onchange = onSelectChange;
|
|
||||||
})();
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
||||||
{{else}}
|
|
||||||
<nav aria-label="{{.archiveTitle}}">
|
|
||||||
<ul>
|
|
||||||
{{range $k,$v := .archives}}
|
|
||||||
<li><a href="/p/date/{{$v.Year}}/{{$v.Month|printf "%02s"}}">{{$v.Year}}年{{$v.Month}}月 {{if eq $.showArchiveCount 1}} ({{$v.Posts}}){{end}}</a>
|
|
||||||
</li>
|
|
||||||
{{end}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
{{end}}
|
|
||||||
</section>
|
|
||||||
{{end}}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{{define "common/recent-comments"}}
|
|
||||||
<aside id="recent-comments-2" class="widget widget_recent_comments">
|
|
||||||
<h2 class="widget-title">{{.recentCommentsConfig.title}}</h2>
|
|
||||||
<nav aria-label="近期评论">
|
|
||||||
<ul id="recentcomments">
|
|
||||||
{{ range $i,$v := .recentComments}}
|
|
||||||
<li class="recentcomments">
|
|
||||||
<span class="comment-author-link">{{$v.CommentAuthor}}</span>发表在《<a class="wp-block-latest-comments__comment-link" href="/p/{{$v.CommentPostId}}#comment-{{$v.CommentId}}">{{$v.PostTitle}}</a>》
|
|
||||||
</li>
|
|
||||||
{{end}}
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</aside>
|
|
||||||
{{end}}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{{define "common/recent-posts"}}
|
|
||||||
<aside id="recent-posts-2" class="widget widget_recent_entries">
|
|
||||||
<h2 class="widget-title">{{.recentPostsConfig.title}}</h2>
|
|
||||||
<nav aria-label="{{.recentPostsConfig.title}}">
|
|
||||||
<ul>
|
|
||||||
{{range $k,$v:=.recentPosts}}
|
|
||||||
<li>
|
|
||||||
<a href="/p/{{$v.Id}}">{{$v.PostTitle}}</a>
|
|
||||||
{{ if $.recentPostsConfig.show_date}}
|
|
||||||
<span class="post-date">{{ timeFormat $v.PostDateGmt "2006年01月02日"}}</span>
|
|
||||||
{{end}}
|
|
||||||
</li>
|
|
||||||
{{end}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</aside>
|
|
||||||
{{end}}
|
|
|
@ -1,4 +1,4 @@
|
||||||
package wp
|
package widget
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -6,8 +6,9 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/helper/slice"
|
"github.com/fthvgb1/wp-go/helper/slice"
|
||||||
str "github.com/fthvgb1/wp-go/helper/strings"
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints/components"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -46,8 +47,8 @@ var recentCommentsTemplate = `{$before_widget}
|
||||||
{$after_widget}
|
{$after_widget}
|
||||||
`
|
`
|
||||||
|
|
||||||
func RecentComments(h *Handle) string {
|
func RecentComments(h *wp.Handle) string {
|
||||||
args := GetComponentsArgs(h, components.RecentCommentsArgs, recentCommentsArgs.Load())
|
args := wp.GetComponentsArgs(h, widgets.RecentCommentsArgs, recentCommentsArgs.Load())
|
||||||
args = maps.FilterZeroMerge(recentCommentsArgs.Load(), args)
|
args = maps.FilterZeroMerge(recentCommentsArgs.Load(), args)
|
||||||
conf := wpconfig.GetPHPArrayVal("widget_recent-comments", recentCommentConf.Load(), int64(2))
|
conf := wpconfig.GetPHPArrayVal("widget_recent-comments", recentCommentConf.Load(), int64(2))
|
||||||
conf = maps.FilterZeroMerge(recentCommentConf.Load(), conf)
|
conf = maps.FilterZeroMerge(recentCommentConf.Load(), conf)
|
||||||
|
@ -64,5 +65,5 @@ func RecentComments(h *Handle) string {
|
||||||
</li>`, t.CommentAuthor, t.CommentId, t.CommentPostId, t.PostTitle)
|
</li>`, t.CommentAuthor, t.CommentId, t.CommentPostId, t.PostTitle)
|
||||||
})
|
})
|
||||||
s := strings.ReplaceAll(recentCommentsTemplate, "{$li}", strings.Join(comments, "\n"))
|
s := strings.ReplaceAll(recentCommentsTemplate, "{$li}", strings.Join(comments, "\n"))
|
||||||
return h.ComponentFilterFnHook(components.RecentCommentsArgs, str.Replace(s, args))
|
return h.ComponentFilterFnHook(widgets.RecentCommentsArgs, str.Replace(s, args))
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package wp
|
package widget
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -7,8 +7,9 @@ import (
|
||||||
str "github.com/fthvgb1/wp-go/helper/strings"
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints/components"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints/widgets"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -48,8 +49,8 @@ var recentConf = func() safety.Var[map[any]any] {
|
||||||
return v
|
return v
|
||||||
}()
|
}()
|
||||||
|
|
||||||
func RecentPosts(h *Handle) string {
|
func RecentPosts(h *wp.Handle) string {
|
||||||
args := GetComponentsArgs(h, components.RecentPostsArgs, recentPostsArgs.Load())
|
args := wp.GetComponentsArgs(h, widgets.RecentPostsArgs, recentPostsArgs.Load())
|
||||||
args = maps.FilterZeroMerge(recentPostsArgs.Load(), args)
|
args = maps.FilterZeroMerge(recentPostsArgs.Load(), args)
|
||||||
conf := wpconfig.GetPHPArrayVal[map[any]any]("widget_recent-posts", recentConf.Load(), int64(2))
|
conf := wpconfig.GetPHPArrayVal[map[any]any]("widget_recent-posts", recentConf.Load(), int64(2))
|
||||||
conf = maps.FilterZeroMerge(recentConf.Load(), conf)
|
conf = maps.FilterZeroMerge(recentConf.Load(), conf)
|
||||||
|
@ -63,7 +64,7 @@ func RecentPosts(h *Handle) string {
|
||||||
currentPostId = str.ToInteger(h.C.Param("id"), uint64(0))
|
currentPostId = str.ToInteger(h.C.Param("id"), uint64(0))
|
||||||
}
|
}
|
||||||
posts := slice.Map(cache.RecentPosts(h.C, int(conf["number"].(int64))), func(t models.Posts) string {
|
posts := slice.Map(cache.RecentPosts(h.C, int(conf["number"].(int64))), func(t models.Posts) string {
|
||||||
t = ProjectTitle(t)
|
t = wp.ProjectTitle(t)
|
||||||
date := ""
|
date := ""
|
||||||
if v, ok := conf["show_date"].(bool); ok && v {
|
if v, ok := conf["show_date"].(bool); ok && v {
|
||||||
date = fmt.Sprintf(`<span class="post-date">%s</span>`, t.PostDateGmt.Format("2006年01月02日"))
|
date = fmt.Sprintf(`<span class="post-date">%s</span>`, t.PostDateGmt.Format("2006年01月02日"))
|
||||||
|
@ -78,5 +79,5 @@ func RecentPosts(h *Handle) string {
|
||||||
</li>`, t.Id, ariaCurrent, t.PostTitle, date)
|
</li>`, t.Id, ariaCurrent, t.PostTitle, date)
|
||||||
})
|
})
|
||||||
s := strings.ReplaceAll(recentPostsTemplate, "{$li}", strings.Join(posts, "\n"))
|
s := strings.ReplaceAll(recentPostsTemplate, "{$li}", strings.Join(posts, "\n"))
|
||||||
return h.ComponentFilterFnHook(components.RecentPostsArgs, str.Replace(s, args))
|
return h.ComponentFilterFnHook(widgets.RecentPostsArgs, str.Replace(s, args))
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package wp
|
package widget
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/fthvgb1/wp-go/helper/html"
|
"github.com/fthvgb1/wp-go/helper/html"
|
||||||
|
@ -6,7 +6,8 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/helper/slice"
|
"github.com/fthvgb1/wp-go/helper/slice"
|
||||||
str "github.com/fthvgb1/wp-go/helper/strings"
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints/components"
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints/widgets"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -48,8 +49,8 @@ var xmlSearchForm = `<form role="search" {$aria_label} method="get" id="searchfo
|
||||||
</div>
|
</div>
|
||||||
</form>`
|
</form>`
|
||||||
|
|
||||||
func SearchForm(h *Handle) string {
|
func SearchForm(h *wp.Handle) string {
|
||||||
args := GetComponentsArgs(h, components.SearchFormArgs, searchArgs.Load())
|
args := wp.GetComponentsArgs(h, widgets.SearchFormArgs, searchArgs.Load())
|
||||||
args = maps.FilterZeroMerge(searchArgs.Load(), args)
|
args = maps.FilterZeroMerge(searchArgs.Load(), args)
|
||||||
if args["{$title}"] == "" {
|
if args["{$title}"] == "" {
|
||||||
args["{$title}"] = wpconfig.GetPHPArrayVal("widget_search", "", int64(2), "title")
|
args["{$title}"] = wpconfig.GetPHPArrayVal("widget_search", "", int64(2), "title")
|
||||||
|
@ -66,5 +67,5 @@ func SearchForm(h *Handle) string {
|
||||||
form = xmlSearchForm
|
form = xmlSearchForm
|
||||||
}
|
}
|
||||||
s := strings.ReplaceAll(searchTemplate, "{$form}", form)
|
s := strings.ReplaceAll(searchTemplate, "{$form}", form)
|
||||||
return h.ComponentFilterFnHook(components.SearchFormArgs, str.Replace(s, args))
|
return h.ComponentFilterFnHook(widgets.SearchFormArgs, str.Replace(s, args))
|
||||||
}
|
}
|
33
internal/theme/wp/components/widgetareadata.go
Normal file
33
internal/theme/wp/components/widgetareadata.go
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package components
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/fthvgb1/wp-go/helper/slice"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/theme/wp/components/widget"
|
||||||
|
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||||
|
)
|
||||||
|
|
||||||
|
var widgets = map[string]func(*wp.Handle) string{
|
||||||
|
"search-2": widget.SearchForm,
|
||||||
|
"recent-posts-2": widget.RecentPosts,
|
||||||
|
"recent-comments-2": widget.RecentComments,
|
||||||
|
"archives-2": widget.Archive,
|
||||||
|
}
|
||||||
|
|
||||||
|
func WidgetArea(h *wp.Handle) {
|
||||||
|
v := wpconfig.GetPHPArrayVal("sidebars_widgets", []any{}, "sidebar-1")
|
||||||
|
sidebar := slice.FilterAndMap(v, func(t any) (func(*wp.Handle) string, bool) {
|
||||||
|
vv := t.(string)
|
||||||
|
fn, ok := widgets[vv]
|
||||||
|
if ok {
|
||||||
|
return fn, true
|
||||||
|
}
|
||||||
|
return nil, false
|
||||||
|
})
|
||||||
|
h.PushHandleFn(constraints.Ok, wp.NewHandleFn(func(h *wp.Handle) {
|
||||||
|
h.PushGroupComponentFns(constraints.SidebarsWidgets, 10, sidebar...)
|
||||||
|
}, 30))
|
||||||
|
h.SetData("categories", cache.CategoriesTags(h.C, constraints.Category))
|
||||||
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
package wp
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/fthvgb1/wp-go/helper/slice"
|
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/cache"
|
|
||||||
"github.com/fthvgb1/wp-go/internal/pkg/constraints"
|
|
||||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
|
||||||
)
|
|
||||||
|
|
||||||
var widgets = map[string]func(*Handle) string{
|
|
||||||
"search-2": SearchForm,
|
|
||||||
"recent-posts-2": RecentPosts,
|
|
||||||
"recent-comments-2": RecentComments,
|
|
||||||
"archives-2": Archive,
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *Handle) WidgetArea() {
|
|
||||||
v := wpconfig.GetPHPArrayVal("sidebars_widgets", []any{}, "sidebar-1")
|
|
||||||
sidebar := slice.FilterAndMap(v, func(t any) (func(*Handle) string, bool) {
|
|
||||||
widget := t.(string)
|
|
||||||
fn, ok := widgets[widget]
|
|
||||||
if ok {
|
|
||||||
return fn, true
|
|
||||||
}
|
|
||||||
return nil, false
|
|
||||||
})
|
|
||||||
h.PushHandleFn(constraints.Ok, NewHandleFn(func(h *Handle) {
|
|
||||||
h.PushGroupComponentFns(constraints.SidebarsWidgets, 10, sidebar...)
|
|
||||||
}, 30))
|
|
||||||
h.ginH["categories"] = cache.CategoriesTags(h.C, constraints.Category)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user