tt_news: не указывается news_id при смене языка в одиночном представлении - PullRequest
1 голос
/ 09 февраля 2012

Я использую TYP 4.5.5, RealURL 1.11.2 и tt_news 3.0.1. Я хочу, чтобы пользователь мог переключать язык, и соответствующие новости показываются на языке пользователя. Все должны работать с RealURL.

При переключении языка идентификатор новости не предоставляется. Так что я должен явным образом представить идентификатор. Я нашел некоторые темы, которые показали мне, как это может работать, но мне это не удалось. Вот мой TS:

lib.tslangmenu = COA
lib.tslangmenu {
  10 = HTML
  10.value(
    <img src="fileadmin/templates/images/languages_en.png" width="48" height="121" alt="Languages" />
    <div id="LanguageContents">
  )

  20 = HMENU
  20.special = language
  20.wrap = <div id="AvailableLanguages">|</div>
  20.special.value = 0,1
  20.1 = GMENU
  20.1.NO {
    XY = 24,16
    5 = IMAGE
    5.file = fileadmin/templates/images/deutsch.png || fileadmin/templates/images/englisch.png
    additionalParams.cObject = COA
    additionalParams.cObject {
      5 = TEXT
      5.wrap = &L=1 

      10 = TEXT
      10.data = GPvar : tx_ttnews | backPid
      10.wrap = &tx_ttnews[backPid]=|
      10.required = 1

      20 = TEXT
      20.data = GPvar : tx_ttnews | tt_news
      20.wrap = &tx_tt_news[tt_news]=|
      20.required = 1

      30 = TEXT
      30.data = GPvar : cHash
      30.wrap = &cHash=|
      30.required = 1
    } 
  }

  30 = HTML
  30.value(
    <img class="languagebutton" src="fileadmin/templates/images/languages_en.png" width="48" height="121" alt="Languages" />
    </div>
  )

Согласно полученной информации, я должен использовать additionalParams и установить параметр с помощью GPVar. Но я всегда получаю сообщение no news_id given.

Вот мой Конфигурация RealURL:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array ( 
    '_DEFAULT' => array (
        'init' => array (
            'enableCHashCache' => '1',
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => '1',
            'enableUrlEncodeCache' => '1',
        ),
        'redirects' => array (
        ),
        'preVars' => array (
            '0' => array (
                'GETvar' => 'no_cache',
                'valueMap' => array (
                    'nc' => '1',
                ),
                'noMatch' => 'bypass'
            ),
            '1' => array (
                'GETvar' => 'L',
                'valueMap' => array (
                    'de' => '0',
                    'en' => '1',
                ),
                'valueDefault' => 'de',
                'noMatch' => 'bypass',
            ),
            '2' => array (
                'GETvar' => 'lang',
                'valueMap' => array (
                    'de' => 'de',
                    'en' => 'en',
                ),
                'noMatch' => 'bypass',
            ),
        ),
        'pagePath' => array (
            'type' => 'user',
            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
            'spaceCharacter' => '-',
            'languageGetVar' => 'L',
            'expireDays' => '7',
            'rootpage_id' => '1',
        ),
        'fixedPostVars' => array (
        ),
        'postVarSets' => array (
            '_DEFAULT' => array (
                'archive' => array (
                    '0' => array (
                        'GETvar' => 'tx_ttnews[year]',
                    ),
                    '1' => array (
                        'GETvar' => 'tx_ttnews[month]',
                        'valueMap' => array (
                            'january' => '01',
                            'february' => '02',
                            'march' => '03',
                            'april' => '04',
                            'may' => '05',
                            'june' => '06',
                            'july' => '07',
                            'august' => '08',
                            'september' => '09',
                            'october' => '10',
                            'november' => '11',
                            'december' => '12',
                        ),
                    ),
                ),
                'browse' => array (
                    '0' => array (
                        'GETvar' => 'tx_ttnews[pointer]',
                    ),
                ),
                'select_category' => array (
                    '0' => array (
                        'GETvar' => 'tx_ttnews[cat]',
                    ),
                ),
                'article' => array(
                    array(
                        'GETvar' => 'tx_ttnews[pointer]',
                        'valueMap' => array(),
                        'noMatch' => 'bypass',
                    ),
                    array(
                        'GETvar' => 'tx_ttnews[tt_news]',
                        'lookUpTable' => array(
                            'table' => 'tt_news',
                            'id_field' => 'uid',
                            'alias_field' => 'title',
                            'addWhereClause' => ' AND NOT deleted',
                            'useUniqueCache' => 1,
                            'useUniqueCache_conf' => array(
                                'strtolower' => 1,
                                'spaceCharacter' => '-',
                            ),
                            'languageGetVar' => 'L',
                            'languageExceptionUids' => '',
                            'languageField' => 'sys_language_uid',
                            'transOrigPointerField' => 'l18n_parent',
                            'autoUpdate' => 1,
                            'expireDays' => 180,
                        ),
                    ),
                    array (
                        'GETvar' => 'tx_ttnews[swords]',
                    ),
                ),
            ),
        ),

Решение:

Кажется, что добавление addQueryString делает свою работу. Вот мой последний переключатель языка:

lib.tslangmenu = COA
lib.tslangmenu {
  10 = HTML
  10.value(
    <img src="fileadmin/templates/images/languages.png" width="48" height="121" alt="Sprachen" />
    <div id="LanguageContents">
  )

  20 = HMENU
  20.special = language
  20.wrap = <div id="AvailableLanguages">|</div>
  20.special.value = 0,1
  20.addQueryString = 1
  20.1 = GMENU
  20.1.NO {
    XY = 24,16
    5 = IMAGE
    5.file = fileadmin/templates/images/deutsch.png || fileadmin/templates/images/englisch.png || fileadmin/templates/images/kroatisch.png 
  }

  20.1.ACT < 20.1.NO
  20.1.ACT = 1
  20.1.ACT.wrap =<span class="langhide">|</span> 
  20.1.ACT {
    XY = 24,16
    5 = IMAGE
    5.file = fileadmin/templates/images/deutsch.png || fileadmin/templates/images/englisch.png || fileadmin/templates/images/kroatisch.png 
  }

  20.1.CUR < 20.1.ACT
  20.1.CUR = 1
  20.1.CUR{
    XY = 24,16
    5 = IMAGE
    5.file = fileadmin/templates/images/deutsch.png || fileadmin/templates/images/englisch.png || fileadmin/templates/images/kroatisch.png 
  }

  30 = HTML
  30.value(
    <img class="languagebutton" src="fileadmin/templates/images/languages.png" width="48" height="121" alt="Sprachen" />
    </div>
  )
}

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

Посмотрите на следующие свойства вашего меню:

protectLvar

addQueryString <--- keeps the params to the string when switching languages.

TSREF - ваш друг: http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.6.0/view/1/7/#id2635691

1 голос
/ 16 февраля 2012

Ваш TypoScript имеет некоторые ошибки:

20.wrap = &tx_tt_news[tt_news]=|

Снимите подчеркивание:

20.wrap = &tx_ttnews[tt_news]=|

И не устанавливайте cHash вручную!30.wrap = &cHash=| Это предотвратит кэширование вашей страницы, потому что cHash будет неправильным!

...