diff --git a/app/plugins/devexample/plugintt/a.gohtml b/app/plugins/devexample/plugintt/a.gohtml
new file mode 100644
index 0000000..dcde123
--- /dev/null
+++ b/app/plugins/devexample/plugintt/a.gohtml
@@ -0,0 +1,9 @@
+
+ {{.aa}}
+
+
+
+ {{ range $k,$v := .posts}}
+
{{$v.PostTitle}}
+ {{end}}
+
\ No newline at end of file
diff --git a/app/plugins/devexample/plugintt/main.go.dev b/app/plugins/devexample/plugintt/main.go.dev
index 98070da..78a581b 100644
--- a/app/plugins/devexample/plugintt/main.go.dev
+++ b/app/plugins/devexample/plugintt/main.go.dev
@@ -1,24 +1,82 @@
package main
import (
+ "embed"
+ "github.com/fthvgb1/wp-go/app/cmd/route"
"github.com/fthvgb1/wp-go/app/pkg/constraints"
+ "github.com/fthvgb1/wp-go/app/pkg/logs"
+ "github.com/fthvgb1/wp-go/app/plugins/wphandle"
"github.com/fthvgb1/wp-go/app/theme"
"github.com/fthvgb1/wp-go/app/theme/wp"
+ "github.com/fthvgb1/wp-go/app/theme/wp/components"
+ "github.com/fthvgb1/wp-go/app/theme/wp/components/widget"
+ route2 "github.com/fthvgb1/wp-go/app/theme/wp/route"
+ "github.com/gin-gonic/gin"
+ "html/template"
+ "net/http"
"plugintt/xx"
)
-func init() {
- // here can register theme
- theme.AddThemeHookFunc("xxx", Xo)
-}
+//go:embed a.gohtml
+var em embed.FS
+var tt *template.Template
-func Xo(h *wp.Handle) {
- // action or hook or config theme
- h.PushHandler(constraints.PipeRender, constraints.Home, wp.HandleCall{
- Fn: func(handle *wp.Handle) {
- xx.Xo()
- },
- Order: 100,
- Name: "xxxx",
+func init() {
+ // register as theme
+ theme.AddThemeHookFunc("themename", hook)
+
+ //use the local template
+ //note: must use embed.FS
+ t, err := template.ParseFS(em, "a.gohtml")
+ if err != nil {
+ logs.Error(err, "")
+ }
+ tt = t
+
+ // register gin route. it will be effecting when server restart.
+ route.Hook(func(r *gin.Engine) {
+ r.GET("xx", func(c *gin.Context) {
+ c.String(http.StatusOK, "xxoo")
+ })
+ })
+}
+
+func hook(h *wp.Handle) {
+ wp.Run(h, config)
+}
+
+func config(h *wp.Handle) {
+ // same theme config
+ wphandle.UsePlugins(h)
+ wp.InitPipe(h)
+ h.PushHandler(constraints.PipeMiddleware, constraints.Home,
+ wp.NewHandleFn(widget.IsCategory, 100, "widget.IsCategory"))
+ components.WidgetArea(h)
+ h.PushHandler(constraints.PipeRender, constraints.Home, wp.NewHandleFn(func(h *wp.Handle) {
+ h.SetData("aa", "xyxxxx")
+ h.RenderHtml(tt, http.StatusOK, "a.gohtml")
+ h.Abort()
+ h.StopPipe()
+ }, 10, "renderHome"))
+
+ // use simple reg route
+ route2.PushRoute(`(?P\w+)/(?P\w+)`, route2.Route{
+ Path: `(?P\w+)/(?P\w+)`,
+ Scene: constraints.Home,
+ Method: []string{"GET"},
+ Type: "reg",
+ ConfigHandle: wp.Index,
+ })
+ //...
+}
+
+// Xo to be a func when theme init
+func Xo(h *wp.Handle) {
+ xx.Xo()
+ route2.Delete(`(?P\w+)/(?P\w+)`)
+ h.ReplaceHandle(constraints.PipeRender, "wp.RenderTemplate", func(h *wp.Handle) {
+ h.SetData("aa", "xyxxxx")
+ h.RenderHtml(tt, http.StatusOK, "a.gohtml")
+ h.StopPipe()
})
}
diff --git a/app/plugins/devexample/plugintt/make.sh b/app/plugins/devexample/plugintt/make.sh
index bababac..27a751e 100644
--- a/app/plugins/devexample/plugintt/make.sh
+++ b/app/plugins/devexample/plugintt/make.sh
@@ -2,5 +2,6 @@
# copy plugintt to other dir and remove .dev suffix
# note the go version and build tool flag must same to server build
-# eg: -gcflags all="-N -l" may used in ide debug
+# eg: -gcflags all="-N -l" --race may used in ide debug
+go mod tidy
go build -buildmode=plugin -o xx.so main.go
\ No newline at end of file