I’m wondering if it is possible to render a markdown file within Hugo based off of a link to a markdown file. The reason being is that it would be nice to have some of the readmes from our repo on our Hugo site, without having to manage the same content in two files.
I presumed you meant local file. To load remote data, maybe you can use some API to get a JSON representation of the file in question. But there is not currently a way to load markdown from a remote endpoint in Hugo.
Hugo modules is still an option (making remote files local, cached).
I ended up getting it to work with this, so now I just need to figure out how to store my secret and pull that in
renderMarkdownFromGoAlert.html:
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<div id="markdown" style="height: 100%;"></div>
<script type="module">
import { Octokit } from "https://cdn.pika.dev/@octokit/rest";
const octokit = new Octokit({
auth: "MY_SECRET",
userAgent: "goalert",
baseUrl: "https://api.github.com",
});
octokit.repos
.getContent({
owner: "target",
repo: "goalert",
path: "{{ .Get 0 }}",
})
.then((result) => {
// content will be base64 encoded
var content = atob(result.data.content).toString();
// replace rel links from github markdown with abs links
var toUrl = "https://github.com/target/goalert/blob/master";
content = content.replace(/\]\(\./g, "](" + toUrl);
// render within div
document.getElementById("markdown").innerHTML = marked(content);
});
</script>
and then in my _index.md I have {{< renderMarkdownFromGoAlert "CONTRIBUTING.md" >}} where that parameter is the path to the file in our repo. Working great so far!