2013-11-26 80 views
2

我使用以下TypoScript來生成語言切換器。它基本上是從現有的網站副本,一切工作正常:TYPO3語言切換器不使用正確的RealURL路徑

lib.langMenu = HMENU 
lib.langMenu { 
    special = language 
    addQueryString = 1 
    special.value = 0,1 
    special.normalWhenNoLanguage = 0 
    1 = TMENU 
    1 { 
    noBlur = 1 
    NO = 1 
    NO { 
     allWrap = <li>|</li> 
     stdWrap2.noTrimWrap = | | | 
     stdWrap.override = Deutsch || English 
     ATagParams = class="lang-switcher-de" || class="lang-switcher-en" 
    } 

    ACT < .NO 
    ACT = 1 
    ACT.allWrap = <li class="active">|</li> 

    wrap = <ul class="pull-right language"><li class="hidden-xs">Language:</li>|</ul> 
    } 
} 

現在,我用下面的RealURL設置:

$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
    '_DEFAULT' => array(
    'init' => array(
     'enableCHashCache' => 1, 
     'enableUrlDecodeCache' => 1, 
     'enableUrlEncodeCache' => 1, 
    ), 
    'preVars' => array (
     0 => array (
     'GETvar' => 'L', 
     'valueMap' => array (
      'en' => '1', 
     ), 
     'noMatch' => 'bypass', 
    ), 
    ), 
    'pagePath' => array(
     'type' => 'user', 
     'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 
    ), 
    ) 
); 

的問題是,說我有以下幾頁,用自己德語和英語路徑:

  • PRODUKTE /產品
    • 機生產線ktuebersicht/product_overview

當我在/produkte/produktuebersicht,語言切換器生成一個鏈接到/en/produkte/produktuebersicht而不是/en/products/product_overview。每個頁面上都會出現此問題。

它始終採用錯誤(讀取,當前)語言的路徑。我檢查的ID來路徑映射,它看起來好像沒什麼問題:

的編碼緩存有這些條目 - 但即使當我刪除他們的問題仍然存在:

奇怪的是菜單本身生成正確。那麼我怎麼才能讓它鏈接到語言切換器中的正確RealURL?

回答

3

您的RealURL pagePath部分應包含languageGetVar設置。

從RealURL文檔:

定義哪個GET變量在定義語言ID的URL;如果設置路徑將考慮該語言值並嘗試生成本地化版本中的路徑。

pagePath部分應該是這樣的:

'pagePath' => array(
    'type' => 'user', 
    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 
    'languageGetVar' => 'L' 
),