eigene Extension mit eigenem Backend Textfeld

Die Anforderung: es sollte im Backend ein neues Inhaltselement namens „Zitat“ geben. Man braucht also ein neues Inhaltselement mit einem simplen Textfeld, das dann im Frontend dementsprechend ausgegeben wird. Und zum ersten Mal hab ich das tatsächlich geschafft.

1. Mit der Extension Kickstarter (kickstarter) eine neue Erweiterung erstellen.
– einen Extension key vergeben (meiner lautete ccquotebox)
– unter General Info einen klangvollen Namen vergeben (z.B. „Zitate“), Kategorie „Backend“ auswählen, Namen und Email Adresse eintragen
– in New Database Tables eine Tabelle anlegen („tx_ccquotebox_quotes“), ihr einen Titel geben („quotes“), unter Edit Fields alles lassen wie es ist und unten dran ein neues Field einfügen.

– unter Frontend Plugins einen Titel eingeben („Zitat“) und die erste Option „Add to ‚Insert Plugin‘ list in Content Elements'“ auswählen.
– anschließend mit viewresult und create die Extension erstellen.

2. ext_tables.php im Ordner der gerade erstellten Extension (typo3conf/ext/ccquotebox/ext_tables.php) um zwei Zeilen erweitern:

$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds_pi1.xml');

3. die flexform_ds_pi1.xml Datei im Extension Ordner erstellen und mit folgendem Inhalt befüllen:

<T3DataStructure>
 <sheets>
 <sDEF>
 <ROOT>
 <TCEforms>
 <sheetTitle>Options</sheetTitle>
 </TCEforms>
 <type>String</type>
 <el>
 <quellcode>
 <TCEforms>
 <label>Zitat</label>
 <config>
 <type>text</type>
 <html>0</html>
 <cols>60</cols>
 <rows>15</rows>
 </config>
 </TCEforms>
 </quellcode>    
 </el>
 </ROOT>
 </sDEF>
 </sheets>
</T3DataStructure>

Damit sollte es bei den Inhaltselementen ein neues Plugin „Zitat“ geben, mit einem Textfeld.

4. Falls nötig: auf UTF-8 umstellen
Da bei mir die Umlaute eine Fehlermeldung auslösten, habe ich die localconf.php geupdated:

$TYPO3_CONF_VARS['BE']['forceCharset'] ='utf-8';

Danach gehn sämtliche Umlaute erstmal nicht mehr, man muss alle Texte neu abspeichern. Aber in meinem Fall stand das Projekt noch am Anfang deshalb war das kein großes Thema.

5. Frontend Ausgabe
Damit nun das Zitat ordentlich ausgegeben wird, bearbeitet man die main Funktion der class.tx_ccquotebox_pi1.php folgendermaßen:

	function main($content, $conf) {
		$this->conf = $conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_initPIflexForm(); 
		$piFlexForm = $this->cObj->data['pi_flexform'];
    foreach ( $piFlexForm['data'] as $sheet => $data ) {
            foreach ( $data as $lang => $value ) {
                foreach ( $value as $key => $val ) {
                    $this->lConf[$key] = $this->pi_getFFvalue($piFlexForm, $key, $sheet);
                }
            }
        }
		$content='
'.$this->lConf['quellcode'].'
'; return $this->pi_wrapInBaseClass($content); }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.