Zum Inhalt springen

Problem: RealURL und Mehrsprachigkeit bei tt_news

Erstellt am 14. Januar 2009 · 8 Antworten · letzte Antwort am 25. Juni 2014

Tags: RealURL, tt_news, Frage

fuzz ·

Hallo allerseits,

habe ein Problem mit tt_news und realurl...
Die News werden in deutsch ganz normal angezeigt auch mit realurl. Sobald ich aber in der SingleView bin und dann die Sprache umschalte auf der Seite, sagt mir tt_news "Keine News ID übergeben" da beim umschalten die Parameter (die realurl in schön anzeigt) nicht mehr übergeben sondern es wird lediglich auf die single seite weitergeleitet.

Das Menü für die Sprachumschaltung ist normal ein HMENU mit special = language...

Anbei die Real URL konfiguration...
danke schonmal...

<?php

/* TypoScript (Setup):

	# RealURL aktivieren
	config.simulateStaticDocuments = 0
	config.baseURL                 = http://www.example.com/
	config.tx_realurl_enable       = 1
	config.prefixLocalAnchors      = all

*/

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']= array(
	'_DEFAULT' => array(
	
		#
		## Grundkonfiguration
		#
		'init' =>  array(
			'enableCHashCache'     => true,
			'appendMissingSlash'   => 'ifNotFile',
			'adminJumpToBackend'   => true,
			'enableUrlDecodeCache' => true,
			'enableUrlEncodeCache' => true,
			'emptyUrlReturnValue'  => '/',
		),
		
		#
		## Paramater die grundsaetzlich vor allem anderen kommen (auch vorm Seitenpfad)
		#
		'preVars' => array(
		
			# Mehrsprachigkeit
			array(
				'GETvar' => 'L',
				'valueMap' => array(
					'de' => 0,
					'en' => 1,
					'es' => 4,
				),
				'noMatch' => 'bypass',
				'valueDefault' => 'de'
			),
			
			# Cache deaktivieren (per nc oder no_cache)
			array(
				'GETvar' => 'no_cache',
				'valueMap' => array(
					'no_cache' => 1,
					'nc' => 1,
				),
				'noMatch' => 'bypass',
			),

		),
		
		#
		## Rewriting der eigentlichen Seiten
		#
		'pagePath' => array(
			'type' => 'user',
			'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
			'spaceCharacter' => '-',
			'languageGetVar' => 'L',
			'expireDays' => 1, # Optional: Cache Expire
			'disablePathCache' => 1,
			'rootpage_id' => 1, # Optional: If Output is empty or on Multi Domain Installations
			#'segTitleFieldList' => 'alias,tx_realurl_pathsegment,nav_title,title', # Reihenfolge der bevorzugten Seitentitel fuer Pfad erstellung
		),
		
		#
		## Parameter fuer fixe Elemente (feste Reihenfolge von Werten)
		## _DEFAULT = egal welche Seite sonst UID der Seite
		#
		'fixedPostVars' => array(
			/*'_DEFAULT' => array(
				
				array(
					'GETvar' => 'tx_ttnews[year]',
				),
				
				array(
					'GETvar' => 'tx_ttnews[month]',
					'valueMap' => array(
						'januar'    => '01',
						'februar'   => '02',
						'maerz'     => '03',
						'april'     => '04',
						'mai'       => '05',
						'juni'      => '06',
						'juli'      => '07',
						'august'    => '08',
						'september' => '09',
						'oktober'   => '10',
						'november'  => '11',
						'dezember'  => '12',
					),
				),
				
				array(
					'GETvar' => 'tx_ttnews[day]',
				),
				
				array(
					'GETvar' => 'tx_ttnews[tt_news]',
					'lookUpTable' => array(
						'table' => 'tt_news',
						'id_field' => 'uid',
						'alias_field' => 'title',
						'maxLength' => 20,
						'addWhereClause' => ' AND NOT deleted',
						'useUniqueCache' => 1,
						'useUniqueCache_conf' => array(
							'strtolower' => 1,
							'spaceCharacter' => '-',
						),
					),
				),
				
			),*/
		),
		
		#
		## Parameter fuer variable Werte (anhang von Werterkennung)
		## _DEFAULT = egal welche Seite sonst UID der Seite
		#
		'postVarSets' => array(
			'_DEFAULT' => array(
				
				#
				## tt_news ID (Detailansicht, BEISPIEL)
				#
				'eintrag' => array(
					array(
						'GETvar' => 'tx_ttnews[year]'
					),
					
					array(
						'GETvar' => 'tx_ttnews[month]',
						'valueMap' => array(
							'januar'    => '01',
							'februar'   => '02',
							'maerz'     => '03',
							'april'     => '04',
							'mai'       => '05',
							'juni'      => '06',
							'juli'      => '07',
							'august'    => '08',
							'september' => '09',
							'oktober'   => '10',
							'november'  => '11',
							'dezember'  => '12'
						)
					),
					
					array(
						'GETvar' => 'tx_ttnews[day]'
					),
					
					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' => 7,*/
						)
					),
				), # END: news

			), # END: _DEFAULT
		),
		
		#
		## Rewriting des URL Endes (z.B. Dateiendung oder Spezialseiten)
		#
		'fileName' => array(
			'defaultToHTMLsuffixOnPrev' => 1,
			#'defaultToHTMLsuffixOnPrev' => 0,
			'acceptHTMLsuffix' => 0,
			
			'index' => array(
				#'sitemap.xml' => array(
				#	'keyValues' => array(
				#		'type' => 33,
				#	),
				#),
				
				#'print.html' => array(
				#	'keyValues' => array(
				#		'type' => 99,
				#	),
				#),
			),
		),

	),
);

