summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/js/giscus.js37
-rw-r--r--exampleSite/config/_default/params.yaml24
-rw-r--r--layouts/_default/single.html2
-rw-r--r--layouts/partials/comments.html39
4 files changed, 102 insertions, 0 deletions
diff --git a/assets/js/giscus.js b/assets/js/giscus.js
new file mode 100644
index 0000000..9a325fa
--- /dev/null
+++ b/assets/js/giscus.js
@@ -0,0 +1,37 @@
+import {
+ category,
+ categoryId,
+ emitMetadata,
+ inputPosition,
+ lang,
+ mapping,
+ reactionsEnabled,
+ repo,
+ repoId,
+ strict,
+ theme
+} from '@params';
+
+document.addEventListener('DOMContentLoaded', function () {
+ const giscusAttributes = {
+ 'src': 'https://giscus.app/client.js',
+ 'data-repo': repo,
+ 'data-repo-id': repoId,
+ 'data-category': category,
+ 'data-category-id': categoryId,
+ 'data-mapping': mapping,
+ 'data-strict': strict,
+ 'data-reactions-enabled': reactionsEnabled,
+ 'data-emit-metadata': emitMetadata,
+ 'data-input-position': inputPosition,
+ 'data-theme': theme,
+ 'data-lang': lang,
+ 'crossorigin': 'anonymous',
+ 'async': ''
+ };
+
+ // Dynamically create script tag
+ const giscusScript = document.createElement('script');
+ Object.entries(giscusAttributes).forEach(([key, value]) => giscusScript.setAttribute(key, value));
+ document.getElementById('giscus').appendChild(giscusScript);
+});
diff --git a/exampleSite/config/_default/params.yaml b/exampleSite/config/_default/params.yaml
index 12a00b0..9988a0d 100644
--- a/exampleSite/config/_default/params.yaml
+++ b/exampleSite/config/_default/params.yaml
@@ -123,3 +123,27 @@ search:
# - it
# - pt
# - ru
+
+comments:
+ enable: false
+ type: giscus
+
+ # Configure giscus comments.
+ #
+ # For more see: https://giscus.app/
+ giscus:
+ # Required parameters:
+ repo: sergeyklay/gohugo-theme-ed
+ repoId: R_kgDOHEYacw
+ category: General
+ categoryId: DIC_kwDOHEYac84Cerse
+
+ # Optional parameters:
+ #
+ # theme: light
+ # mapping: pathname
+ # strict: 0
+ # reactionsEnabled: 1
+ # emitMetadata: 0
+ # inputPosition: bottom
+ # lang: en
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index 72732ef..fe33269 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -22,5 +22,7 @@
{{ if not (in (slice "drama" "narrative" "poem") $postType) }}
{{ partial "post-tags.html" . }}
{{ end }}
+
+ {{ partial "comments.html" . }}
</article>
{{ end }}
diff --git a/layouts/partials/comments.html b/layouts/partials/comments.html
new file mode 100644
index 0000000..7150fd0
--- /dev/null
+++ b/layouts/partials/comments.html
@@ -0,0 +1,39 @@
+{{- $enableComments := site.Params.comments.enable | default false -}}
+
+{{ if not (eq .Params.comments nil) }}
+ {{ $enableComments = .Params.comments }}
+{{ end }}
+
+{{- if $enableComments -}}
+ {{- if eq site.Params.comments.type "giscus" -}}
+ {{- $isProduction := (or (eq (getenv "HUGO_ENV") "production") (eq site.Params.env "production")) -}}
+
+ {{- $repo := site.Params.comments.giscus.repo -}}
+ {{- $repoId := site.Params.comments.giscus.repoId -}}
+ {{- $category := site.Params.comments.giscus.category -}}
+ {{- $categoryId := site.Params.comments.giscus.categoryId -}}
+ {{- $theme := site.Params.comments.giscus.theme | default "light" -}}
+ {{- $emitMetadata := site.Params.comments.giscus.emitMetadata | default 0 -}}
+ {{- $inputPosition := site.Params.comments.giscus.inputPosition | default "bottom" -}}
+ {{- $lang := site.Params.comments.giscus.lang | default "en" -}}
+ {{- $mapping := site.Params.comments.giscus.mapping | default "pathname" -}}
+ {{- $reactionsEnabled := site.Params.comments.giscus.reactionsEnabled | default 1 -}}
+ {{- $strict := site.Params.comments.giscus.strict | default 0 -}}
+ {{- $commentsParams := dict "repo" $repo "repoId" $repoId "category" $category "categoryId" $categoryId "theme" $theme "emitMetadata" $emitMetadata "inputPosition" $inputPosition "lang" $lang "mapping" $mapping "reactionsEnabled" $reactionsEnabled "strict" $strict -}}
+
+ {{- $siteComments := slice -}}
+ {{- $siteComments = $siteComments | append (resources.Get "js/giscus.js") -}}
+ {{- $siteComments = $siteComments | resources.Concat "js/giscus-bundle.js" -}}
+
+ {{- $siteComments = $siteComments | js.Build (dict "format" "iife" "minify" $isProduction "target" "es2015" "params" $commentsParams) -}}
+
+ {{- if or (site.Params.assets.disable_fingerprinting) (not $isProduction) }}
+ <script src="{{ $siteComments.RelPermalink }}"></script>
+ {{- else -}}
+ {{- $siteComments = $siteComments | fingerprint }}
+ <script src="{{ $siteComments.RelPermalink }}" integrity="{{ $siteComments.Data.Integrity }}"></script>
+ {{- end -}}
+
+ <div id="giscus"></div>
+ {{- end -}}
+{{- end -}}