Usage

Editors can connect the pages from the different country branches in the page properties.

Example

Pagetree

  • 61 International

    • 71 Page A

      • sys_language_uid 0 => english

    • 81 Page B

      • sys_language_uid 0 => english

    • 91 Page C

      • sys_language_uid 0 => english

    • 101 Page D

      • sys_language_uid 0 => english

      • sys_language_uid 1 => german

  • 111 Deutschland

    • 121 Seite A

      • sys_language_uid 0 => german

    • 131 Seite B

      • sys_language_uid 0 => german

    • 141 Seite C

      • sys_language_uid 0 => german

      • sys_language_uid 11 => english

    • 151 Seite D

      • sys_language_uid 0 => german

  • 161 Schweiz

    • 201 Seite A

      • sys_language_uid 0 => german

      • sys_language_uid 21 => italian

      • sys_language_uid 31 => french

    • 191 Seite B

      • sys_language_uid 0 => german

      • sys_language_uid 21 => italian

    • 181 Seite C

      • sys_language_uid 0 => german

      • sys_language_uid 31 => french

    • 171 Seite D

      • sys_language_uid 0 => german

  • 211 Italia

    • 251 Pagina A

      • sys_language_uid 0 => italian

    • 241 Pagina B

      • sys_language_uid 0 => italian

    • 231 Pagina C

      • sys_language_uid 0 => italian

    • 221 Pagina D

      • sys_language_uid 0 => italian

      • sys_language_uid 1 => german

Configuration

$languageMapping = array(
        1 => 'de', //german
        11 => 'en', //english
        21 => 'it', //italian
        31 => 'fr', //french
);
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['bgm_hreflang']['countryMapping'] = array(
        //Example
        61 => array( //International
                'countryCode' => 'en',
                'languageMapping' => $languageMapping + array(0 => 'en'),
        ),
        111 => array( //Germany and Austria
                'countryCode' => 'de',
                'languageMapping' => $languageMapping + array(0 => 'de'),
                'additionalCountries' => array('at'),
        ),
        161 => array( //Switzerland
                'countryCode' => 'ch',
                'languageMapping' => $languageMapping + array(0 => 'de'),
        ),
        211 => array( //Italy
                'countryCode' => 'it',
                'languageMapping' => $languageMapping + array(0 => 'it'),
        ),
);
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['bgm_hreflang']['defaultCountryId'] = 61;

Output

1) The editor connected all A pages. So we have these hreflang tags on the A pages:

<link rel="alternate" hreflang="x-default" href="http://development.bgm.projects.localhost/index.php?id=71" />
<link rel="alternate" hreflang="de-de" href="http://development.bgm.projects.localhost/index.php?id=121" />
<link rel="alternate" hreflang="de-at" href="http://development.bgm.projects.localhost/index.php?id=121" />
<link rel="alternate" hreflang="de-ch" href="http://development.bgm.projects.localhost/index.php?id=201" />
<link rel="alternate" hreflang="it-ch" href="http://development.bgm.projects.localhost/index.php?id=201&L=21" />
<link rel="alternate" hreflang="fr-ch" href="http://development.bgm.projects.localhost/index.php?id=201&L=31" />
<link rel="alternate" hreflang="it-it" href="http://development.bgm.projects.localhost/index.php?id=251" />

2) The editor connected the B pages 81, 131 and 241 (he has forgotten to connect the swiss B page 191 ;-)). So we have these hreflang tags on the B pages 81, 131 and 241:

<link rel="alternate" hreflang="x-default" href="http://development.bgm.projects.localhost/index.php?id=81" />
<link rel="alternate" hreflang="de-de" href="http://development.bgm.projects.localhost/index.php?id=131" />
<link rel="alternate" hreflang="de-at" href="http://development.bgm.projects.localhost/index.php?id=131" />
<link rel="alternate" hreflang="it-it" href="http://development.bgm.projects.localhost/index.php?id=241" />

And we have these tags on the swiss B page 191:

<link rel="alternate" hreflang="de-ch" href="http://development.bgm.projects.localhost/index.php?id=191" />
<link rel="alternate" hreflang="it-ch" href="http://development.bgm.projects.localhost/index.php?id=191&L=21" />

3) The international C page 91 is connected to the german C page 141. And the german C page 141 is connected to the italian C page 231.

<link rel="alternate" hreflang="de-de" href="http://development.bgm.projects.localhost/index.php?id=141" />
<link rel="alternate" hreflang="de-at" href="http://development.bgm.projects.localhost/index.php?id=141" />
<link rel="alternate" hreflang="it-it" href="http://development.bgm.projects.localhost/index.php?id=231" />
<link rel="alternate" hreflang="x-default" href="http://development.bgm.projects.localhost/index.php?id=91" />

4) The swiss C page 181 is not connected to any other page and has a translation.

<link rel="alternate" hreflang="de-ch" href="http://development.bgm.projects.localhost/index.php?id=181" />
<link rel="alternate" hreflang="fr-ch" href="http://development.bgm.projects.localhost/index.php?id=181&L=31" />

5) The international D page 101 is not connected to another page and has a translation.

<link rel="alternate" hreflang="x-default" href="http://development.bgm.projects.localhost/index.php?id=101" />
<link rel="alternate" hreflang="de" href="http://development.bgm.projects.localhost/index.php?id=101&L=1" />

6) The german D page 151 is not connected to any other page and has no translation, but should be used for Austria, too.

<link rel="alternate" hreflang="de-de" href="http://development.bgm.projects.localhost/index.php?id=151" />
<link rel="alternate" hreflang="de-at" href="http://development.bgm.projects.localhost/index.php?id=151" />