?>
just2b ·

Hallo,

dein language-switcher ist schuld dran, nimm einen vernünftigen, der die parameter behält

georg

fuzz ·

was könntest du mir denn empfehlen?
im augenblick sieht meiner so aus...

lib.lang = HMENU
lib.lang {
  special = language
  special.value = 0,1,4
  special.normalWhenNoLanguage = 0
  1 = GMENU
  1 {
    noBlur = 0
    # Normal link to language that exists:
    NO.XY = [5.w], [5.h]
    NO.backColor = white
    NO.5 = IMAGE
    NO.5.file = fileadmin/templates/img/flag-de-on.gif || fileadmin/templates/img/flag-en-on.gif || fileadmin/templates/img/flag-es-on.gif 
    # Current language selected:
    ACT < .NO
    ACT = 1
    ACT.noLink = 1
    # Language that is NOT available:
    USERDEF1 < .NO
    USERDEF1 = 1
    USERDEF1.5.file = fileadmin/templates/img/flag-de-off.gif || fileadmin/templates/img/flag-en-off.gif || fileadmin/templates/img/flag-es-off.gif
    #USERDEF1.linkWrap = <span style="display:none;"> | </span>
    USERDEF1.noLink = 1
  }
}
opaque ·

Hallo

Ich habe das selbe Problem.
Ich verwende auch keine Extension, da ich es mit der "sr_language_menu" Extension nicht so hinbekommen habe wie ich wollte. Bei mir sieht das TS derzeit so aus:

#[Sprachmenü START]
lib.langMenu = HMENU
lib.langMenu {
	special = language
	special.value = 0,1,2
	special.normalWhenNoLanguage = 0
	1 = TMENU
	1 {
		# Normal link to language that exists:
		NO = 1
		NO.linkWrap = <li>|</li>
		NO.stdWrap.setCurrent = English || Deutsch || &#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;
		NO.stdWrap.current = 1
	}
}

Es sollte ein reines Textmenü sein wo alle Sprachen als Text aufgeliestet werden.

lg Walter

fuzz ·

Ich mag nicht zu viele Extensions und versuche es lieber über TypoScript zu lösen. Hier die Lösung:

lib.lang = HMENU
lib.lang {
  special = language
  special.value = 0,1,4
  special.normalWhenNoLanguage = 0
  1 = GMENU
  1 {
    noBlur = 0

    # Normal link to language that exists:
    NO.XY = [5.w], [5.h]
    NO.backColor = white
    NO.5 = IMAGE
    NO.5.file = fileadmin/templates/img/flag-de-on.gif || fileadmin/templates/img/flag-en-on.gif || fileadmin/templates/img/flag-es-on.gif 
    NO.noLink = 1
    NO.allStdWrap.typolink {
        parameter.data = page:uid
        additionalParams = &L=0 || &L=1 || &L=4
        addQueryString = 1
        addQueryString.exclude = id
        addQueryString.method = GET
    }

    # Current language selected:
    ACT < .NO
    ACT = 1
    ACT.noLink = 1

    # Language that is NOT available:
    USERDEF1 < .NO
    USERDEF1 = 1
    USERDEF1.5.file = fileadmin/templates/img/flag-de-off.gif || fileadmin/templates/img/flag-en-off.gif || fileadmin/templates/img/flag-es-off.gif
    #USERDEF1.linkWrap = <span style="display:none;"> | </span>
    USERDEF1.noLink = 1
  }
}

