diff --git a/internal/theme/wp/recentcomments.go b/internal/theme/wp/recentcomments.go new file mode 100644 index 0000000..e8dc013 --- /dev/null +++ b/internal/theme/wp/recentcomments.go @@ -0,0 +1,61 @@ +package wp + +import ( + "fmt" + "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/pkg/cache" + "github.com/fthvgb1/wp-go/internal/pkg/models" + "github.com/fthvgb1/wp-go/internal/theme/wp/components" + "github.com/fthvgb1/wp-go/internal/wpconfig" + "strings" +) + +var recentCommentsArgs = map[string]string{ + "{$before_widget}": `", + "{$before_title}": `

`, + "{$after_title}": "

", + "{$before_sidebar}": "", + "{$after_sidebar}": "", + "{$nav}": "", + "{$navCloser}": "", + "{$title}": "", + "{$recent_comments_id}": "recentcomments", +} + +var recentCommentConf = map[any]any{ + "number": int64(5), + "title": "近期评论", +} + +var recentCommentsTemplate = `{$before_widget} +{$nav} +{$title} + +{$navCloser} +{$after_widget} +` + +func RecentComments(h *Handle) string { + args := GetComponentsArgs(h, components.RecentCommentsArgs, recentCommentsArgs) + args = maps.Merge(recentCommentsArgs, args) + conf := wpconfig.GetPHPArrayVal[map[any]any]("widget_recent-comments", recentCommentConf, int64(2)) + args["{$title}"] = str.Join(args["{$before_title}"], conf["title"].(string), args["{$after_title}"]) + if slice.IsContained(h.CommonThemeMods().ThemeSupport.HTML5, "navigation-widgets") { + args["{$nav}"] = fmt.Sprintf(`" + } + comments := slice.Map(cache.RecentComments(h.C, int(conf["number"].(int64))), func(t models.Comments) string { + return fmt.Sprintf(`
  • +%s发表在《 + %s + 》 +
  • `, t.CommentAuthor, t.CommentId, t.CommentPostId, t.PostTitle) + }) + s := strings.ReplaceAll(recentCommentsTemplate, "{$li}", strings.Join(comments, "\n")) + return str.Replace(s, args) +} diff --git a/internal/theme/wp/recentposts.go b/internal/theme/wp/recentposts.go index 4274938..7fb1f75 100644 --- a/internal/theme/wp/recentposts.go +++ b/internal/theme/wp/recentposts.go @@ -3,7 +3,6 @@ package wp import ( "fmt" "github.com/fthvgb1/wp-go/helper/maps" - "github.com/fthvgb1/wp-go/helper/number" "github.com/fthvgb1/wp-go/helper/slice" str "github.com/fthvgb1/wp-go/helper/strings" "github.com/fthvgb1/wp-go/internal/pkg/cache" @@ -66,9 +65,9 @@ func RecentPosts(h *Handle) string { ariaCurrent = ` aria-current="page"` } return fmt.Sprintf(`
  • - %s + %s %s -
  • `, str.Join("/p/", number.ToString(t.Id)), ariaCurrent, t.PostTitle, date) + `, t.Id, ariaCurrent, t.PostTitle, date) }) s := strings.ReplaceAll(recentPostsTemplate, "{$li}", strings.Join(posts, "\n")) return str.Replace(s, args)