TYPO3 Plugin:

as_ce_injector

Extension für Inhaltselemente

Diese Extension dient dazu neue Inhaltselemente (CTypes) zu definieren und in ein Typo3 einzubinden. Dabei sind (fast) alle Daten in einzelnen Ordnern gebündelt.

Installation

Extension über den Extension Manager oder via Composer installieren

{
    "repositories": [
    ...
    {
        "type": "vcs",
        "url": "git@git01.amedick-sommer.de:as-intern/as_ce_injector.git"
    },
    ...
    ],
    "require": {
        ...
        "as/as-ce-injector": "x.x.x",
        ...
    }
}

Den Static Include der Extension kann man hinzufügen wenn man eine Website baut die auf _css_styledcontent basiert. Das Typoscript fügt ein paar nützliche Informationen zum CE-Wrap hinzu. Bei einem Auftritt der auf _fluid_styledcontent basiert haben diese Einstellungen keinen Einfluss.

Konfiguration

Im Extensionmanager kann man in der Konfiguration dieser Extension festlegen, in welchen Verzeichnissen nach Inhaltselementen gesucht werden soll. Es können mehrere Pfade durch Kommas separiert angegeben werden. Beispiel: _EXT:custom_template/Ce,EXT:astemplate/Ce

Verzeichnisstruktur

Each content element is located in its own subfolder below one of the configured folders. The following folder structure must be used in order to automatically load the content element in its folder:

Icons
    - ce_wiz.gif
Language
    - locallang.xlf
Resources
    - ...
TCA
    content_tables/<Tabellename>.php
    <Tabellename>.php
TSConfig
    - page.ts
    - user.ts
Typoscript
    - constants.ts
    - setup.ts
ce_conf.php
ce_localconf.php
ext_tables.sql

Icons

Unter Icons befindet sich das Icon für den ?New Content Element Wizard?. Die Datei muss entweder ce_wiz.gif oder ce_wiz.png heißen. Zusätzlich kann man hier auch ein Icon unterbringen, das für das CType Select-Feld verwendet werden soll. Das CType Feld ist das Feld in einem Inhaltselement über das man den Typ des Inhaltslements ändern kann (Text/Text mit Bild/Bilder/?).

Language

In diesem Ordner befindet sich die Datei locallang.xlf oder locallang.xml mit den Labels für das Backend und ggf. Frontend. Es müssen zwei Labels definiert sein, die sie auch dem CE-Identifier (Ordnername) und zwei Strings zusammensetzen die nachher die Texte für den New Content Element Wizard ergeben. Hat das CE den Identifier myce, so müssen folgende beiden Label definiert sein:

<label index="myce_wizard_title">Titel des Elemets</label>
<label index="myce_wizard_description">Beschreibung des Elements</label>

TCA

Hier liegen die Dateien die den TCA um weitere Tabellen oder Felder ergänzen. Möchte man also tt_content modifizieren, erstellt man eine Datei tt_content.php.

Da man eine Zusammenstellung der Felder im Backend für das neue Content Element braucht, ist die tt_content.php hier eigentlich Pflicht:

$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['items'][] = array('My CE', 'ce_myce', 'i/pages_catalog.gif');
$GLOBALS['TCA']['tt_content']['types']['ce_myce']['showitem'] =
 '--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.general;general' .
 ', header;LLL:EXT:as_template_ce/Ce/ce_myce/Language/locallang.xml:tt_content.ce_myce.header' .
 ', subheader;LLL:EXT:as_template_ce/Ce/ce_myce/Language/locallang.xml:tt_content.ce_myce.subheader' .
 ', bodytext;LLL:EXT:as_template_ce/Ce/ce_myce/Language/locallang.xml:tt_content.ce_myce.bodytext' .
 ', --div--;LLL:EXT:cms/locallang_ttc.xml:tabs.appearance'.
 ', --palette--;LLL:EXT:cms/locallang_ttc.xml:palette.frames;frames'.
 ', --div--;LLL:EXT:cms/locallang_ttc.xml:tabs.access'.
 ', --palette--;LLL:EXT:cms/locallang_ttc.xml:palette.visibility;visibility'.
 ', --palette--;LLL:EXT:cms/locallang_ttc.xml:palette.access;access'.
 ', --div--;LLL:EXT:cms/locallang_ttc.xml:tabs.extended'.
 '';

Möchte man eigene Tabellen verwenden, muss man zusätzlich noch einen Unterordner anlegen, in dem man das dynamicConfigFile ablegen kann.

Beispiel:

Man benötigt eine neue Tabelle tx_astemplatece_mytable, dann legt man die Datei TCA/tx_astemplatece_mytable.php an indem die ctrl Section der Tabelle definiert ist. Das ist der Teil den man normalerweise in die _exttables.php einer Extension schreiben würde.

In der ctrl Section gibt es einen Schlüssel dynamicConfigFile der auf die detailierte TCA Konfiguration der Tabelle zeigt. Diese Datei legt man jetzt z.B. unter __TCA/content_tables/tx_astemplatece_mytable.php__ an. Der Name des Unterordners ist frei wählbar, muss aber mit dem Pfad in dem Schlüssel dynamicConfigFile übereinstimmen.

TSConfig

Hier liegen ggf. Seiten- und User TSConfig

Typoscript

Hier liegen zwei Dateien constants.ts und setup.ts, die für das Frontend Rendering zuständig sind. Das Rendering muss aber nicht zwingend auf Typoscript basieren. Es kann (sollte) hier auch ein Fluid Template verwendet werden.

tt_content.ce_myce = FLUIDTEMPLATE
tt_content.ce_myce {

    file = EXT:as_template/Ce/ce_myce/Resources/Private/Templates/Template.html
}

