What a render publishes beside the pages
Rendering a manual produces more than the HTML pages a reader sees. Beside them it writes a handful of files that describe the manual itself: its inventory, its table of contents, the classes it speaks of, and every page a second time as Markdown. They are published with the manual, at the same URL as its pages, and they are what other manuals, the search and machine clients read.
You never write these files, and nothing in your sources refers to them. They are worth knowing about all the same: they are the reason an anchor and a headline are not only decoration, and they answer questions about a manual that reading its pages one by one cannot.
Every page as Markdown
Every page is published a second time as Markdown, at its own URL with .md
instead of .html:
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Index.md
It holds the content of the page without navigation, theme or markup, and it
is a fraction of the size. Each rendered page announces it in its <head>
with a <link rel="alternate" type="text/ tag.
The Markdown is produced from the same build as the HTML, after includes are resolved and generated directives are expanded, so it holds what the page holds — unlike the reST source below.
The inventory
The inventory lists everything a manual can be linked to: every page, headline, anchor and named entity, with its title and its URL. It is written twice, as JSON and in the Sphinx format:
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/objects.inv.json
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/objects.inv
This is what an interlink resolves against. When you write
:ref:
Link text <t3coreapi:some-anchor>``, the rendering of your manual
downloads the inventory of that manual and looks the anchor up in it. An
anchor that is not in the inventory is what a "could not be resolved" warning
is about, and an anchor that is only added later is why a reference can start
working after a re-render.
See Interlink inventories for the format.
The table of contents
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/toc.json
The pages of a manual in the order its table of contents puts them, nested the way it nests them, each with its title and the anchor its permalink is built from. Pages no toctree leads to are marked as orphans, which makes this the quickest way to find a page that has fallen out of the menu.
See Table of contents as JSON for the format.
The class index
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/classes.json
Every PHP class a manual speaks of, with the places that speak of it: where the text names the class, where a code example uses it, and where the manual documents the class itself. It answers what the inventory cannot, namely where a class is explained and what else mentions it at all — the inventory lists what a manual documents, which is the definitions alone.
This is also what makes the difference between
:php:
and a plain
literal visible from outside a page: a class written as a code role is found,
a class written as ordinary text is not. See
PHP classes and interfaces.
See Class index as JSON for the format, which is still settling.
The changelog index
https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog-14.json
Published for the TYPO3 Core Changelog only, one file per major release. Each entry carries its permalink, title, the kind of change, the Forge issue and its tags, so the changes of a release can be read without walking the overview page. See Changelog index.
The reST source
The source of every page is published as well, under _sources:
https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/_sources/Index.rst.txt
It is the file as you wrote it, which means it is smaller than the page and
sometimes says less: an include is not resolved in it, and a directive that
generates its content, such as the arguments of a ViewHelper, has nothing in
it at all. Use the Markdown above where the complete content matters.
The single file of a whole manual
Until render-guides 0.44.0 every manual was also published as one large HTML
page under singlehtml/. It is no longer produced, and it disappears from a
manual with that manual's next render.
You can still make one locally, from your own sources:
docker run --rm --pull always -v "$(pwd)":/project -t \
ghcr.io/typo3-documentation/render-guides:latest --config=Documentation --single-markdown
-- writes the whole manual into singlemd/,
-- into singlehtml/. Both render that one file
and nothing else, which makes them a quick way to read or search a whole
manual at once.
Who reads these files
llms.txt describes the artifacts above for AI clients and tells them to start from the inventory or the table of contents rather than crawling the pages, and robots.txt allows all of them for every client. Both files are maintained in the homepage repository.