File structure
This page explains the general file structure of a TYPO3 documentation that can be rendered with the rendering toolchain.
Table of Contents:
Prerequisites for rendering documentation to docs.typo3.org
In order for the documentation to be rendered, you need at least
- A valid composer.json
And one of the following files:
- Documentation/Index.rst (Full documentation in reST)
- Documentation/Index.md (Full documentation in reST markdown)
- README.rst (Single file documentation (README))
- README.md (Single file documentation (README))
Further conventions are:
- Included reST files should have the extension
.rst.
.txt - Use CamelCase for directory and file names,
for example:
Documentation/
.General Conventions/ File Structure. rst - Each directory shall have a file named
Index.
it is used as fallback if a page is not found during switching versions.rst - Code examples to be included should start with an underscore, for example
_Services.
.yaml
Full documentation in reST
To render a complete documentation manual you need a folder called
Documentation
with at least a reStructured Text file as entry point named
Documentation
and a configuration file called
Documentationguides.
. Add more files as needed.
You can keep a README.
or README.
file with basic
information and a link to the published manual in the root folder of the
extension. These files will be commonly displayed on GitHub and GitLab.
Start page: Documentation/Index.rst
The documentation start page (Documentation/
) is the entry
point of the main documentation. It usually contains general information about
the manual, a summary of its purpose and a table of contents that refers to
further pages.
The start page should contain an anchor target .. _
above its
document title. This way you can link to a documents start page by:
See :ref:`TYPO3 Explained <t3coreapi:start>`.
If your manual has more pages then this start page it must contain a table of content
directive called .. toctree::
. The toctree
on the start page
defines which pages will be displayed in main navigation of the rendered
manual.
Optional: Documentation/Sitemap.rst
The Sitemap.
contains the sitemap of the documentation.
It is an almost empty file that is automatically filled during rendering.
:template: sitemap.html
.. include:: /Includes.rst.txt
=======
Sitemap
=======
.. The sitemap.html template will insert here the page tree automatically.
Settings: Documentation/guides.xml
This file contains the metadata and configuration for the rendering with the TYPO3 theme.
Read more about the Configuration of the rendering - guides.xml.
Hint
If you are migrating from the legacy Sphinx-based rendering and still have
a Documentation/
you can use an automatic migration
tool to migrate the settings.cfg into a guides.xml.
Example:
<?xml version="1.0" encoding="UTF-8"?>
<guides xmlns="https://www.phpdoc.org/guides" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.phpdoc.org/guides ../vendor/phpdocumentor/guides-cli/resources/schema/guides.xsd"
links-are-relative="true"
default-code-language="php"
>
<extension class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
project-home="https://extensions.typo3.org/extension/news/"
project-contact="https://typo3.slack.com/archives/C03TG7QJT"
project-repository="https://github.com/georgringer/news"
project-issues="https://github.com/georgringer/news/issues"
project-discussions="https://github.com/georgringer/news/discussions"
edit-on-github-branch="main"
edit-on-github="georgringer/news"
typo3-core-preferred="11.5"
interlink-shortcode="georgringer/news"
/>
<project title="News system"
version="local"
copyright="since 2010 by Georg Ringer & Contributors"
/>
<inventory id="t3extbasebook" url="https://docs.typo3.org/m/typo3/book-extbasefluid/10.4/en-us/"/>
</guides>
Full documentation in reST markdown
The TYPO3 documentation rendering pipeline supports rendering of CommonMark Markdown plus a few additional constructs like tables.
The main entry point for Markdown documentation must be
Documentation/
. Each folder in the Documentation
directory
should contain a file called Index.
if it contains Markdown at all.
<?xml version="1.0" encoding="UTF-8" ?>
<guides
xmlns="https://www.phpdoc.org/guides"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.phpdoc.org/guides vendor/phpdocumentor/guides-cli/resources/schema/guides.xsd"
input-format="md"
index-name="Index"
automatic-menu="true"
>
<project title="My Extension" />
<extension
class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
edit-on-github="myvendor/my-extension"
edit-on-github-branch="main"
interlink-shortcode="myvendor/my-extension"
project-home="https://github.com/myvendor/my-extension"
project-issues="https://github.com/myvendor/my-extension/issues"
project-repository="https://github.com/myvendor/my-extension"
typo3-core-preferred="stable"
/>
</guides>
Lines 6-8 are different from reST documents.
- line 6: Set the input format to Markdown (md)
- line 7-8: Automatically create a menu with all Markdown files and folders
found. Folders must have a
Index.
to be added.md
Single file documentation (README)
For third-party TYPO3 extensions that do not require extended documentation
you can also publish a README.
or README.
to
https://docs.typo3.org/
For this workflow the README
MUST be situated in the
extension's root folder. The :file:`Documentation/' folder can then be omitted.
For single file documentation, the README.
contains the entire
documentation.
This should also contain links to all aspects of the project to guide the reader to the next steps, for example
<badges>
=========
<project>
=========
<abstract>
Installation
============
..
Configuration
=============
..
Usage
======
..
.. csv-table::
:header: "", "URL"
**Repository:**, :samp:`https://{<vcs-repository>}`
**Read online:**, :samp:`https://docs.typo3.org/p/{<package-name>}/main/en-us/`
**TER:**, :samp:`https://extensions.typo3.org/extension/{<extension-key>}/`
<badges>
# <project>
<abstract>
| | URL |
|------------------|---------------------------------------------------------------|
| **Repository:** | https://<vcs-repository> |
| **Read online:** | https://docs.typo3.org/p/<package-name>/main/en-us/ |
| **TER:** | https://extensions.typo3.org/extension/<extension-key>/ |