[TYPO3-german] Daten einer Flexform eines ANDEREN Content-Elements lesen

Dr. Ronald P. Steiner Ronald.Steiner at googlemail.com
Fri Feb 29 18:33:00 CET 2008


Hi Manfred,

das geht recht einfach:

1) Du fragst das Tabellenfeld ganz normal per mySQL ab:
     $content_elements =  $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
       'name_of_flex_form_field',
       'tt_content',
       '('.ltrim($include_pid_query," OR ").')'
       .$this->cObj->enableFields('tt_content')
       .' AND sys_language_uid=0'
       .' AND uid!='.$this->cObj->data[ 'uid' ]
     );

2)
Mit dieser Funktion wandelst Du dann den flex-form-string in einen array 
um der die Info enthält:
function extractFlex($flexFormStr){
     $piFlexForm = t3lib_div::xml2array($flexFormStr);
     $conf = array(); // Setup our storage array...
     if (is_array($piFlexForm['data']))
       foreach ( $piFlexForm['data'] as $sheet => $data )
         foreach ( $data as $lang => $value )
           foreach ( $value as $key => $val )
             $conf[$key] = $this->pi_getFFvalue($piFlexForm, $key, $sheet);
     return $conf;
   }

das funktioniert bei mir perfekt. Hoffe es hilft Dir auch.

beste Grüße

Ron

Widmann, Manfred Dipl.-Ing. schrieb:
> Hi!
> 
> Folgendes Problem:
> Ich möchte in einem Plugin auf bestimmte Infos (in diesem Fall auf die 
> Angabe der StoragePIDs) zugreifen, die in einer Flexform eines anderen 
> Content-Elements gespeichert ist. Genauer: ich möchte jenes Content-Element 
> aus der tt_content selektieren, in dessen Flexform eine bestimmte PID als 
> StoragePID verwendet wird.
> 
> Hintergrund:
> Ich schreibe einen Teaser für eine BLOG-Extension. Dort wird das 
> Frontend-Plugin über eine Flexform konfiguriert und einer dieser Parameter 
> ist die PID des General Storage in dem die Beiträge abgelegt werden.
> Mein Teaser selektiert nun aus der BLOG-Tabelle alle jene Einträge, die 
> jünger als x Tage sind und liefert den Namen des Bloggers, den Titel, einen 
> Teil des Inhalts und sollte auch einen Link auf den Beitrag liefern. Dazu 
> muss ich aber im Teaser-Plugin jene PID finden, die jenen Content enthält, 
> in dessen Flexform die StoragePid vorkommt, die ich als Parameter dem 
> Teaser-Plugin mitgebe.
> 
> Die Flexform ist im Content als XML gespeichert ... wie komme ich also am 
> leichtesten auf die PID? Ich meine select pid from tt_content where 
> pi_flexform like "%280%" ist ein wenig sehr fehleranfällig???! Aber wie 
> geht's besser?
> 
> lg
> Manfred 
> 
> 


More information about the TYPO3-german mailing list