[TYPO3-german] Mehrsprachigkeit getRecordOverlay

Christian Endlich c.endlich at merguet.de
Tue Jul 5 13:20:40 CEST 2011


Hallo in die Runde,

arbeite seit gestern an einer mehrsprachigen Extension mit Datensätzen die
mir ein FE-Plugin ausgibt. Ich habe einen ProductSlider realisiert und gebe
dort in der jeweils aktuellen Sprache die ausgewählten Datensätze direkt als
Detailseite mit aus.

Jedoch sorgt mich folgende Problematik die ich nun seit fast 24h nicht lösen
konnte:

Rufe das FE-Plugin alla
„/index.php?id=468&L=0&tx_onemanagement_pi3[productUid]=19“ auf wird mir das
richtige Produkt in seiner Detailansicht/deutsch dargestellt.
Klicke ich nun auf den Link des Sprachumschalters
(„/index.php?id=468&L=1&tx_onemanagement_pi3[productUid]=19“) wird mir auch
perfekt die englische Übersetzung angezeigt.

Auch die Links im Produktslider aktualisieren sich
(„/index.php?id=468&L=1&tx_onemanagement_pi3[productUid]=44“). Soweit so
gut. UID44 ist der übersetzte Datensatz von UID19. Klick auf diesen Link
funktioniert natürlich auch wunderbar.
Klicke ich nun jedoch wieder auf den Sprachumschalter
(„/index.php?id=468&L=0&tx_onemanagement_pi3[productUid]=44“) bleibt die
Detailansicht leer.

Das $GLOBALS['TSFE']->sys_page->getRecordOverlay kann zur UID44 den
deutschen Datensatz mit der UID19 nicht finden und gibt somit einfach nix
aus! Im SprachumschalterSkript merke ich mir die aktuelle UID des Produktes
und baue mir einen neuen Link. Jedoch wenn ich auf nem englischen Datensatz
bin merkt er sich natürlich die von deutsch aus per getRecordOverlay
ermittelte UID und findet dazu aber nicht den passenden deutschen Datensatz.

In der PluginKlasse baue ich die Links im Produktslider per:

$parameters = array("tx_onemanagement_pi3[productUid]"=>$productUid, "L" =>
$GLOBALS['TSFE']->sys_language_uid );
......$this->pi_linkTP($product->getName(), $parameters, 1)......


Bin wie hier vorgegangen:
http://www.felixnagel.com/blog/artikel/2010/06/24/mehrsprachige-typo3-extens
ions-getrecordoverlay-richtig-einsetzen/


Der Sprachumschalter wird per PHP-TS eingebunden:
<?PHP
function getRealUrl($uid,$languid,$newsuid,$productid) {
		$varArray = array(	"L" => $languid);	
		if((int)$newsuid > 0){
			$varArray["tx_ttnews[tt_news]"] = $newsuid;
		};
		if((int)$productid > 0){
			$varArray["tx_onemanagement_pi3[productUid]"] =
$productid;
		};
		$cObj	=	t3lib_div::makeInstance('tslib_cObj');
		$url	=   $cObj->getTypoLink_URL($uid,$varArray);
		return $url;
} 
		
if (!is_object($this)) die ('Error: No parent object present.');
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*',
'pages_language_overlay','pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE'
]->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
$langArr = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))	{
	$langArr[$row['sys_language_uid']] = $row['title'];
}
$newsid 	= (int)$_GET['tx_ttnews']['tt_news'];
$productid 	= (int)$_GET['tx_onemanagement_pi3']['productUid'];
$flags 		= array();

$flags[0] = getRealUrl($GLOBALS['TSFE']->id, 0, $newsid, $productid);
$flags[1] = getRealUrl($GLOBALS['TSFE']->id, 1, $newsid, $productid);

$content = '<a class="top_nav_act" href="'.$flags[0].'">DE</a> | <a
href="'.$flags[1].'">EN</a>';
if($GLOBALS['TSFE']->sys_language_uid == 1){
	$content = '<a href="'.$flags[0].'">DE</a> | <a class="top_nav_act"
href="'.$flags[1].'">EN</a>';
}
?>


Bin für jede Hilfe dankbar!!! Besten Dank im Voraus!

Beste Grüße
Christian Endlich




More information about the TYPO3-german mailing list