diff --git a/README.md b/README.md index dd6bda51..436c9dd2 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,8 @@ I hope you will LoveIt ❤️! * **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) * **Telegram comments** system supported by [Telegram Comments](https://comments.app/) * **Commento** comment system supported by [Commento](https://commento.io/) -* **Utterances** comment system supported by [Utterances](https://utteranc.es/) +* **utterances** comment system supported by [utterances](https://utteranc.es/) +* **giscus** comment system supported by [giscus](https://giscus.app/) ### Extended Features diff --git a/README.zh-cn.md b/README.zh-cn.md index c136724c..7968de8e 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -84,10 +84,11 @@ * 支持 **[Disqus](https://disqus.com)** 评论系统 * 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 * 支持 **[Valine](https://valine.js.org/)** 评论系统 -* 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 -* 支持 **[Telegram comments](https://comments.app/) 评论**系统 +* 支持 **[Facebook comments](https://developers.facebook.com/docs/plugins/comments/)** 评论系统 +* 支持 **[Telegram comments](https://comments.app/)** 评论系统 * 支持 **[Commento](https://commento.io/)** 评论系统 -* 支持 **[Utterances](https://utteranc.es/)** 评论系统 +* 支持 **[utterances](https://utteranc.es/)** 评论系统 +* 支持 **[giscus](https://giscus.app/)** 评论系统 ### 扩展功能 diff --git a/assets/js/theme.js b/assets/js/theme.js index d5175f8b..6f2f730d 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -865,6 +865,43 @@ var Theme = /*#__PURE__*/function () { this.switchThemeEventSet.add(this._utterancesOnSwitchTheme); } + + if (this.config.comment.giscus) { + var giscusConfig = this.config.comment.giscus; + var giscusScript = document.createElement('script'); + giscusScript.src = 'https://giscus.app/client.js'; + giscusScript.type = 'text/javascript'; + giscusScript.setAttribute('data-repo', giscusConfig.repo); + giscusScript.setAttribute('data-repo-id', giscusConfig.repoId); + giscusScript.setAttribute('data-category', giscusConfig.category); + giscusScript.setAttribute('data-category-id', giscusConfig.categoryId); + giscusScript.setAttribute('data-lang', giscusConfig.lang); + giscusScript.setAttribute('data-mapping', giscusConfig.mapping); + giscusScript.setAttribute('data-reactions-enabled', giscusConfig.reactionsEnabled); + giscusScript.setAttribute('data-emit-metadata', giscusConfig.emitMetadata); + giscusScript.setAttribute('data-input-position', giscusConfig.inputPosition); + if (giscusConfig.lazyLoading) giscusScript.setAttribute('data-loading', 'lazy'); + giscusScript.setAttribute('data-theme', this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme); + giscusScript.crossOrigin = 'anonymous'; + giscusScript.async = true; + document.getElementById('giscus').appendChild(giscusScript); + + this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || function () { + var message = { + setConfig: { + theme: _this11.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme, + reactionsEnabled: false + } + }; + var iframe = document.querySelector('iframe.giscus-frame'); + if (!iframe) return; + iframe.contentWindow.postMessage({ + giscus: message + }, 'https://giscus.app'); + }; + + this.switchThemeEventSet.add(this._giscusOnSwitchTheme); + } } } }, { diff --git a/config.toml b/config.toml index d1827b9d..8a19fb11 100644 --- a/config.toml +++ b/config.toml @@ -418,6 +418,8 @@ avatar = "mp" meta= "" pageSize = 10 + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 lang = "" visitor = true recordIP = true @@ -442,6 +444,8 @@ width = "100%" numPosts = 10 appId = "" + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 languageCode = "" # Telegram comments config (https://comments.app/) # Telegram comments 评论系统设置 (https://comments.app/) @@ -458,8 +462,8 @@ # Commento comment 评论系统设置 (https://commento.io/) [params.page.comment.commento] enable = false - # Utterances comment config (https://utteranc.es/) - # Utterances comment 评论系统设置 (https://utteranc.es/) + # utterances comment config (https://utteranc.es/) + # utterances comment 评论系统设置 (https://utteranc.es/) [params.page.comment.utterances] enable = false # owner/repo @@ -468,6 +472,26 @@ label = "" lightTheme = "github-light" darkTheme = "github-dark" + # giscus comment config (https://giscus.app/) + # giscus comment 评论系统设置 (https://giscus.app/zh-CN) + [params.page.comment.giscus] + # You can refer to the official documentation of giscus to use the following configuration. + # 你可以参考官方文档来使用下列配置 + enable = false + repo = "" + repoId = "" + category = "Announcements" + categoryId = "" + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 + lang = "" + mapping = "pathname" + reactionsEnabled = "1" + emitMetadata = "0" + inputPosition = "bottom" + lazyLoading = false + lightTheme = "light" + darkTheme = "dark" # Third-party library config # 第三方库配置 [params.page.library] diff --git a/exampleSite/config.toml b/exampleSite/config.toml index ad10a353..e4e36f0c 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -500,6 +500,8 @@ enableEmoji = true avatar = "mp" meta= "" pageSize = 10 + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 lang = "" visitor = true recordIP = true @@ -524,6 +526,8 @@ enableEmoji = true width = "100%" numPosts = 10 appId = "" + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 languageCode = "" # Telegram comments config (https://comments.app/) # Telegram comments 评论系统设置 (https://comments.app/) @@ -540,8 +544,8 @@ enableEmoji = true # Commento comment 评论系统设置 (https://commento.io/) [params.page.comment.commento] enable = false - # Utterances comment config (https://utteranc.es/) - # Utterances comment 评论系统设置 (https://utteranc.es/) + # utterances comment config (https://utteranc.es/) + # utterances comment 评论系统设置 (https://utteranc.es/) [params.page.comment.utterances] enable = false # owner/repo @@ -550,6 +554,26 @@ enableEmoji = true label = "" lightTheme = "github-light" darkTheme = "github-dark" + # giscus comment config (https://giscus.app/) + # giscus comment 评论系统设置 (https://giscus.app/zh-CN) + [params.page.comment.giscus] + # You can refer to the official documentation of giscus to use the following configuration. + # 你可以参考官方文档来使用下列配置 + enable = false + repo = "" + repoId = "" + category = "Announcements" + categoryId = "" + # automatically adapt the current theme i18n configuration when empty + # 为空时自动适配当前主题 i18n 配置 + lang = "" + mapping = "pathname" + reactionsEnabled = "1" + emitMetadata = "0" + inputPosition = "bottom" + lazyLoading = false + lightTheme = "light" + darkTheme = "dark" # Third-party library config # 第三方库配置 [params.page.library] diff --git a/exampleSite/content/about/index.en.md b/exampleSite/content/about/index.en.md index 0c257b9f..7469bc35 100644 --- a/exampleSite/content/about/index.en.md +++ b/exampleSite/content/about/index.en.md @@ -33,7 +33,7 @@ math: * :(fab fa-searchengin fa-fw): Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD * :(fab fa-google fa-fw): **[Google Analytics](https://analytics.google.com/analytics)** supported * :(far fa-chart-bar fa-fw): **[Fathom Analytics](https://usefathom.com/)** supported -* :(far fa-chart-column fa-fw): **[Plausible Analytics](https://plausible.io/)** supported +* :(fas fa-chart-column fa-fw): **[Plausible Analytics](https://plausible.io/)** supported * :(fas fa-sitemap fa-fw): Search engine **verification** supported (Google, Bind, Yandex and Baidu) * :(fas fa-tachometer-alt fa-fw): **CDN** for third-party libraries supported * :(fas fa-cloud-download-alt fa-fw): Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes) @@ -60,7 +60,8 @@ math: * :(far fa-comments fa-fw): **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) * :(fas fa-comment fa-fw): **Telegram comments** system supported by [Comments](https://comments.app/) * :(fas fa-comment-dots fa-fw): **Commento** comment system supported by [Commento](https://commento.io/) -* :(fas fa-comment-alt fa-fw): **Utterances** comment system supported by [Utterances](https://utteranc.es/) +* :(fas fa-comment-alt fa-fw): **utterances** comment system supported by [utterances](https://utteranc.es/) +* :(fas fa-comments fa-fw): **giscus** comment system supported by [giscus](https://giscus.app/) #### Extended Features diff --git a/exampleSite/content/about/index.zh-cn.md b/exampleSite/content/about/index.zh-cn.md index 7fcd409a..bcfa2852 100644 --- a/exampleSite/content/about/index.zh-cn.md +++ b/exampleSite/content/about/index.zh-cn.md @@ -33,7 +33,7 @@ math: * :(fab fa-searchengin fa-fw): 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化 * :(fab fa-google fa-fw): 支持 **[Google Analytics](https://analytics.google.com/analytics)** * :(far fa-chart-bar fa-fw): 支持 **[Fathom Analytics](https://usefathom.com/)** -* :(far fa-chart-column fa-fw): 支持 **[Plausible Analytics](https://plausible.io/)** +* :(fas fa-chart-column fa-fw): 支持 **[Plausible Analytics](https://plausible.io/)** * :(fas fa-sitemap fa-fw): 支持搜索引擎的**网站验证** (Google, Bind, Yandex and Baidu) * :(fas fa-tachometer-alt fa-fw): 支持所有第三方库的 **CDN** * :(fas fa-cloud-download-alt fa-fw): 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载** @@ -57,10 +57,11 @@ math: * :(far fa-comment fa-fw): 支持 **[Disqus](https://disqus.com)** 评论系统 * :(far fa-comment-dots fa-fw): 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 * :(far fa-comment-alt fa-fw): 支持 **[Valine](https://valine.js.org/)** 评论系统 -* :(far fa-comments fa-fw): 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 -* :(fas fa-comment fa-fw): 支持 **[Telegram comments](https://comments.app/) 评论**系统 +* :(far fa-comments fa-fw): 支持 **[Facebook comments](https://developers.facebook.com/docs/plugins/comments/)** 评论系统 +* :(fas fa-comment fa-fw): 支持 **[Telegram comments](https://comments.app/)** 评论系统 * :(fas fa-comment-dots fa-fw): 支持 **[Commento](https://commento.io/)** 评论系统 -* :(far fa-comment-alt fa-fw): 支持 **[Utterances](https://utteranc.es/)** 评论系统 +* :(far fa-comment-alt fa-fw): 支持 **[utterances](https://utteranc.es/)** 评论系统 +* :(fas fa-comments fa-fw): 支持 **[giscus](https://giscus.app/)** 评论系统 #### 扩展功能 diff --git a/exampleSite/content/posts/theme-documentation-basics/index.en.md b/exampleSite/content/posts/theme-documentation-basics/index.en.md index a4b543b6..c30c0d37 100644 --- a/exampleSite/content/posts/theme-documentation-basics/index.en.md +++ b/exampleSite/content/posts/theme-documentation-basics/index.en.md @@ -524,6 +524,7 @@ Please open the code block below to view the complete sample configuration :(far avatar = "mp" meta= "" pageSize = 10 + # automatically adapt the current theme i18n configuration when empty lang = "" visitor = true recordIP = true @@ -542,6 +543,7 @@ Please open the code block below to view the complete sample configuration :(far width = "100%" numPosts = 10 appId = "" + # automatically adapt the current theme i18n configuration when empty languageCode = "" # {{< version 0.2.0 >}} {{< link "https://comments.app/" "Telegram comments" >}} config [params.page.comment.telegram] @@ -556,7 +558,7 @@ Please open the code block below to view the complete sample configuration :(far # {{< version 0.2.0 >}} {{< link "https://commento.io/" "Commento" >}} comment config [params.page.comment.commento] enable = false - # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "Utterances" >}} comment config + # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "utterances" >}} comment config [params.page.comment.utterances] enable = false # owner/repo @@ -565,6 +567,23 @@ Please open the code block below to view the complete sample configuration :(far label = "" lightTheme = "github-light" darkTheme = "github-dark" + # giscus comment config (https://giscus.app/) + [params.page.comment.giscus] + # You can refer to the official documentation of giscus to use the following configuration. + enable = false + repo = "" + repoId = "" + category = "Announcements" + categoryId = "" + # automatically adapt the current theme i18n configuration when empty + lang = "" + mapping = "pathname" + reactionsEnabled = "1" + emitMetadata = "0" + inputPosition = "bottom" + lazyLoading = false + lightTheme = "light" + darkTheme = "dark" # {{< version 0.2.7 >}} Third-party library config [params.page.library] [params.page.library.css] diff --git a/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md index 22d25cf1..189bc57f 100644 --- a/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md @@ -526,6 +526,7 @@ hugo avatar = "mp" meta= "" pageSize = 10 + # 为空时自动适配当前主题 i18n 配置 lang = "" visitor = true recordIP = true @@ -544,6 +545,7 @@ hugo width = "100%" numPosts = 10 appId = "" + # 为空时自动适配当前主题 i18n 配置 languageCode = "zh_CN" # {{< version 0.2.0 >}} {{< link "https://comments.app/" "Telegram Comments" >}} 评论系统设置 [params.page.comment.telegram] @@ -558,7 +560,7 @@ hugo # {{< version 0.2.0 >}} {{< link "https://commento.io/" "Commento" >}} 评论系统设置 [params.page.comment.commento] enable = false - # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "Utterances" >}} 评论系统设置 + # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "utterances" >}} 评论系统设置 [params.page.comment.utterances] enable = false # owner/repo @@ -567,6 +569,23 @@ hugo label = "" lightTheme = "github-light" darkTheme = "github-dark" + # giscus comment 评论系统设置 (https://giscus.app/zh-CN) + [params.page.comment.giscus] + # 你可以参考官方文档来使用下列配置 + enable = false + repo = "" + repoId = "" + category = "Announcements" + categoryId = "" + # 为空时自动适配当前主题 i18n 配置 + lang = "" + mapping = "pathname" + reactionsEnabled = "1" + emitMetadata = "0" + inputPosition = "bottom" + lazyLoading = false + lightTheme = "light" + darkTheme = "dark" # {{< version 0.2.7 >}} 第三方库配置 [params.page.library] [params.page.library.css] diff --git a/i18n/ar.toml b/i18n/ar.toml index ca9d22f6..043a4c4b 100644 --- a/i18n/ar.toml +++ b/i18n/ar.toml @@ -51,13 +51,16 @@ other = "يعمل الموقع بنظام {{ .Hugo }} | التصميم مقدم # === partials/comment.html === [valineLang] -other = "ar" +other = "en" [valinePlaceholder] other = "تعليقك..." [facebookLanguageCode] other = "ar_AR" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/ca.toml b/i18n/ca.toml index 097b05cd..3a695cca 100644 --- a/i18n/ca.toml +++ b/i18n/ca.toml @@ -52,13 +52,16 @@ other = "Impulsat per {{ .Hugo }} | Tema - {{ .Theme }}" # === partials/comment.html === [valineLang] -other = "ca" +other = "en" [valinePlaceholder] other = "El teu comentari ..." [facebookLanguageCode] other = "ca_ES" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/de.toml b/i18n/de.toml index 4781eb43..6bfaa504 100644 --- a/i18n/de.toml +++ b/i18n/de.toml @@ -59,6 +59,9 @@ other = "Ihr Kommentar ..." [facebookLanguageCode] other = "de_DE" + +[giscusLang] +other = "de" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/en.toml b/i18n/en.toml index 6f5a428a..47d8e73d 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -58,6 +58,9 @@ other = "Your comment ..." [facebookLanguageCode] other = "en_US" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/es.toml b/i18n/es.toml index 0c93dd50..7c6d0186 100644 --- a/i18n/es.toml +++ b/i18n/es.toml @@ -59,6 +59,9 @@ other = "Tu comentario ..." [facebookLanguageCode] other = "es_MX" + +[giscusLang] +other = "es" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/fr.toml b/i18n/fr.toml index 541f68c5..fd9d2823 100644 --- a/i18n/fr.toml +++ b/i18n/fr.toml @@ -59,6 +59,9 @@ other = "Votre commentaire ..." [facebookLanguageCode] other = "fr" + +[giscusLang] +other = "fr" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/id.toml b/i18n/id.toml index 537ab56f..2bebaac8 100644 --- a/i18n/id.toml +++ b/i18n/id.toml @@ -59,6 +59,9 @@ other = "Komentar Anda ..." [facebookLanguageCode] other = "id_ID" + +[giscusLang] +other = "id" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/it.toml b/i18n/it.toml index 2a8ea99f..b3381d00 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -59,6 +59,9 @@ other = "Il tuo commento ..." [facebookLanguageCode] other = "it" + +[giscusLang] +other = "it" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/pl.toml b/i18n/pl.toml index b9aa2f72..fd200763 100644 --- a/i18n/pl.toml +++ b/i18n/pl.toml @@ -59,6 +59,9 @@ other = "Twój komentarz ..." [facebookLanguageCode] other = "pl" + +[giscusLang] +other = "pl" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/pt-BR.toml b/i18n/pt-BR.toml index 6af59258..9267dc51 100644 --- a/i18n/pt-BR.toml +++ b/i18n/pt-BR.toml @@ -59,6 +59,9 @@ other = "O seu comentário ..." [facebookLanguageCode] other = "pt_BR" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/ro.toml b/i18n/ro.toml index 7584dc6f..5ec072b2 100644 --- a/i18n/ro.toml +++ b/i18n/ro.toml @@ -59,6 +59,9 @@ other = "Comentariul dvs ..." [facebookLanguageCode] other = "ro_RO" + +[giscusLang] +other = "ro" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/ru.toml b/i18n/ru.toml index 82a01851..d97029d4 100644 --- a/i18n/ru.toml +++ b/i18n/ru.toml @@ -59,6 +59,9 @@ other = "Ваш комментарий ..." [facebookLanguageCode] other = "ru_RU" + +[giscusLang] +other = "ru" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/sr.toml b/i18n/sr.toml index 09b7d049..5810f9d6 100644 --- a/i18n/sr.toml +++ b/i18n/sr.toml @@ -52,13 +52,16 @@ other = "Покреће {{ .Hugo }} | Тема - {{ .Theme }}" # === partials/comment.html === [valineLang] -other = "sr" +other = "en" [valinePlaceholder] other = "Ваш коментар ..." [facebookLanguageCode] other = "sr_RS" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/te.toml b/i18n/te.toml index 0005ca11..f61e7dc8 100644 --- a/i18n/te.toml +++ b/i18n/te.toml @@ -52,13 +52,16 @@ other = "{{ .Hugo }} ద్వారా ఆధారితం | నేపథ్ # === partials/comment.html === [valineLang] # not supported -other = "te" +other = "en" [valinePlaceholder] other = "మీ వాఖ్యనం ..." [facebookLanguageCode] other = "te_IN" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/th.toml b/i18n/th.toml index d79ecf26..58fab433 100644 --- a/i18n/th.toml +++ b/i18n/th.toml @@ -52,13 +52,16 @@ other = "เว็บนี้สร้างโดย {{ .Hugo }} | ธีม - # === partials/comment.html === [valineLang] -other = "th" +other = "en" [valinePlaceholder] other = "ความคิดเห็นของคุณ ..." [facebookLanguageCode] other = "th_TH" + +[giscusLang] +other = "en" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/vi.toml b/i18n/vi.toml index 04ac1ca6..aa7ade0c 100644 --- a/i18n/vi.toml +++ b/i18n/vi.toml @@ -58,6 +58,9 @@ other = "Bình luận của bạn ..." [facebookLanguageCode] other = "vi" + +[giscusLang] +other = "vi" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/zh-CN.toml b/i18n/zh-CN.toml index a96a0b24..d45c89ea 100644 --- a/i18n/zh-CN.toml +++ b/i18n/zh-CN.toml @@ -52,13 +52,16 @@ other = "由 {{ .Hugo }} 强力驱动 | 主题 - {{ .Theme }}" # === partials/comment.html === [valineLang] -other = "zh-cn" +other = "zh-CN" [valinePlaceholder] other = "你的评论 ..." [facebookLanguageCode] other = "zh_CN" + +[giscusLang] +other = "zh-CN" # === partials/comment.html === # === partials/assets.html === diff --git a/i18n/zh-TW.toml b/i18n/zh-TW.toml index ced75dd7..126cfeee 100644 --- a/i18n/zh-TW.toml +++ b/i18n/zh-TW.toml @@ -52,7 +52,7 @@ other = "由 {{ .Hugo }} 強力驅動 | 主題 - {{ .Theme }}" # === partials/comment.html === [valineLang] -other = "zh-tw" +other = "zh-TW" [valinePlaceholder] other = "你的評論 ..." diff --git a/layouts/partials/comment.html b/layouts/partials/comment.html index f849740d..2a52864e 100644 --- a/layouts/partials/comment.html +++ b/layouts/partials/comment.html @@ -112,7 +112,7 @@ {{- end -}} - {{- /* Utterances Comment System */ -}} + {{- /* utterances Comment System */ -}} {{- $utterances := $comment.utterances | default dict -}} {{- if $utterances.enable -}}
@@ -122,7 +122,28 @@ {{- $commentConfig = $utterances.lightTheme | default "github-light" | dict "lightTheme" | dict "utterances" | merge $commentConfig -}} {{- $commentConfig = $utterances.darkTheme | default "github-dark" | dict "darkTheme" | dict "utterances" | merge $commentConfig -}} + {{- end -}} + + {{- /* giscus Comment System */ -}} + {{- $giscus := $comment.giscus | default dict -}} + {{- if $giscus.enable -}} + + {{- $commentConfig = dict "repo" $giscus.repo | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = dict "repoId" $giscus.repoId | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = dict "category" $giscus.category | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = dict "categoryId" $giscus.categoryId | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.lang | default (T "valineLang") | dict "lang" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.mapping | default "pathname" | dict "mapping" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.reactionsEnabled | default "1" | dict "reactionsEnabled" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.emitMetadata | default "0" | dict "emitMetadata" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.inputPosition | default "bottom" | dict "inputPosition" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.lazyLoading | default false | dict "lazyLoading" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.lightTheme | default "github-light" | dict "lightTheme" | dict "giscus" | merge $commentConfig -}} + {{- $commentConfig = $giscus.darkTheme | default "github-dark" | dict "darkTheme" | dict "giscus" | merge $commentConfig -}} + {{- end -}} diff --git a/src/js/theme.js b/src/js/theme.js index a00bd28e..3598f9a2 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -645,6 +645,39 @@ class Theme { }); this.switchThemeEventSet.add(this._utterancesOnSwitchTheme); } + + if (this.config.comment.giscus) { + const giscusConfig = this.config.comment.giscus; + const giscusScript = document.createElement('script'); + giscusScript.src = 'https://giscus.app/client.js'; + giscusScript.type = 'text/javascript'; + giscusScript.setAttribute('data-repo', giscusConfig.repo); + giscusScript.setAttribute('data-repo-id', giscusConfig.repoId); + giscusScript.setAttribute('data-category', giscusConfig.category); + giscusScript.setAttribute('data-category-id', giscusConfig.categoryId); + giscusScript.setAttribute('data-lang', giscusConfig.lang); + giscusScript.setAttribute('data-mapping', giscusConfig.mapping); + giscusScript.setAttribute('data-reactions-enabled', giscusConfig.reactionsEnabled); + giscusScript.setAttribute('data-emit-metadata', giscusConfig.emitMetadata); + giscusScript.setAttribute('data-input-position', giscusConfig.inputPosition); + if (giscusConfig.lazyLoading) giscusScript.setAttribute('data-loading', 'lazy'); + giscusScript.setAttribute('data-theme', this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme); + giscusScript.crossOrigin = 'anonymous'; + giscusScript.async = true; + document.getElementById('giscus').appendChild(giscusScript); + this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => { + const message = { + setConfig: { + theme: this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme, + reactionsEnabled: false, + } + }; + const iframe = document.querySelector('iframe.giscus-frame'); + if (!iframe) return; + iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app'); + }); + this.switchThemeEventSet.add(this._giscusOnSwitchTheme); + } } }