Weitere Dateien

ce_conf.php

Die Datei ce_conf.php eines Inhaltselements entspricht von der Logik her etwa der ext_emconf.php einer Extension. In dieser Datei wird ein Array _$CECONF definiert, dessen erster Schlüssel der CE-Key selber ist. Dieser entspricht üblicherweise dem Verzeichnisnamen in dem die Datei liegt und ist, ähnlich wie bei einer Extension, über die Variable _$CEKEY verfügbar. Die folgenden Schlüssel sind zusätzliche Konfigurationsparameter für das Verhalten des CEs im Backend, wie z.B. die Sortierung. Es gibt folgende Schlüssel:

Schlüssel Typ Beschreibung
sorting Integer Legt einen numerischen Wert für die Sortierung fest
group String Legt den Tab des New Content Element Wizards fest in dem das CE erscheinen soll
Sortierung festlegen

Möchte man also für das Inhaltselement ce_myelement den Sortierwert 100 festlegen, so steht in der ce_conf.php

$CE_CONF[$_CEKEY]['sorting'] = 100;

Diese Funktion steht ab Version 1.2.1 zur Verfügung.

Achtung: Der Wert muss für alle Elemente aller Reiter eindeutig sein, d.h. es darf kein sorting-Wert doppelt vorkommen, da sonst Elemente von anderen Elementen überschrieben werden. Inhaltselement in Reiter verschieben

Standardmäßig werden alle Inhaltselemente in den Reiter fce abgelegt. Möchten man dass das Inhaltselement in einem anderen Reiter erscheint muss man in der ce_conf.php den Namen des Reiters angeben in dem das Element erscheinen soll:

$CE_CONF[$_CEKEY]['group'] = 'common';
Folgende Kategorien gibt es bereits vordefiniert in Typo3: Schlüssel Reitername
common Typischer Seiteninhalt
special Spezielle Elemente
forms Formulare
plugins Plug-Ins

Man kann ein Inhaltselement auch einem neuen Tab hinzufügen. Dazu muss man nur ein Schlüssel wählen der noch nicht definiert ist, also keiner aus der Liste der von Typo3 definierten Tabs ist und nicht fce. Zusätzlich muss man für diesen neuen Tab noch einen Titel definieren der im New Content Element Wizard angezeigt werden soll. Am besten in der Template Extension des Kunden im generellen page.ts. Die Überschrift eines Reiters wird mit folgendem TS Config festgelegt.

mod.wizards.newContentElement.wizardItems.mytab.header = Mein Tab

ce_localconf.php

Die Datei ce_localconf.php kann verwendet werden, wenn das Inhaltselement Code benötigt, den man normalerweise in die ext_localconf.php der Extension schreiben würde.

ext_tables.sql

Die ext_tables.sql__ beinhaltet alle Felder die dieses Inhaltselement benötigt. Leider kann diese Datei bisher noch nicht automatisch in das Typo3 integriert werden, und dient daher eher der Dokumentation. Der Inhalt der Datei _exttables.sql muss also händisch in z.B. die Datei as_template/ext_tables.sql__ kopiert werden um von Typo3 automatisch verarbeitet zu werden.

CREATE TABLE tt_content (
 as_mynewfield varchar(255) DEFAULT '' NOT NULL,
);

Anmerkungen

Noch ein paar Hinweise über Sonderfälle. Diese sind aber nur in Außnahmesituationen anwendbar und bei normaler Benutzung nicht relevant.

.htaccess

Legt man die CEs in das Verzeichnis as_template/Resources/Private/Ce/... dann ergibt sich ein Problem. Da alles innerhalb des Private Verzeichnisses liegt, ist die ce_wiz.gif und alle anderen Icons von einem Browser nicht erreichbar. Möchte man dennoch Icons im "New Content Element Wizard" verwenden, so muss die .htaccess Datei modifiziert werden:

# Basic security checks
# - Restrict access to deleted files in Recycler directories
# - Restrict access to TypoScript files in default templates directories
# - Restrict access to Private extension directories
# For httpd.conf, use these lines instead of the next ones:
# RewriteRule ^/TYPO3root/fileadmin/(.*/)?_recycler_/ - [F]
# RewriteRule ^/TYPO3root/fileadmin/templates/.*(\.txt|\.ts)$ - [F]
# RewriteRule ^/TYPO3root/typo3conf/ext/[^/]+/Resources/Private/ - [F]
RewriteRule ^fileadmin/(.*/)?_recycler_/ - [F]
RewriteRule ^fileadmin/templates/.*(\.txt|\.ts)$ - [F]

Diese Zeilen einfügen

RewriteCond %  !(typo3conf/ext/[^/]+/Resources/Private/Ce/[^/]+/Icons/.+)
RewriteRule ^typo3conf/ext/[^/]+/Resources/Private/ - [F]

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:AS_CE_INJECTOR ist auf

0.16 % aller TYPO3 installiert.

  • 1.22 % aller TYPO3 8.7.x Installationen installiert
  • 0.03 % aller TYPO3 7.6.x Installationen installiert

Aktualität:AS_CE_INJECTOR ist auf dem neusten Stand (v.unknown) bei

100 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 1.22 % aller TYPO3 8.7.x Installationen
  • 0.03 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

PHP Version:AS_CE_INJECTOR wird benutzt mit

  • 100 % PHP/5.5

Gosign-Responsive Index: TYPO3 Installationen nutzen AS_CE_INJECTOR zu

  • 95 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 3 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 2 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen AS_CE_INJECTOR zu

  • 2 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 79 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 20 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 0 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 2 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=37831 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>