Generate xref attributes for all topics in manifest #66
Labels
Asciidoctor
Involves working heavily with or extending Asciidoctor tools
enhancement
New feature or request
help wanted
Extra attention is needed
Jekyll
Involves working heavily with or extending Jekyll SSG
Liquid
Incorporates Liquid templating
Ruby
Involves some Ruby troubleshooting/coding
Cross-references are a big problem in most static-based websites, and this is not resolved by adding AsciiDoc to the mix, even though AsciIDoc has xrefs built in. At the time of conversion, each page is treated like a distinct document, and Asciidoctor does not know what other documents are, let alone where they are.
This is the reason to use a manifest that generates menus and also records some metadata for each topic, so there is a central dataset that understands the information architecture and knows all the paths.
To render hyperlinked cross-references (xrefs)in this theme (or any jekyll-asciidoc-driven site), we use syntax like
<</path/to/topic#,Topic Title or Other Text Here>>
. This means we must know the exact URL of the resource and its title, and if those change, we'll have to search-and-replace to catch xrefs.Alternatively, we could pre-generate a big set of xrefs and store them and make them available as AsciIDoc attributes (variables). For example,
<<{xref_topic-slug-here}>>
could render an xref just like the previous, conventional syntax. Or use<<{xref_topic-slug-here_notitle},some arbitrary text>>
if you don't want to render the title of the referenced toipic.That is the simple part. The hard part is loading them for each document build. Every document build ingests AsciiDoc attributes from
site.asciidoctor.attributes
, but those are sourced as static YAML files that won't exist at the top of the build when they're required.Alternatively, we can generate an
attributes.adoc
file (using a Jekyll include), and then we can embed that at the top of each topic as an AsciiDoc include (I think?), but in this case we would need a reference this include in any file that uses the xref variables. I don't think there's a way to use layouts or any other global feature to ingest the attributes on a per-topic basis.The only other option I can think of at this time is to create a plugin that preprocesses the manifest into a list of AsciiDoc attributes and ingests it. This might be optimal, and then it would apply to any theme that wanted to use it, right out of the box.
The text was updated successfully, but these errors were encountered: