Skip to content

Commit

Permalink
feat: add giscus comments system (#448)
Browse files Browse the repository at this point in the history
  • Loading branch information
xjasonlyu committed Apr 29, 2023
1 parent 22047a7 commit bedc8f5
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Anatole's aims to be minimalistic and sleek but still brings some great function
- Post Thumbnails (optional)
- 100⁄100 Google Lighthouse score
- Analytics powered by Google Analytics, Simple Analytics and Umami (optional)
- Comments powered by Disqus, Commento, Gitalk or Utteranc.es (optional)
- Comments powered by Disqus, Commento, Gitalk, Utteranc.es or Giscus (optional)
- KaTex support (optional)
- Formspree Contact Form (optional)
- Twitter Cards support
Expand Down
6 changes: 6 additions & 0 deletions layouts/_default/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ <h2>{{ i18n "comments" }}</h2>
{{ partial "comments/utterances.html" . }}
</div>
{{- end -}}
{{- if .Site.Params.giscus.repo -}}
<div id="comment">
<h2>{{ i18n "comments" }}</h2>
{{ partial "comments/giscus.html" . }}
</div>
{{- end -}}
{{- if .Site.Params.CommentoURL -}}
<div id="comment">
<h2>{{ i18n "comments" }}</h2>
Expand Down
45 changes: 45 additions & 0 deletions layouts/partials/comments/giscus.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<script>
const getStoredTheme = () => localStorage.getItem("theme") === "dark" ? "dark" : "light";

const setGiscusTheme = () => {
const sendMessage = (message) => {
const iframe = document.querySelector('iframe.giscus-frame');
if (iframe) {
iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');
}
}
sendMessage({ setConfig: { theme: getStoredTheme() } })
}

document.addEventListener("DOMContentLoaded", () => {
const giscusAttributes = {
"src": "https://giscus.app/client.js",
"data-repo": "{{ .Site.Params.giscus.repo }}",
"data-repo-id": "{{ .Site.Params.giscus.repoID }}",
"data-category": "{{ .Site.Params.giscus.category }}",
"data-category-id": "{{ .Site.Params.giscus.categoryID }}",
"data-mapping": "{{ .Site.Params.giscus.mapping | default "pathname" }}",
"data-strict": "{{ .Site.Params.giscus.strict | default "0" }}",
"data-reactions-enabled": "{{ .Site.Params.giscus.reactionsEnabled | default "1" }}",
"data-emit-metadata": "{{ .Site.Params.giscus.emitMetadata | default "0" }}",
"data-input-position": "{{ .Site.Params.giscus.inputPosition | default "bottom" }}",
"data-theme": getStoredTheme(),
"data-lang": "{{ .Site.Params.giscus.lang | default "en" }}",
"data-loading": "{{ .Site.Params.giscus.loading | default "lazy" }}",
"crossorigin": "anonymous",
"async": "",
};

// Dynamically create script tag.
const giscusScript = document.createElement("script");
Object.entries(giscusAttributes).forEach(
([key, value]) => giscusScript.setAttribute(key, value));
document.getElementById("comment").appendChild(giscusScript);

// Update giscus theme when the theme switcher is clicked.
const themeSwitcher = document.querySelector(".themeswitch");
if (themeSwitcher) {
themeSwitcher.addEventListener("click", setGiscusTheme);
}
});
</script>

0 comments on commit bedc8f5

Please sign in to comment.