Based on @chrillek’s feedback (thanks!) I’ve updated the JS code to do the following:
- Create links to Item, Obsidian, Annotation and URL
- List tags
- Create a H1 header for the item
- Style via:: and excerpt:: inline tags
- Link blockquotes (i.e. highlights from PDFs) as DT links with a search parameter
document.addEventListener('DOMContentLoaded', () => {
const metadata = {};
metadata["title"] = document.querySelector('title').innerText;
["date", "url", "itemurl", "annotation", "path", "tags"].forEach( tag => {
const node = document.querySelector(`meta[name="${tag}"]`)
if (node) metadata[tag] = node.content;
})
if (metadata["itemurl"]) {
body = document.querySelector("body").innerHTML;
info = `<p><a href="${metadata['itemurl']}">Item</a> | <a href="obsidian://open?vault=Notes&file=${encodeURIComponent(metadata['title'])}.md">Obsidian</a> | <a href="kmtrigger://macro=Open&value=${encodeURIComponent('/Users/mdbraber/Library/Mobile Documents/com~apple~CloudDocs/Content/')+metadata["path"]}">File</a>`
if (metadata["url"]) info = info + ` | <a href="${metadata['url']}">URL</a>`
if (metadata["tags"]) info = info + `<br/>Tags: <i>${metadata['tags']}</i>`
info = info + `</p><h1>${metadata['title']}</h1>`
document.querySelector("body").innerHTML = info + "\n" + body;
elExcerpt = document.evaluate("//p[contains(.,'excerpt::')]", document, null, XPathResult.ANY_TYPE, null);
excerpt = elExcerpt.iterateNext();
elVia = document.evaluate("//p[contains(.,'via::')]", document, null, XPathResult.ANY_TYPE, null);
via = elVia.iterateNext();
if(excerpt) { excerpt.innerHTML = `<b>${excerpt.innerHTML.substr(10)}</b>`; }
if(via) {
via.innerHTML = `<i>${via.innerHTML.substr(6)}</i><br/><br/><hr/>`;
} else {
excerpt.innerHTML += "<br/><br/><hr/>";
}
document.querySelectorAll('blockquote > p').forEach(quote => {
quote.innerHTML = `<a href="${metadata["itemurl"]}?search=${encodeURIComponent(quote.innerText)}">${quote.innerText}</a>`;
});
}
});