commit
0c0fafedec
|
@ -78,4 +78,6 @@ port: 8082
|
|||
# 主题 为空值为option template,没有就默认为twentyfifteen
|
||||
theme: "twentyfifteen"
|
||||
# 文档排序默认升序还是降序
|
||||
postOrder: "desc"
|
||||
postOrder: "desc"
|
||||
# 上传的目录
|
||||
uploadDir: ""
|
|
@ -44,13 +44,20 @@ func SetupRouter() (*gin.Engine, func()) {
|
|||
})))
|
||||
}
|
||||
|
||||
f := static.Fs{FS: static.FsEx, Path: "wp-includes"}
|
||||
r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsEx))
|
||||
f := static.Fs{FS: static.FsDir, Path: "wp-includes"}
|
||||
r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsDir))
|
||||
r.StaticFS("/wp-includes", http.FS(f))
|
||||
r.StaticFS("/wp-content", http.FS(static.Fs{
|
||||
FS: static.FsEx,
|
||||
Path: "wp-content",
|
||||
r.StaticFS("/wp-content/plugins", http.FS(static.Fs{
|
||||
FS: static.FsDir,
|
||||
Path: "wp-content/plugins",
|
||||
}))
|
||||
r.StaticFS("/wp-content/themes", http.FS(static.Fs{
|
||||
FS: static.FsDir,
|
||||
Path: "wp-content/themes",
|
||||
}))
|
||||
if c.UploadDir != "" {
|
||||
r.Static("/wp-content/uploads", c.UploadDir)
|
||||
}
|
||||
store := cookie.NewStore([]byte("secret"))
|
||||
r.Use(sessions.Sessions("go-wp", store))
|
||||
sl, slRload := middleware.SearchLimit(c.SingleIpSearchNum)
|
||||
|
|
|
@ -40,6 +40,7 @@ type Config struct {
|
|||
TrustServerNames []string `yaml:"trustServerNames"`
|
||||
Theme string `yaml:"theme"`
|
||||
PostOrder string `yaml:"postOrder"`
|
||||
UploadDir string `yaml:"uploadDir"`
|
||||
}
|
||||
|
||||
type Ssl struct {
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
"github.com/fthvgb1/wp-go/helper/slice"
|
||||
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
||||
"github.com/fthvgb1/wp-go/internal/plugins"
|
||||
"github.com/fthvgb1/wp-go/internal/wpconfig"
|
||||
"github.com/fthvgb1/wp-go/model"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
|
@ -44,7 +43,8 @@ func GetPostsByIds(ids ...any) (m map[uint64]models.Posts, err error) {
|
|||
}
|
||||
postsMap[post.Id] = v
|
||||
}
|
||||
host, _ := wpconfig.Options.Load("siteurl")
|
||||
//host, _ := wpconfig.Options.Load("siteurl")
|
||||
host := ""
|
||||
meta, _ := GetPostMetaByPostIds(ctx, id)
|
||||
for k, pp := range postsMap {
|
||||
if len(pp.Categories) > 0 {
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"github.com/fthvgb1/wp-go/helper/slice"
|
||||
"github.com/fthvgb1/wp-go/internal/pkg/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
@ -13,6 +14,7 @@ type CommentHandler struct {
|
|||
comments []*Comments
|
||||
maxDepth int
|
||||
depth int
|
||||
isTls bool
|
||||
i CommentHtml
|
||||
}
|
||||
|
||||
|
@ -23,16 +25,25 @@ type Comments struct {
|
|||
|
||||
type CommentHtml interface {
|
||||
Sort(i, j *Comments) bool
|
||||
FormatLi(c *gin.Context, m models.Comments, depth int, eo, parent string) string
|
||||
FormatLi(c *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string
|
||||
}
|
||||
|
||||
func FormatComments(c *gin.Context, i CommentHtml, comments []models.Comments, maxDepth int) string {
|
||||
tree := treeComments(comments)
|
||||
u := c.Request.Header.Get("Referer")
|
||||
var isTls bool
|
||||
if u != "" {
|
||||
uu, _ := url.Parse(u)
|
||||
if uu.Scheme == "https" {
|
||||
isTls = true
|
||||
}
|
||||
}
|
||||
h := CommentHandler{
|
||||
Context: c,
|
||||
comments: tree,
|
||||
maxDepth: maxDepth,
|
||||
depth: 1,
|
||||
isTls: isTls,
|
||||
i: i,
|
||||
}
|
||||
return h.formatComment(h.comments, true)
|
||||
|
@ -55,7 +66,7 @@ func (d CommentHandler) formatComment(comments []*Comments, isTop bool) (html st
|
|||
parent = "parent"
|
||||
fl = true
|
||||
}
|
||||
s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, eo, parent))
|
||||
s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, d.isTls, eo, parent))
|
||||
if fl {
|
||||
d.depth++
|
||||
s.WriteString(`<ol class="children">`)
|
||||
|
@ -130,8 +141,8 @@ func (c CommonCommentFormat) Sort(i, j *Comments) bool {
|
|||
return i.CommentDate.UnixNano() < j.CommentDate.UnixNano()
|
||||
}
|
||||
|
||||
func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string {
|
||||
return FormatLi(CommonLi(), ctx, m, depth, eo, parent)
|
||||
func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string {
|
||||
return FormatLi(CommonLi(), ctx, m, depth, isTls, eo, parent)
|
||||
}
|
||||
|
||||
var li = `
|
||||
|
@ -171,11 +182,11 @@ var li = `
|
|||
|
||||
`
|
||||
|
||||
func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, eo, parent string) string {
|
||||
func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, isTls bool, eo, parent string) string {
|
||||
for k, v := range map[string]string{
|
||||
"{{CommentId}}": strconv.FormatUint(comments.CommentId, 10),
|
||||
"{{Depth}}": strconv.Itoa(depth),
|
||||
"{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, c.Request.TLS != nil),
|
||||
"{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, isTls),
|
||||
"{{CommentAuthorUrl}}": comments.CommentAuthorUrl,
|
||||
"{{CommentAuthor}}": comments.CommentAuthor,
|
||||
"{{PostId}}": strconv.FormatUint(comments.CommentPostId, 10),
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
)
|
||||
|
||||
//go:embed wp-content wp-includes favicon.ico
|
||||
var FsEx embed.FS
|
||||
var FsDir embed.FS
|
||||
|
||||
type Fs struct {
|
||||
embed.FS
|
||||
|
|
|
@ -50,11 +50,11 @@
|
|||
<link rel='stylesheet' id='twentyseventeen-style-css' href='/wp-content/themes/twentyseventeen/style.css?ver=20221101' media='all' />
|
||||
<link rel='stylesheet' id='twentyseventeen-block-style-css' href='/wp-content/themes/twentyseventeen/assets/css/blocks.css?ver=20220912' media='all' />
|
||||
<!--[if lt IE 9]>
|
||||
<link rel='stylesheet' id='twentyseventeen-ie8-css' href='http://wp.test/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' media='all' />
|
||||
<link rel='stylesheet' id='twentyseventeen-ie8-css' href='/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' media='all' />
|
||||
<![endif]-->
|
||||
<link rel='stylesheet' id='enlighterjs-css' href='http://wp.test/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=0A0B0C' media='all' />
|
||||
<link rel='stylesheet' id='enlighterjs-css' href='/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=0A0B0C' media='all' />
|
||||
<!--[if lt IE 9]>
|
||||
<script src='http://wp.test/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020' id='html5-js'></script>
|
||||
<script src='/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020' id='html5-js'></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
|
|
|
@ -88,7 +88,8 @@ func Hook(status int, c *gin.Context, h gin.H, scene, stats int) {
|
|||
h["HeaderImage"] = getHeaderImage(c)
|
||||
post := h["post"].(models.Posts)
|
||||
h["bodyClass"] = bodyClass(scene, int(post.Id))
|
||||
host, _ := wpconfig.Options.Load("siteurl")
|
||||
//host, _ := wpconfig.Options.Load("siteurl")
|
||||
host := ""
|
||||
img := plugins.Thumbnail(post.Thumbnail.OriginAttachmentData, "thumbnail", host, "thumbnail", "post-thumbnail")
|
||||
img.Width = img.OriginAttachmentData.Width
|
||||
img.Height = img.OriginAttachmentData.Height
|
||||
|
@ -109,7 +110,7 @@ type comment struct {
|
|||
plugins.CommonCommentFormat
|
||||
}
|
||||
|
||||
func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string {
|
||||
func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string {
|
||||
templ := plugins.CommonLi()
|
||||
templ = strings.ReplaceAll(templ, `<a rel="nofollow" class="comment-reply-link"
|
||||
href="/p/{{PostId}}?replytocom={{CommentId}}#respond" data-commentid="{{CommentId}}" data-postid="{{PostId}}"
|
||||
|
@ -120,7 +121,7 @@ func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, pa
|
|||
data-belowelement="div-comment-{{CommentId}}" data-respondelement="respond"
|
||||
data-replyto="回复给{{CommentAuthor}}"
|
||||
aria-label="回复给{{CommentAuthor}}"><svg class="icon icon-mail-reply" aria-hidden="true" role="img"> <use href="#icon-mail-reply" xlink:href="#icon-mail-reply"></use> </svg>回复</a>`)
|
||||
return plugins.FormatLi(templ, ctx, m, depth, eo, parent)
|
||||
return plugins.FormatLi(templ, ctx, m, depth, isTls, eo, parent)
|
||||
}
|
||||
|
||||
func postThumbnail(posts []models.Posts, scene int) []models.Posts {
|
||||
|
@ -149,12 +150,13 @@ func getHeaderImage(c *gin.Context) (r models.PostThumbnail) {
|
|||
logs.ErrPrintln(err, "获取主题背景图信息错误")
|
||||
return
|
||||
}
|
||||
host, _ := wpconfig.Options.Load("siteurl")
|
||||
//host, _ := wpconfig.Options.Load("siteurl")
|
||||
host := ""
|
||||
m.Thumbnail = plugins.Thumbnail(m.AttachmentMetadata, "thumbnail", host, "thumbnail", "post-thumbnail", "twentyseventeen-thumbnail-avatar")
|
||||
if m.Thumbnail.Path != "" {
|
||||
r = m.Thumbnail
|
||||
if len(m.AttachmentMetadata.Sizes) > 0 {
|
||||
r.Srcset = str.Join(r.Path, " 2000vw, ", r.Srcset)
|
||||
r.Srcset = str.Join(r.Path, " 2000w, ", r.Srcset)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user