Zum Inhalt springen

Content mehrsprachig über eigene Extension rendern

Erstellt am 30. August 2007 · 1 Antwort · letzte Antwort am 31. August 2007

Tags: Frage

viktor ·

Hallo,

Ich schreibe gerade eine Extension, die über

function getIds($l=0) {
		$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
			'uid',
			'tt_content',
			'pid='.$GLOBALS['TSFE']->id.' AND sys_language_uid='.intval($l),
			'',
			'sorting',
			''
		);
		$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
		$idList = $row['uid'];
		while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
			$idList .= ','.$row['uid'];
		}   
		return $idList;
}

...

$idList = $this->getIds($l);
		
$conf_content = array('tables' => 'tt_content','source' => $idList,'dontCheckPid' => 0);

$content = $this->cObj->RECORDS($conf_content);

einzelne Contentelemente aus der Datenbank liest und später in ein Template einfügt. Das klappt auch wunderbar... Nur leider habe ich eine Sache übersehen, durch

... 'pid='.$GLOBALS['TSFE']->id.' AND sys_language_uid='.intval($l), ...

werden nur Records angezeigt, die auch explizit in dieser Sprache vorhanden sind. Wenn sie nur in der Default Sprache existieren, werden sie nicht gelesen. Es würde halt auch den weg geben, mit dem ich bei einem leeren Datensatz im nachhinein nocheinmal mit "sys_language_uid='.$defaultLanguageOderSo" suche, aber ich vermute, das es hierfür eine elegantere Lösung mit Typo3 Boardmitteln gibt...

Ich möchte Content aus der Datenbank rendern und in der jeweils verfügbaren Sprache darstellen.

Was meint ihr?

Vielen Dank und beste Grüße,

Viktor

viktor ·

Ich habe das jetzt etwas anders gemacht. Zuerst im TS folgendes eingetragen (da ich auf einen bestimmten Page type reagieren muss, rufe ich die methode "method" direkt aus TS auf - so habe ich keinen Zugriff auf $this->conf):

includeLibs.ext_name = EXT:ext_name/pi1/class.extension_class.php

page_obj 					= PAGE
page_obj  {
	typeNum 				= {$TYPE_NUMBER_DOWNLOAD_PAGE}
	10 					= USER_INT
	10.userFunc 				= extension_class->method 
	10.templateFile				= {$TEMPLATE_DOWNLOAD_PAGE}
	10.myContent {
		normal 				< styles.content.get
		left 				< styles.content.getLeft
		right 				< styles.content.getRight
		border 				< styles.content.getBorder
	}
}

So wird der Content direkt mit css_styled_content gerendert und ich muss mich nicht selber darum kümmern (Spracheinstellungen usw.). Innerhalb der Klasse "class.extension_class.php" wird dann die methode "method" geöffnet:

function method($content, $cObj) {
		  
		// ...
  
		$contentNormal = $this->cObj->cObjGetSingle($cObj["myContent."]['normal'], $cObj["myContent."]['normal.']);
		$contentLeft = $this->cObj->cObjGetSingle($cObj["myContent."]['left'], $cObj["myContent."]['left.']);
		$contentRight = $this->cObj->cObjGetSingle($cObj["myContent."]['right'], $cObj["myContent."]['right.']);
		$contentBorder = $this->cObj->cObjGetSingle($cObj["myContent."]['border'], $cObj["myContent."]['border.']);	
			
		// ...		
	
}

Das klappt nun wunderbar. Falls es aber dennoch eine tolle Möglichkeit gibt mit Typo3 Bordmitteln auf Spracheinstellungen der Page records zuzugreifen, wäre ich für jeden Tip sehr dankbar.

Vielen Dank und beste Grüße,

Viktor