diff --git a/examples/pong2-render/main.go b/examples/pong2-render/main.go
new file mode 100644
index 00000000..e0de2934
--- /dev/null
+++ b/examples/pong2-render/main.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "github.com/flosch/pongo2"
+ "github.com/gin-gonic/gin"
+)
+
+func main() {
+ r := gin.Default()
+ r.HTMLRender = NewNgPongRender()
+ pages := r.Group("/")
+ {
+ pages.GET("/", func(c *gin.Context) {
+ ctx := pongo2.Context{
+ "hello": "Hello Home Pages",
+ }
+ c.HTML(200, "templates/sites/home/index.html", ctx)
+ })
+ pages.GET("/user", func(c *gin.Context) {
+ ctx := pongo2.Context{
+ "hello": "Hello User Pages",
+ }
+ c.HTML(200, "templates/sites/user/index.html", ctx)
+ })
+ }
+ admins := r.Group("/admin")
+ {
+ admins.GET("/", func(c *gin.Context) {
+ ctx := pongo2.Context{
+ "hello": "Hello Admin Dashboard Pages",
+ }
+ c.HTML(200, "templates/admins/dashboard/index.html", ctx)
+ })
+ }
+ r.Run(":8080")
+}
diff --git a/examples/pong2-render/pongo2.go b/examples/pong2-render/pongo2.go
new file mode 100644
index 00000000..cb3bd518
--- /dev/null
+++ b/examples/pong2-render/pongo2.go
@@ -0,0 +1,48 @@
+package main
+
+import (
+ "github.com/flosch/pongo2"
+ "github.com/gin-gonic/gin/render"
+ "net/http"
+)
+
+type NgHTML struct {
+ Template map[string]*pongo2.Template
+ Name string
+ Data interface{}
+}
+
+func (n NgHTML) Write(w http.ResponseWriter) error {
+ file := n.Name
+ ctx := n.Data.(pongo2.Context)
+
+ var t *pongo2.Template
+
+ if tmpl, ok := n.Template[file]; ok {
+ t = tmpl
+ } else {
+ tmpl, err := pongo2.FromFile(file)
+ if err != nil {
+ return err
+ }
+ n.Template[file] = tmpl
+ t = tmpl
+ }
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ return t.ExecuteWriter(ctx, w)
+}
+
+type NgPongRender struct {
+ Template map[string]*pongo2.Template
+}
+
+func (n *NgPongRender) Instance(name string, data interface{}) render.Render {
+ return NgHTML{
+ Template: n.Template,
+ Name: name,
+ Data: data,
+ }
+}
+func NewNgPongRender() *NgPongRender {
+ return &NgPongRender{Template: map[string]*pongo2.Template{}}
+}
diff --git a/examples/pong2-render/templates/admins/common/footer.html b/examples/pong2-render/templates/admins/common/footer.html
new file mode 100644
index 00000000..4a0d1b5e
--- /dev/null
+++ b/examples/pong2-render/templates/admins/common/footer.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/admins/common/header.html b/examples/pong2-render/templates/admins/common/header.html
new file mode 100644
index 00000000..669a8fdc
--- /dev/null
+++ b/examples/pong2-render/templates/admins/common/header.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/admins/common/layout.html b/examples/pong2-render/templates/admins/common/layout.html
new file mode 100644
index 00000000..0ebdd714
--- /dev/null
+++ b/examples/pong2-render/templates/admins/common/layout.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ {% include "header.html" %}
+
+ {%block content%}
+ {%endblock%}
+
+ {% include "footer.html"%}
+
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/admins/dashboard/index.html b/examples/pong2-render/templates/admins/dashboard/index.html
new file mode 100644
index 00000000..ee9793ed
--- /dev/null
+++ b/examples/pong2-render/templates/admins/dashboard/index.html
@@ -0,0 +1,4 @@
+{% extends "layout.html" %}
+{%block view%}
+ {{hello}}
+{%endblock%}
\ No newline at end of file
diff --git a/examples/pong2-render/templates/admins/dashboard/layout.html b/examples/pong2-render/templates/admins/dashboard/layout.html
new file mode 100644
index 00000000..0ccaae43
--- /dev/null
+++ b/examples/pong2-render/templates/admins/dashboard/layout.html
@@ -0,0 +1,6 @@
+{% extends "../common/layout.html" %}
+{%block content%}
+ {%block view%}
+
+ {%endblock%}
+{%endblock%}
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/common/footer.html b/examples/pong2-render/templates/sites/common/footer.html
new file mode 100644
index 00000000..1bad18f7
--- /dev/null
+++ b/examples/pong2-render/templates/sites/common/footer.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/common/header.html b/examples/pong2-render/templates/sites/common/header.html
new file mode 100644
index 00000000..fc0e3f16
--- /dev/null
+++ b/examples/pong2-render/templates/sites/common/header.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/common/layout.html b/examples/pong2-render/templates/sites/common/layout.html
new file mode 100644
index 00000000..0ebdd714
--- /dev/null
+++ b/examples/pong2-render/templates/sites/common/layout.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ {% include "header.html" %}
+
+ {%block content%}
+ {%endblock%}
+
+ {% include "footer.html"%}
+
+
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/home/index.html b/examples/pong2-render/templates/sites/home/index.html
new file mode 100644
index 00000000..ee9793ed
--- /dev/null
+++ b/examples/pong2-render/templates/sites/home/index.html
@@ -0,0 +1,4 @@
+{% extends "layout.html" %}
+{%block view%}
+ {{hello}}
+{%endblock%}
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/home/layout.html b/examples/pong2-render/templates/sites/home/layout.html
new file mode 100644
index 00000000..0ccaae43
--- /dev/null
+++ b/examples/pong2-render/templates/sites/home/layout.html
@@ -0,0 +1,6 @@
+{% extends "../common/layout.html" %}
+{%block content%}
+ {%block view%}
+
+ {%endblock%}
+{%endblock%}
\ No newline at end of file
diff --git a/examples/pong2-render/templates/sites/user/index.html b/examples/pong2-render/templates/sites/user/index.html
new file mode 100644
index 00000000..1de078cf
--- /dev/null
+++ b/examples/pong2-render/templates/sites/user/index.html
@@ -0,0 +1,4 @@
+{% extends "layout.html" %}
+{%block view%}
+ {{hello}}
+{%endblock%}
diff --git a/examples/pong2-render/templates/sites/user/layout.html b/examples/pong2-render/templates/sites/user/layout.html
new file mode 100644
index 00000000..0ccaae43
--- /dev/null
+++ b/examples/pong2-render/templates/sites/user/layout.html
@@ -0,0 +1,6 @@
+{% extends "../common/layout.html" %}
+{%block content%}
+ {%block view%}
+
+ {%endblock%}
+{%endblock%}
\ No newline at end of file