This note records file changes made to the original Quartz code. It exists to help support changes between versions. Unfortunately to achieve the site design I want for The Quantum Garden Website some jiggery-pokery is required.
Plugin modifications
Custom plugins
link-purger, removes links to pages that don’t exist post-filtering, style self-referenced linksportcullis, highly specific and tightly-controlled filter for which pages to publish1qg-footer, replacement footer component showing the information I want to include2transform-tags, modifies incoming tags for simplification and renaming
Community plugin modifications
For these modifications I clone the original repository, remove the plugin from quartz.config.yaml, then add it back in as a local link to my version. The remote upstream is set to the remote origin, then the remote origin is removed. Doing so allows me to pull updates and stops git wanting me to upload my changes.
backlinks, cloned from GitHub - quartz-community/backlinks- modified title and added a question mark icon linking through to Backlinks to explain what they are
content-index, cloned from GitHub - quartz-community/content-index- filters RSS index posts based on a tag
- options allow specification of multiple RSS files
content-meta, cloned from GitHub - quartz-community/content-meta- formats modified and created date
- displays rating if one given
recent-notes, cloned from GitHub - quartz-community/recent-notes- modified title and added standard RSS link icon which links to the Subscribe instructions
- filter to
blognotes only (I may remove this in the future) - indicates which notes have been modified
Filtering out links
Both content-index and link-purger call sanitiser which parses the HTML that will be generated and removes all links to pages that do not exist after filtering. A detailed explanation of why this occurs can be found in Merging Public and Private Notes: Three Lines of Defence in Quartz 4. The plugin architecture prevents me sharing code across plugin modules so the sanitiser code is inserted into the plugin source code by way of symbolic link.
Base code changes
Root footer
All modified files exist within
~/quartz/quartz.
Ignoring index.ts files
There are many
index.tsfiles created to hold the system together. There is no value in listing them below. It’s self-evident when they need to be modified.
- Australian locale
i18n/locales/en-AU.ts, created to allow reference toen-AUfor date formatting
- Nerd Fonts integration
styles/custom.css, add Nerd Fonts CSS classes for icons usedstatic/icons/*.svg, add icon files for any not in the base font file
- tinylytics integration
plugins/emitters/componentResources.ts, modified to add extra data optionsstatic/flags/*.webp, add flag files for all countries as workaround for emoji flag display on Windows only showing lettersstatic/replaceflags.js, add dynamic emoji → webp flag replacementcomponents/head.tsx, addreplaceflags.jsto<head>on each page
Footnotes
-
Merging Public and Private Notes: Three Lines of Defence in Quartz 4, applies the same to Quartz 5. ↩
-
I may extend the community footer plugin instead of using my own when I next make changes. I’ve learned more about the infrastructure since doing this first one. ↩
