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
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