diff --git a/README.md b/README.md index b16b112..de05bab 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,62 @@ ## wp-go -一个go写的WordPress的前端,功能比较简单,只有列表页和详情页,rss2,主题只有twentyfifteen和twentyseventeen两套主题,插件的话只有一个简单的列表页的摘要生成和enlighter代码高亮。本身只用于展示文章,添加评论走的转发请求到php的WordPress。因为大量用了泛型功能,所以要求go的版本在1.19及以上,越新越好。。。。 +一个go写的WordPress的前端,功能比较简单,只有列表页和详情页,rss2,主题只有twentyfifteen和twentyseventeen两套主题,插件的话只有一个简单的列表页的摘要生成和enlighter代码高亮。本身只用于展示文章及评论。因为大量用了泛型功能,所以要求go的版本在1.19及以上,越新越好。。。 #### 特色功能 -- 多种缓存配置 +- 基本实现全站缓存,并且可防止缓存击穿 +- 列表页也可以高亮语法格式化显示代码 +- 简易插件扩展开发机制、配置后支持热加载更新 +- 丰富繁杂的配置,呃,配置是有点儿多,虽然大部分都是可选项。。。 - 添加评论或panic时发邮件通知,包涵栈调用和请求信息 -- 简单的流量限制中间件 +- 简单的流量限制中间件,可以限制全瞬时最大请求数量 - 除配置文件外将所有静态资源都打包到执行文件中 - 支持密码查看,且cookie信息可被php版所验证 - 支持rss2订阅 -- 热更新配置、清空缓存 - - kill -SIGUSR1 PID 更新配置和清空缓存 - - kill -SIGUSR2 PID 清空缓存 +- 热更新配置、切换主题、清空缓存 + - kill -SIGUSR1 PID 更新配置和清空缓存 + - kill -SIGUSR2 PID 清空缓存 + +#### 数据显示支持程度 + +| 页表 | 支持程度 | +|-----|--------------------------------------------| +| 列表页 | 首页/搜索/归档/分类/标签/作者 分页列表 | +| 详情页 | 显示内容、评论并可以添加评论(转发的php处理,需要配置php版的添加评论的url) | +| 侧边栏 | 目前固定 近期文章、近期评论、规档、分类、条目/评论feed | + +#### 后台设置支持程度 + +- 设置- + - 常规 + - 站点标题 + - 副标题 + - 阅读 + - 博客页面至多显示数量 + - Feed中显示最近数量 + - 讨论 + - 其他评论设置-启用评论嵌套,最多嵌套层数 + - 在每个页面顶部显示 `新旧`评论 + +#### 主题支持程度 + +| twentyfifteen | twentyseventeen | +|---------------|-----------------| +| 站点身份 | 站点身份 | +| 颜色 | 颜色 | +| 页眉图片 | 页眉媒体 (暂不支持视频) | +| 背景图片 | 额外css | +| 额外css | | + +#### 插件机制 + +分为对列表页文章数据的修改的插件和对影响整个程序表现的插件 + +| 列表页文章数据插件 | 整个程序表现的插件 | +|----------------------|----------------| +| passwordProject 密码保护 | enlighter 代码高亮 | +| digest 自动生成指定长度的摘要 | | #### 其它 -用的gin框架和sqlx,在外面封装了层查询的方法。后台可以设置的比较少,大部分设置还没打通。 \ No newline at end of file + +用的gin框架和sqlx,在外面封装了层查询的方法。 \ No newline at end of file diff --git a/internal/plugins/comment.go b/internal/plugins/comment.go index a315575..e334d5f 100644 --- a/internal/plugins/comment.go +++ b/internal/plugins/comment.go @@ -4,6 +4,7 @@ import ( "github.com/fthvgb1/wp-go/helper/slice" str "github.com/fthvgb1/wp-go/helper/strings" "github.com/fthvgb1/wp-go/internal/pkg/models" + "github.com/fthvgb1/wp-go/internal/wpconfig" "github.com/gin-gonic/gin" "net/url" "strconv" @@ -137,7 +138,11 @@ type CommonCommentFormat struct { } func (c CommonCommentFormat) Sort(i, j *Comments) bool { - return i.CommentDate.UnixNano() < j.CommentDate.UnixNano() + order := wpconfig.GetOption("comment_order") + if order == "asc" { + return i.CommentDate.UnixNano() < j.CommentDate.UnixNano() + } + return i.CommentDate.UnixNano() > j.CommentDate.UnixNano() } func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string { diff --git a/model/querycondition_test.go b/model/querycondition_test.go index 95677ba..a6a8b79 100644 --- a/model/querycondition_test.go +++ b/model/querycondition_test.go @@ -644,3 +644,54 @@ func Test_finds(t *testing.T) { }) } } + +func TestGets(t *testing.T) { + type args struct { + ctx context.Context + q QueryCondition + } + type testCase[T Model] struct { + name string + args args + want T + wantErr bool + } + tests := []testCase[options]{ + { + name: "t1", + args: args{ + ctx: ctx, + q: Conditions(Where(SqlBuilder{ + {"option_id", "11"}, + })), + }, + want: options{ + OptionId: 11, + OptionName: "comments_notify", + OptionValue: "1", + Autoload: "yes", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := Gets[options](tt.args.ctx, tt.args.q) + gots, _ := gets[options](glob, tt.args.ctx, tt.args.q) + gotss, _ := GetsFromDB[options](glob, tt.args.ctx, tt.args.q) + if (err != nil) != tt.wantErr { + t.Errorf("Gets() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, gots) { + t.Errorf("Gets() got = %v, want %v", got, tt.want) + } + if !reflect.DeepEqual(got, gotss) { + t.Errorf("Gets() got = %v, want %v", got, tt.want) + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("Gets() got = %v, want %v", got, tt.want) + } + }) + } +}