Zum Inhalt springen

Lokalisierung: best. Feld vom Default Datensatz

Erstellt am 21. September 2010 · Noch keine Antworten

Tags: TCA, Frage

Mopps ·

Ich fummel jetzt schon Stunden am gleichen Problem und lauf gegen die Wand #angry#

Ich habe eine mehrsprachige Extension mit dem Kickstarter erstellt. Bei den lokalisierten Datensätzen sollen manche Felder vom Default-Datensatz übernommen werden. Das klassische Beispiel ist das Bild vom Default-Datensatz. Aus diesem Grund habe ich in der tca.php bei diesen Feldern folgendes hinzugefügt:

'bild' => array (        
            'exclude' => 0,
            'l10n_mode' => 'exclude',        
            ...
),

Diese Felder erscheinen nun beim Lokalisieren auch nicht mehr. Im Frontend sieht es nun so aus, dass bei L!=0 diese mit 'l10n_mode' => 'exclude' gesetzten Felder leer sind. Es werden also nicht die Werte vom Default-Datensatz genommen.

Ich habe inzwischen so viele Sachen, die ich im Netz gefunden habe, probiert und bekomme es trotzdem nicht hin, dass einfach der Wert vom entsprechenden Default-Datensatz genommen wird. Sitze auf dem Schlauch und hoffe auf Hilfe von Euch.
Hier noch einige relevante Einstellungen und Codeschnipsel.

SETUP:

config {
  # SprachVariable L initialisieren
  linkVars = L(1-2)
  uniqueLinkVars = 1

  # Standardsprache UID 0 -> Deutsch
  sys_language_uid = 0
  language = de
  locale_all = de_DE.utf-8
  htmlTag_langKey = de_DE

  # Verhalten beim Umschalten der Sprache
  sys_language_mode = content_fallback
  sys_language_overlay = hideNonTranslated
}

Ausschnitt List-View:

function listView() {

        [...]
        
    # Datensätze holen
    $select = '*';
    $table = 'tx_extname_tabelle';
    $where = 'pid = '.$this->pid[0].' AND sys_language_uid='.$GLOBALS['TSFE']->config['config']['sys_language_uid'].''.
            $this->cObj->enableFields($table);    
    $order = '';
    $group = '';
    $limit = '';
    
    $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($select, $table, $where, $group, $order, $limit);
    
    while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
        
       [...]
                
       $markerArray['###BILD'##'] = $this->pi_linkTP($fullname,array($this->prefixId.'[item]'=> $row['uid']),1);

       $liste .= $this->cObj->substituteMarkerArrayCached($singlerow,$markerArray);
    }
    $subpartArray['###ROW###'] = $liste;

    return $this->cObj->substituteMarkerArrayCached($subpart,$markerArray,$subpartArray,array());             
}

Ich habe bei [...] nur Dinge weggelassen, bei denen ich sicher bin, dass sie absolut nichts mit dem Problem zu tun haben.

Irgendwie muss die DB-Abfrage wohl anders sein. Aber wie?