TYPO3 - Distributions erstellen
Hinweis: Distributions enthalten eigentlich eine Anzahl von vorbereiteten Seiten. Eine Distribution ohne Seiten ist ein Sitepackage. Also sollte die Seite heißen:
TYPO3 Sitepackage erstellen
Siehe auch ältere Version:
TYPO3 - Distribution mit FLUID Templates erstellen
Links
https://speakerdeck.com/benjaminkott/the-anatomy-of-typo3-sitepackages - Guter Einstieg, Pros, Conventions http://www.sitepackagebuilder.com/ (Package Builder) https://github.com/benjaminkott/example_package (Beispiel Package) https://github.com/benjaminkott/bootstrap_package *File:example_package-master.zip *File:bootstrap_package-master.zip
TYPO3 9 - Sitepackage
Basic Structure
Vieles benötigt man in der Regel nicht, aber wenn gehört es hier hin...
Classes/ -> Controller, ViewHelpers Configuration/ -> TypoScript, PageTS, TCA Documentation/ -> Anleitung (reStructuredText Format) Initialisation/ -> Data / Assets for Fileadmin Resouces/ -> Templates, Images, CSS, JS, ... ext_conf_template.txt -> Konfiguration für Extension Manager ext_emconf.php -> Konfiguration der Extension (also des Package) ext_icon.png -> Extension Icon bis 64x64px ext_localconf.php -> Wird in FE und BE ausgeführt ext_tables.php -> Wird in BE ausgeführt ext_tables.sql -> Datenbank Tabellen Die Distribution enthält * TypoScript für: Basisaufbau * PageTypoScript für '''Backend Layouts''' und '''Gridelements'''
Struktur des Classes Ordner
Controller/ -> MVC Controller
Domain/
Model/ -> MVC Domain Model
Repository/ -> Daten Repositories
Hook/ -> Hooks für Manipulation der Core Funktionen
ViewHelpers/ -> Custom Fluid View Helpers
Struktur des PageTS Ordners
PageTS/ -> PageTS ;-)
RTE.txt TCEFORM.txt
TCA/ -> TableContentArray = Definition für eigene Tabellen
Overrides/ tt_content.php -> um TCA von vorhandenen Tabellen (hier tt_content) zu überschreiben tx_myext_record.php
TypoScript/ -> Static TypoScript Templates
setup.txt constants.txt
.htaccess
Resourcen
Private/ -> Private geschützte Dateien Languages/ -> XLIFF/XML Dateien für lokalisierte Labels Layouts/ -> Hauptlayouts für die Views Partials/ -> Parial Layouts Templates/ -> Frontend Templates .htaccess -> Schützen des privaten Ordners Public/ -> Öffentliche Files (Einbinden im Frontend) Css/ Images/ JavaScript/
Funktionsweise einer Distribution
Initialisierung
Assets, Datensätze kopieren
- Dateien aus dem Files Ordner werden nach fileadmin/extensionname/ kopiert.
- Daten aus .t3d Dateien (Seitenbaum etc.) werden auf dem root level angelegt
Minimales Sitepackage
Was benötigt man für ein funktionierendes Package ?
- Die Extension
- Einbinden der CSS Styled Content
- Basis TypoScript
- Basis PageTS
- Fluid Template
- CSS Datei
- JavaScript Datei
Extension Ordner und Dateien
typo3conf/ext/example_package
Configuration Resources ext_emconf.php ext_icon.png ext_localconf.php ext_tables.php
ext_emconf.php
<?php
$EM_CONF[$_EXTKEY] = array(
'title' => 'Example Package',
'description' => '',
'category' => 'templates',
'version' => '1.0.0',
'state' => 'stable',
'clearcacheonload' => 1,
'author' => 'Benjamin Kott',
'author_email' => 'info@bk2k.info',
'author_company' => '',
'constraints' => array(
'depends' => array(
'typo3' => '7.6.0-8.99.99'
),
'conflicts' => array(
'fluidpages' => '*',
'themes' => '*',
),
),
);
ext_localconf.php
Vorsicht mit Einträgen. Diese gelten global für alle Sites.
<?php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
ext_tables.php
Hier kann man mit addStaticFile statische TypoScript Templates einbinden (die stehen dann in den Template Includes im Backend zur Verfügung.
<?php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
$_EXTKEY, // Extension Key
'Configuration/TypoScript/CssStyledContent', // Path to setup.txt and constants.txt
'Example Package - CSS Styled Content' // Title in the selector box
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
$_EXTKEY, // Extension Key
'Configuration/TypoScript/FluidStyledContent', // Path to setup.txt and constants.txt
'Example Package - Fluid Styled Content' // Title in the selector box
);
Weitere Möglichkeiten
PageTS
Hier habe ich schon mehrere Möglichkeiten gesehen wo genau es eingebunden wird. Auf alle Fälle unterhalb des Configuration Ordner.
Im Site Package Tool wird z.B. die Datei:
Configuration/TsConfig/Page/All.tsconfig
Um darin auf die anderen PageTS Konfigurationen zu inkludieren:
# # PageTS for gbbootstrap # <INCLUDE_TYPOSCRIPT: source="FILE:EXT:gbbootstrap/Configuration/TsConfig/Page/RTE.tsconfig"> <INCLUDE_TYPOSCRIPT: source="FILE:EXT:gbbootstrap/Configuration/TsConfig/Page/TCEFORM.tsconfig"> <INCLUDE_TYPOSCRIPT: source="FILE:EXT:gbbootstrap/Configuration/TsConfig/Page/TCEMAIN.tsconfig"> <INCLUDE_TYPOSCRIPT: source="FILE:EXT:gbbootstrap/Configuration/TsConfig/Page/Mod/WebLayout/BackendLayouts.tsconfig">
Dieses wird wiederum in der ext_localconf.php geladen:
/***************
* PageTS
*/
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY . '/Configuration/TsConfig/Page/All.tsconfig">');
constants.txt und setup.txt
Nutze die Konstanten für wichtige Einstellmöglichkeiten und das Setup um wichtige Voreistellungen zu machen. Oft benötigt man auch Einstellungen für Extensions die man als Abhängigkeiten definiert.
Wichtige Einstellungen sind z.B.:
- Abhängigkeiten zu Extensions (bootstrap_package)
- Fluid Objekte
- Backend Layout selection...
- CSS und JS Files einbinden...