
Documentation
TYPO3 Extension “Hreflang Multisite”
Version 2.3.1 (2026-09-30)
All configuration is PageTsConfig under plugin.tx_hreflang_multisite. The defaults below ship with the site set b13/hreflang-multisite; without that set included, only what you configure yourself applies.
Put it in a file and include it on every root page, so the root pages of one group cannot drift apart.
Settings
| Setting | Default | Purpose |
|---|---|---|
rootpage-sets | (none) | Which root pages may be linked together. Nothing works without this |
excludeDoktypes | 3,4,6,7,199,254,255 | Page types that cannot take part in a set |
storagePid | the current page | Where page set records are stored |
debug | 0 | Shows the language configuration check in the page module |
The Complete Block
# Page types that cannot take part in a page set
plugin.tx_hreflang_multisite.excludeDoktypes = 3,4,6,7,199,254,255
# Groups of root pages that may be linked together.
# A root page in no group cannot be linked at all.
plugin.tx_hreflang_multisite.rootpage-sets {
10 = 1,13
20 = 11,31
}
# Show the language configuration check in the page module
plugin.tx_hreflang_multisite.debug = 1
# Where to store the page set records. Defaults to the current page.
plugin.tx_hreflang_multisite.storagePid = 98
rootpage-sets
Each key defines one group of root pages that editors may link together. The key itself is only an identifier. A root page listed in several groups resolves to the first group that contains it.
A root page that appears in no group cannot be linked, and the page set field is hidden on its pages entirely.
Without at least one group, no set can be created anywhere.
Groups are also how you keep unrelated trees apart. In an installation that holds the corporate sites for several regions and a set of campaign or product landing pages, putting all of them in one group means an editor can link a campaign page to a corporate one. Two groups make that impossible rather than merely discouraged—which is the point, because nothing later in the chain will flag it. The tags will be generated, they will be reciprocal, and they will tell search engines that a campaign page is the German equivalent of a product overview.

excludeDoktypes
plugin.tx_hreflang_multisite.excludeDoktypes = 3,4,6,7,199,254,255
The default covers link to external URL (3), shortcut (4), backend user section (6), mount point (7), spacer (199), folder (254), and recycler (255).
The setting has three effects, not one:
- Excluded pages do not appear in the selection wizard
- On a page whose doktype is excluded, the page set field is not rendered at all
- In the overview module those pages show
N/Ainstead of a hreflang list
Existing database relations are not removed by adding a doktype here.
storagePid
plugin.tx_hreflang_multisite.storagePid = 98
Where page set records are stored. If unset, records are stored on the page being edited.
The records are hidden from the list module (hideTable), so this setting affects where they live, not whether editors see them.
debug
plugin.tx_hreflang_multisite.debug = 1
Shows the language configuration check in the page module. Off by default. It is the only place in the backend where duplicate hreflang codes across a root page group become visible—see Verifying a Setup for what it does and does not check.

Without the Site Set
If your site does not use site sets, include the shipped PageTsConfig manually:
@import 'EXT:hreflang_multisite/Configuration/TSConfig/PageTsConfig.typoscript'
It is not loaded automatically. Alternatively, set the values yourself using the complete block above.
Configuration