diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index dc80acf..72ec18c 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -157,26 +157,13 @@
- {{ with site.Params.features.comment }}
- {{ if .enable }}
-
- {{ if .disqus.shortName }}
- {{ partial "disqus.html" . }}
-
- {{ else if .valine }}
- {{ partial "valine.html" . }}
-
- {{ else if .utteranc }}
- {{ partial "utteranc.html" . }}
-
- {{ else if .giscus }}
- {{ partial "giscus.html" . }}
- {{ end }}
- {{ end }}
+ {{ if site.Params.features.comment.enable }}
+ {{ partial "comments.html" site.Params.features.comment }}
{{ end }}
+
{{ if site.DisqusShortname }}
- {{ partial "disqus.html" . }}
+ {{ partial "comments/disqus.html" (dict (slice "disqus" "shortName") site.DisqusShortname) }}
{{ end }}
diff --git a/layouts/partials/comments.html b/layouts/partials/comments.html
new file mode 100644
index 0000000..3abfbb9
--- /dev/null
+++ b/layouts/partials/comments.html
@@ -0,0 +1,11 @@
+{{ if .disqus.shortName }}
+ {{ partial "comments/disqus.html" . }}
+{{ else if .valine }}
+ {{ partial "comments/valine.html" . }}
+{{ else if .utteranc }}
+ {{ partial "comments/utteranc.html" . }}
+{{ else if .giscus }}
+ {{ partial "comments/giscus.html" . }}
+{{ else if .commento }}
+ {{ partial "comments/commento.html" . }}
+{{ end }}
diff --git a/layouts/partials/comments/commento.html b/layouts/partials/comments/commento.html
new file mode 100644
index 0000000..d230ef1
--- /dev/null
+++ b/layouts/partials/comments/commento.html
@@ -0,0 +1,12 @@
+{{ with .commento }}
+ {{ $serverURL := .serverURL }}
+ {{ $autoInit := .autoInit | default "true"}}
+ {{ $hideDeleted := .hideDeleted | default "false"}}
+
+
+
+{{ end }}
diff --git a/layouts/partials/comments/disqus.html b/layouts/partials/comments/disqus.html
new file mode 100644
index 0000000..1846ae9
--- /dev/null
+++ b/layouts/partials/comments/disqus.html
@@ -0,0 +1,29 @@
+{{ with .disqus }}
+
+
+
+ {{ i18n "comments_by" }}
+{{ end }}
diff --git a/layouts/partials/comments/giscus.html b/layouts/partials/comments/giscus.html
new file mode 100644
index 0000000..dacac4e
--- /dev/null
+++ b/layouts/partials/comments/giscus.html
@@ -0,0 +1,28 @@
+{{ with .giscus }}
+{{ $repo := .repo }}
+{{ $repoID := .repoID }}
+{{ $category := .category | default "General" }}
+{{ $categoryID := .categoryID }}
+{{ $theme := .theme | default "light" }}
+{{ $map := .map | default "url" }}
+{{ $reaction := .reaction | default "1" }}
+{{ $metadata := .metadata | default "0" }}
+{{ $inputPosition := .inputPosition | default "bottom" }}
+{{ $crossOrigin := .crossOrigin | default "anonymous" }}
+
+
+{{ end }}
+
diff --git a/layouts/partials/utteranc.html b/layouts/partials/comments/utteranc.html
similarity index 78%
rename from layouts/partials/utteranc.html
rename to layouts/partials/comments/utteranc.html
index 0bbaaad..40e37f7 100644
--- a/layouts/partials/utteranc.html
+++ b/layouts/partials/comments/utteranc.html
@@ -1,6 +1,7 @@
-{{ $repo := site.Params.features.comment.utteranc.repo }}
-{{ $issueTerm := site.Params.features.comment.utteranc.issueTerm }}
-{{ $theme := site.Params.features.comment.utteranc.theme }}
+{{ with .utteranc }}
+{{ $repo := .repo }}
+{{ $issueTerm := .issueTerm }}
+{{ $theme := .theme }}