Plugin per TypoScript platzieren

1. Oktober 2010 in TYPO3 von Leo

Neben dem hinzufügen von Plugins als normale Inhaltselemente, ist es auch Möglich Plugins über TypoScript zu platzieren.
Um ein Plugin per TypoScript zu platzieren benötigt man nur wenig Zeilen oder gar nur eine Zeile, welche man ins Setup seines Templates (TYPO3 Modul: “Template”) einfügt. Je nachdem wo das Plugin erscheinen soll platziert man es im Setup eines Templates einer Seite oder eben nicht.

Hat man templavoila installiert, findet man standardmässig so etwas vor:

page = PAGE
page.10 < plugin.tx_meineextension_pi1

Mit der zweiten Zeile TypoScript wäre das Plugin dann auch wirklich platziert worden.
Wer das ganze jedoch in einem TS Object Path Element (lib.) einfügen will, benutzt folgendes:

lib.beispiel = USER
lib.beispiel < plugin.tx_meineextension_pi1

Eigentlich ganz simpel.
Falls das Plugin nicht gecacht werden soll, verwendet man einfach folgendes:

lib.beispiel = USER_INT
lib.beispiel < plugin.tx_meineextension_pi1

Dies wird z.B. verwendet bei Zufälligen Inhalten, welche ja wechseln sollen, sobald man die Seite neu lädt.

Eigene Flexform in Extension einbauen

in TYPO3 von Leo

Eine Flexform kann in einer Extension benutzt werden, um eingaben und weiteres übers Backend an der Extension vorzunehmen.
Um solch eine Flexform in der eigenen Extension hinzuzufügen geht man folgendermassen vor:

1. Man legt in der eigenen Extension eine XML Datei an, am besten flexform.xml oder wie oft üblich flexform_ds.xml.

2. Nun fügt man folgende Zeilen in seine XML Datei ein:

<T3DataStructure>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>Optionen</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
           <eine_option>
              <TCEforms>
              <label>Modus</label>
              <config>
              <items type="array">
                 <numIndex index="0" type="array">
                    <numIndex index="0">Listen Ansicht</numIndex>
                    <numIndex index="1">Detail Ansicht</numIndex>
                 </numIndex>
              </items>
              </config>
            </TCEforms>
           </eine_option>
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>

Dies wäre ein Beispiel für eine Einstellung, welche natürlich so alleine nicht funktioniert.

3. Als nächstes müssen wir die Flexform in unserer Extension sozusagen registrieren, bzw. einbinden. Folgender Code kommt in die Datei “ext_tables.php” unserer Extension:

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

Der Pfad in Zeile 2 muss je nachdem wo eure Flexform liegt und heisst noch angepasst werden.

4. Um nun auf die Einstellungen als Variabeln, welche wir über die Flexform eingegeben haben im Code der Extension zugreifen zu können, benötigen wir folgenden Code am Anfang (Main):

$this->pi_initPIflexForm();

Und um wirklich auf die Variabeln zugreifen zu können folgendes:

$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'eine_option', 'sDEF');

Übrigens, ab TYPO3 4.2.1 soll folgender Code reichen um auf die Einstellungen zuzugreifen:

$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'eine_option');

Eine Ausführliche Beschreibung zu Flexformen gibt es in der TYPO3 Wiki.

Neues Design und weitere Änderungen

in Allgemein von Leo

Die kleine “Schreibpause” hier auf dem Lehrlingsblog ist vorbei und es wird wieder fleissig geschrieben! Doch nicht nur das ändert sich nun (bzw. wieder), sondern es gibt auch ein komplett neues Design, welches bestimmt länger bleiben wird als die bisherigen :)
Noch kurz etwas zum Design: Ja das Design soll von den Farben her auf TYPO3 andeuten, da es ja auch das Hauptthema hier ist.

Ausserdem wurde etwas aufgeräumt, z.B. wurden die Kategorien neu angeordnet und neue erstellt.
Kommende Artikel werden sich vor allem um TYPO3 und PHP drehen, wovon die ersten neuen Artikel schon bald folgen werden.

Ich freue mich jederzeit auf Feedback ;)

Leo