wichtig ist der teil mit NO.allStdWrap.typolink {...} der sorgt dafür dass das language menu die parameter vernünftig überträgt. funktioniert auch prächtig mit realurl... das ganze geht auch in kurz wenn man das nur bei der tt_news details seite einbinden mag...

lib.lang.1.NO.allStdWrap.typolink {
    parameter.data = page:uid
    additionalParams = &L=0 || &L=1 || &L=4
    addQueryString = 1
    addQueryString.exclude = id
    addQueryString.method = GET
}

[/b]

opaque ·

Hallo fuzz

danke für den TIP nun funktioniert es bei mir auch.
Das TS für das Sprachmenü als Text falls es jemand einmal brauchen sollte:

## spracheinstellungen start
## SprachVariable L initialisieren
config.uniqueLinkVars = 1
config.linkVars = L
config.sys_language_mode = content_fallback
config.sys_language_overlay = 1

config.sys_language_uid = 0
config.language = en
config.locale_all = en_EN.UTF-8

mod.SHARED {
 defaultLanguageFlag=gb.gif
 defaultLanguageLabel=English
}

# Standardsprache UID 0 -> English
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = en
config.locale_all = en_EN.UTF-8
plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 0
[end]

# Sprache UID 1 -> Deutsch
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = de
config.locale_all = de_DE.UTF-8
plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 1
[end]

# Sprache UID 2 -> Russisch
[globalVar = GP:L = 2]
config.sys_language_uid = 2
config.language = ru
config.locale_all = ru_RU.UTF-8
plugin.tx_indexedsearch._DEFAULT_PI_VARS.lang = 2
[end]
## spracheinstellungen ende


#[Sprachmenü START]
lib.langMenu = HMENU
lib.langMenu {
	special = language
	special.value = 0,1,2
	special.normalWhenNoLanguage = 0
	1 = TMENU
	1 {
		NO = 1
		NO.linkWrap = <li>|</li>
		NO.stdWrap.setCurrent = English || Deutsch || &#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;
		NO.stdWrap.current = 1
        	NO.stdWrap.typolink {
    			parameter.data = page:uid
    			additionalParams = &L=0 || &L=1 || &L=2
    			addQueryString = 1
    			addQueryString.exclude = id
    			addQueryString.method = GET
		}

        }
}

lg opaque

Nowi ·

Mahlzeit!

Auch wenn das hier schon etwas älter ist. Hatte dasselbe Problem heute mit tx_news. Es gab eine übersetzte Seite mit dem Single-News Pluign und beim Sprache wechseln in der Single View gab es eine leere Seite. Der Sprachumschalter war ein ganz normales HMENU mit special=language.

Dass die Parameter nicht mit übergeben werden ist wohl korrekt und die oben aufgezeigte Lösung auch. Aber es geht auch einfacher.
Man muss TYPO3 nur sagen, dass er die Newsparameter mit übergeben soll. Dann macht das Menü das von Haus aus.

config.linkVars := addToList(tx_news_pi1)

Keine Extension nötig und auch das Menü muss nicht verändert werden.

Ups sorry. Geht ja doch nicht. Der übergibt ja die Parameter dann immer wieder weiter.
Also dann doch Menü umbauen ;-).

lilalili ·

Hallo Nowi,

soll man die Zeile "config.linkVars := addToList(tx_news_pi1)" bei TS-Grundeinstellungen einfügen?

config {

#LANGUAGE
sys_language_uid = 0 #standard language
language = de
locale_all = de_DE.UTF8 #for Uhrzeit
linkVars := addToList(tx_news_pi1)
linkVars = L

uniqueLinkVars = 1
sys_language_overlay = 1 #Show page even if no translation exists

# REAL URL
simulateStaticDocuments = 0
tx_realurl_enable = 1
baseURL = http://www.mydomain.com
}