TYPO3 Documentation
How to Document TYPO3
Options
Give feedback View source View as Markdown How to edit Edit on GitHub

How to Document TYPO3

BASICS

  • Basic principles
  • ReST Cheat Sheet
  • Markdown Cheat Sheet

REFERENCE

  • reStructuredText
    • Code blocks and code structure
      • Code blocks
      • Configuration values (confval)
      • Inline code
      • PHP domain
      • Site settings
    • Directives
      • Accordion
      • Admonitions: tip, note, warning, see also, etc.
      • Cards
      • Comments
      • Special characters
      • Tables
      • Tabs
      • Versions
      • ViewHelper
      • Embed YouTube videos
    • Figures and diagrams
      • Images
      • Zoom and lightbox
      • Float and alignment
      • PlantUML diagrams
    • Inline Markup
      • Bold, Italic etc.
      • Text Roles
    • Links
      • Anchors
      • API links
      • Composer / Extensions
      • Core source
      • Documentation links
      • example.org
      • External URLs
    • Lists
      • Styled numbered sections (bignums)
      • Bullet lists / unordered lists
      • Definition lists
      • Directory tree
      • List items as buttons
      • Numbered lists
    • Menus and headers
      • Headlines
      • Main menu
      • Content menu
      • Including files
      • Navigation title
      • Orphans
      • Sidebar
  • CGL for reST files
  • File structure
  • guides.xml
  • Rendering container
  • Screenshot container
  • Rendered artifacts

HOWTOS

  • Edit Locally
  • Edit on GitHub
  • Writing with AI
  • Contribute
    • Help
  • Migrate
    • Markdown to reST
  • Render
    • Automatic re-rendering (WYSIWYG)
  • Document extensions
    • Webhook
    • Reregister versions
    • FAQ
    • Contribute to system extensions
    • Contribute to third-party extensions

ADVANCED

  • Advanced
    • Coding guidelines for reST files
    • Commit messages
    • Spelling
    • Formats (reST, Markdown)
    • Spelling, terms and glossary
    • Guidelines for creating images
    • How to add translations
    • Licenses
    • Redirects
    • Policy for making and reviewing contributions

MAINTAINERS

  • For maintainers
    • Backport changes
    • Changelog
    • Code snippet generation
    • Fluid ViewHelper reference generation
    • New major Core version
    • Tools of the Documentation Team
  • Sitemap

Options

Give feedback View source View as Markdown How to edit Edit on GitHub
  1. How to Document
  2. reStructuredText
  3. Links
  4. Anchors
Give feedback Markdown Edit on GitHub

Link anchors 

Link anchors assign a unique name to a headline and its section. These anchors can be used in internal references and references between TYPO3 manuals.

As long as the anchor of a section stays the same the section can be moved to another page or the headline can be renamed and references will still go to the correct target.

You can define a link anchor with a label for a section.

In the following example, the link target inline-columns is assigned to the section with the title "Inline columns".

Place the link anchor definition directly before the section header:

..  _inline-columns:

Inline columns
==============
Copied!

Link anchors should contain alphanumeric signs plus hyphen: ([a-z][0-9][-]). All other signs are automatically transformed by the symfony \Symfony\Component\String\Slugger\AsciiSlugger .

Naming a new anchor 

An anchor must be unique in the whole manual. Short anchors such as with-make or why-it-exists belong to the first section that uses them, and the next section with the same headline needs another name. Start a new anchor with the anchor of the section that the headline is in. This makes the anchor unique and shows where the section belongs.

  1. Take the anchor of the section that contains the headline, for example migration. The title of a page has no such section, so its anchor starts with the next step.
  2. Duplicate the headline.
  3. Transform it to lowercase.
  4. Replace all blanks with a hyphen -.
  5. Remove all non-alphanumeric characters or replace them by a hyphen -.
  6. Join both parts with a hyphen -.
  7. Add .. _ at the beginning and : at the end.
The anchor of a section starts with the anchor of its page
..  _migration:

=========
Migration
=========

..  _migration-with-make:

With make
=========
Copied!

A section further down takes the anchor of its direct parent section, so the anchor grows with the nesting. If an anchor gets long, leave out words that the prefix already says, or that add little to the name.

Existing anchors are not renamed to follow this rule, see Keeping anchors working.

Keeping anchors working 

An anchor is a promise: once a page containing it has reached main, the anchor must keep working, even after the heading it was on is gone. Never just delete an anchor. What to do instead depends on why the content went away:

  • Restructured, but the concept still exists somewhere — a subchapter or example merged into, or moved under, a different heading: move the anchor to the heading that now covers that content, even if it is now less specific (for example the parent chapter).
  • The whole concept was removed — a breaking change, or it is no longer the recommended approach: move the anchor into a Documentation/404.rst page instead (create it if it does not exist yet), and add a short entry explaining what happened. See redirecting renamed or deleted pages for the full pattern, including a real example.

This applies everywhere, not just to official TYPO3 documentation repositories — anyone linking to your docs, from a bookmark, a search result, or another page, is relying on the anchor still being there.

Also watch for malformed anchor lines (the wrong number of leading dots, a missing trailing colon) — they silently fail to work as a permalink, and can render as broken, stray text on the page instead of an invisible link target.

Changing only the spelling of an anchor 

The rendering normalizes every anchor: it changes all letters to lowercase, and replaces every run of characters other than a-z and 0-9 with a hyphen. Two spellings with the same normalized form are one anchor. For example, Setup_Docker and setup-docker are the same anchor.

  • The normalized form stays the same, as in Setup_Docker changed to setup-docker: rewrite the anchor and do not keep the old spelling. Two labels that normalize to the same anchor are still one anchor, and the rendering does not warn about the second one.
  • The normalized form changes, as in ClassIndexJson changed to class-index-json: this is a new anchor. ClassIndexJson normalizes to classindexjson, without hyphens. Keep the old label above the heading, beside the new one.

To check, normalize both spellings. If the results are equal, it is one anchor.

  • Previous
  • Next
Reference to the headline

Copy and freely share the link

This link target has no permanent anchor assigned. You can make a pull request on GitHub to suggest an anchor. The link below can be used, but is prone to change if the page gets moved.

Copy this link into your TYPO3 manual.

  • Home
  • Contact
  • Issues
  • Repository

Last rendered: Oct 11, 2026 13:49

© since 2017 by the TYPO3 contributors
  • Legal Notice
  • Privacy Policy