GitHub:如何让 `utteranc.es` 用于网站讨论
GitHub: How to get `utteranc.es` to work for website discussion
我的网站https://friendly.github.io/HistDataVis/ wants to use the seemingly light weight and useful discussion feature offered by the https://github.com/utterance应用
我相信我已经在我的存储库中正确安装了它,https://github.com/friendly/HistDataVis,但是它在构建时没有出现在网站上。
我对如何确定问题所在或如何纠正问题感到困惑。有人可以帮忙吗?
作为参考,这是我的设置:
该网站是在 R Studio 中构建的,在 rmarkdown 中使用 distill
。
我使用推荐的标准 JS 代码创建了 utterances.html
。
<script>
document.addEventListener("DOMContentLoaded", function () {
if (!/posts/.test(location.pathname)) {
return;
}
var script = document.createElement("script");
script.src = "https://utteranc.es/client.js";
script.setAttribute("repo", "friendly/HistDataVis");
script.setAttribute("issue-term", "og:title");
script.setAttribute("crossorigin", "anonymous");
script.setAttribute("label", "comments ??");
/* wait for article to load, append script to article element */
var observer = new MutationObserver(function (mutations, observer) {
var article = document.querySelector("d-article");
if (article) {
observer.disconnect();
/* HACK: article scroll */
article.setAttribute("style", "overflow-y: hidden");
article.appendChild(script);
}
});
observer.observe(document.body, { childList: true });
});
</script>
- 在一个
Rmd
文件中,我使用 in_header
将其插入到生成的 HTML 文件中:
---
title: "Discussion"
date: "`r Sys.Date()`"
output:
distill::distill_article:
toc: true
includes:
in_header: utterances.html
---
也在我的 _site.yml
文件中使用了它以应用于网站上的所有 Rmd
文件。
在我的 GitHub 帐户上,我在 GitHub 应用程序下安装了 utterances,并授予它对该站点的 repo 的存储库访问权限。
编辑2
按照@laymonage 建议的解决方案,我修复了脚本。我现在在我的网页上看到评论部分,但是当我尝试使用它时出现错误,“未安装话语”。然而,正如我刚刚检查的那样,话语已安装。
您的这部分代码:
if (!/posts/.test(location.pathname)) {
return;
}
阻止脚本的其余部分加载,因为它总是 true
。
条件检查location.pathname
的值是否通过正则表达式测试字符串posts
并取反(!
)。这意味着条件是 true
如果 location.pathname
(当前 [=40= 的路径名],例如 /HistDataVis/
for https://friendly.github.io/HistDataVis/
)不包含 posts
字符串中的任意位置。您网站上的 None 个页面在 pathname
中有 posts
,因此脚本将在那里结束。
如果您将 /posts/
更改为 /HistDataVis
或者完全删除 if
块,它应该可以工作。
或者,您也可以尝试 giscus, a similar project that uses GitHub Discussions instead of Issues. Someone already made a guide on how to use it with Distill。 免责声明:我是 giscus 的开发者。
我的网站https://friendly.github.io/HistDataVis/ wants to use the seemingly light weight and useful discussion feature offered by the https://github.com/utterance应用
我相信我已经在我的存储库中正确安装了它,https://github.com/friendly/HistDataVis,但是它在构建时没有出现在网站上。
我对如何确定问题所在或如何纠正问题感到困惑。有人可以帮忙吗?
作为参考,这是我的设置:
该网站是在 R Studio 中构建的,在 rmarkdown 中使用
distill
。我使用推荐的标准 JS 代码创建了
utterances.html
。
<script>
document.addEventListener("DOMContentLoaded", function () {
if (!/posts/.test(location.pathname)) {
return;
}
var script = document.createElement("script");
script.src = "https://utteranc.es/client.js";
script.setAttribute("repo", "friendly/HistDataVis");
script.setAttribute("issue-term", "og:title");
script.setAttribute("crossorigin", "anonymous");
script.setAttribute("label", "comments ??");
/* wait for article to load, append script to article element */
var observer = new MutationObserver(function (mutations, observer) {
var article = document.querySelector("d-article");
if (article) {
observer.disconnect();
/* HACK: article scroll */
article.setAttribute("style", "overflow-y: hidden");
article.appendChild(script);
}
});
observer.observe(document.body, { childList: true });
});
</script>
- 在一个
Rmd
文件中,我使用in_header
将其插入到生成的 HTML 文件中:
---
title: "Discussion"
date: "`r Sys.Date()`"
output:
distill::distill_article:
toc: true
includes:
in_header: utterances.html
---
也在我的
_site.yml
文件中使用了它以应用于网站上的所有Rmd
文件。在我的 GitHub 帐户上,我在 GitHub 应用程序下安装了 utterances,并授予它对该站点的 repo 的存储库访问权限。
编辑2 按照@laymonage 建议的解决方案,我修复了脚本。我现在在我的网页上看到评论部分,但是当我尝试使用它时出现错误,“未安装话语”。然而,正如我刚刚检查的那样,话语已安装。
您的这部分代码:
if (!/posts/.test(location.pathname)) {
return;
}
阻止脚本的其余部分加载,因为它总是 true
。
条件检查location.pathname
的值是否通过正则表达式测试字符串posts
并取反(!
)。这意味着条件是 true
如果 location.pathname
(当前 [=40= 的路径名],例如 /HistDataVis/
for https://friendly.github.io/HistDataVis/
)不包含 posts
字符串中的任意位置。您网站上的 None 个页面在 pathname
中有 posts
,因此脚本将在那里结束。
如果您将 /posts/
更改为 /HistDataVis
或者完全删除 if
块,它应该可以工作。
或者,您也可以尝试 giscus, a similar project that uses GitHub Discussions instead of Issues. Someone already made a guide on how to use it with Distill。 免责声明:我是 giscus 的开发者。