diff options
| -rw-r--r-- | assets/js/giscus.js | 37 | ||||
| -rw-r--r-- | exampleSite/config/_default/params.yaml | 24 | ||||
| -rw-r--r-- | layouts/_default/single.html | 2 | ||||
| -rw-r--r-- | layouts/partials/comments.html | 39 |
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 -}} |
