Einzelnen Beitrag anzeigen
  #2  
Alt 04.02.07, 10:02
Sareen Sareen ist offline
Forum Stammgast
 
Registriert seit: 05.01.07
Alter: 25
Beiträge: 227
Sareen eine Nachricht über ICQ schicken Sareen eine Nachricht über Yahoo! schicken

Also liebe Sareen,

das geht doch ganz einfach ...
... ups, das bin ja ich. - Führe also schon Selbstgespräche. - aber ist auch für alle anderen vielleicht interessant:

Zuerst erweiterst Du die Datei "ext_tables.php". Dann weiss das Backend, dass es ein Flexform laden soll und aus welcher Datei:
Code:
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages,recursive';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1'] = 'pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds.xml');
Die erste Zeile ist mir nicht ganz klar, die zweite ermöglicht den "Flexform"-Bereich im Back-End, die dritte Zeile lädt den Inhalt des Flexforms.

Dann erstellst Du eine Datei "flexform_ds.xml". Das ist also die Datei die Du eben agegeben hast, dass daraus das Flexform geladen wird. In die Datei kommt am einfachsten:
Code:
<T3DataStructure>
  <meta>
    <langDisable>1</langDisable>
    <!--  <langChildren>1</langChildren>!-->
  </meta>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>Main</sheetTitle>
        </TCEforms>
        <type>array</type>      
 
       <el>            
          <ein_imput_field>
            <TCEforms>
              <exclude>1</exclude>
              <label>Ein Input-Field</label>
              <config>
                <type>input</type>       
              </config>
            </TCEforms>
          </ein_input_field>   
        </el>
        
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>
So wird nun im Flexform-Bereich der Extention im Back-End in der Sektion "Main" ein Input-Feld mit der Beschriftung "Ein Input-Field" angezeigt.

Da das für Mehrsprachigkeit noch etwas unflexibel ist ersetzt Du das Wort "Main" und den Satz "Ein Input-Field" mit:
Code:
LLL:EXT:dein_ext_key/locallang_db.php:dein_ext_key.pi_flexform.sheet_main
LLL:EXT:dein_ext_key/locallang_db.php:dein_ext_key.pi_flexform.ein_input_field
So, nun wird statt eines festen Textes der Text angezeigt, der in der Datei "locallang_db.php" festgelegt ist. In dieser Datei mußt Du natürlich noch entsprechenden Text eintragen:
Code:
<label index="dein_ext_key.pi_flexform.sheet_main">Main</label>
<label index="dein_ext_key.pi_flexform.ein_input_field">Ein Input-Field</label>
Da kannst Du ganz bequem dann den Text in den verschiedenen Bereichen für die verschiedenen Sprachen eingeben. Wichtig ist natürlich, dass zunächst mal de "default" Sprache einen Text hat.

Zu guter letzt kannst Du den Inhalt den ein Backend-User in Dein Flex-Form eingetragen hat in Deinem PHP-Skript der Extention abrufen (Also in der Datei "class.tx_deinextkey_pi1.php"). Das geht mit folgendem PHP-Code:
Code:
$this->pi_getFFvalue($this->cObj->data['pi_flexform'], ein_input_field, sDEF)
Also zuerst steht da der Name des Feldes und dann der Name des Sheets im Flexform.

... so einfach ist das. Und funktioniert sogar!

Bin mächtig stolz das nun endlich rausgeklügelt zu haben.

beste Grüße (auch den anderen)

Sareen
Mit Zitat antworten