DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

Configuration

The configuration is done in the AdditionalConfiguration.php or your Theme-Extension’s ext_localconf.php:

$languageMapping = array(

        //"sys_language_uid" and "isolanguagecode" have to be unique in the array $languageMapping!
        sys_language_uid => isolanguagecode,

        //Example
        1 => 'de', //german
        11 => 'en', //english
        21 => 'it', //italian
        31 => 'fr', //french
);

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['bgm_hreflang']['countryMapping'] = array(

        //"pageid" is the rootpage of a country branch. It has to be unique in the array $countryMapping!
        pageid => array(

                //"isocountrycode" has to be unique in the array $countryMapping!
                'countryCode' => isocountrycode,

                //'$languageMapping + array(0 => isolanguagecode)' can be assigned more than once with the same "isolanguagecode" in the array countryMapping.
                'languageMapping' => $languageMapping + array(0 => isolanguagecode),

                //This optional 'additionalGetParameters' can be assigned to every language of the current country
                'additionalGetParameters' => array(
                        //"sys_language_uid" has to be unique in the array $additionalGetParameters!
                        sys_language_uid => isolanguagecode,

                        //Example
                        1 => '&foo=bar&john=doe', //append &foo=bar&john=doe to the link to sys_language 1 in this country
                ),

                //This optional 'domainName' can be assigned, if you would like to prepend a certain domain name before your urls.
                //It overrides an automatically assigned domain from the typolink function.
                'domainName' => 'https://www.domain.tld',

                //This is optional. You need this, if you want the Germany country branch to be used as Austrian country branch, too.
                'additionalCountries' => array(isocountrycode, isocountrycode, ...),
        ),

        //Example
        61 => array( //International
                'countryCode' => 'en',
                'languageMapping' => $languageMapping + array(0 => 'en'),
                'additionalGetParameters' => array(
                        1 => '&foo=bar&john=doe',
                ),
                'domainName' => 'https://www.my-domain.com',
        ),
        111 => array( //Germany and Austria
                'countryCode' => 'de',
                'languageMapping' => $languageMapping + array(0 => 'de'),
                'additionalGetParameters' => array(
                        0 => '&foo=0',
                        1 => '&foo=1',
                        31 => '&foo=31',
                ),
                'additionalCountries' => array('at'),
                'domainName' => 'https://www.my-domain.de',
        ),
        161 => array( //Switzerland
                'countryCode' => 'ch',
                'languageMapping' => $languageMapping + array(0 => 'de'),
                'domainName' => 'https://www.my-domain.it',
        ),
        211 => array( //Italy
                'countryCode' => 'it',
                'languageMapping' => $languageMapping + array(0 => 'it'),
        ),
);

//If $_GET['L']==0, pages in this tree are rendered with hreflang="x-default", else only the isolanguagecode is used (without the isocountrycode)
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['bgm_hreflang']['defaultCountryId'] = 61;

And you need some TypoScript:

page.headerData.30 = USER
page.headerData.30 {
    userFunc = BGM\BgmHreflang\Utility\HreflangTags->renderFrontendList
}