Skip directly to page content
b13 GmbH

Hauptstätter Str. 59
70178 Stuttgart
Germany
+49 (0) 711 460 589 70 [email protected]
Graphic featuring a stylized link icon surrounded by overlapping shapes, set against a blue background with a gradient.

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.

The page TSconfig of a TYPO3 page declaring two rootpage-sets groups that share no root page: the three market sites in one, the two campaign sites in the other, which is what keeps the two from being offered as translations of each other.

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/A instead 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.

The Hreflang Multisite configuration check in the TYPO3 page module confirming in one line that the configuration of this page tree is valid.

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.