TYPO3 - Distributions erstellen: Unterschied zwischen den Versionen
Steff (Diskussion | Beiträge) |
Steff (Diskussion | Beiträge) |
||
| Zeile 25: | Zeile 25: | ||
ext_conf_template.txt -> Konfiguration für Extension Manager | ext_conf_template.txt -> Konfiguration für Extension Manager | ||
ext_emconf.php -> Konfiguration der Extension (also des Package) | ext_emconf.php -> Konfiguration der Extension (also des Package) | ||
| − | ext_icon.png -> Extension Icon | + | ext_icon.png -> Extension Icon bis 64x64px |
ext_localconf.php -> Wird in FE und BE ausgeführt | ext_localconf.php -> Wird in FE und BE ausgeführt | ||
ext_tables.php -> Wird in BE ausgeführt | ext_tables.php -> Wird in BE ausgeführt | ||
| Zeile 84: | Zeile 84: | ||
* JavaScript Datei | * JavaScript Datei | ||
| − | === Extension Ordner === | + | === Extension Ordner und Dateien === |
typo3conf/ext/example_package | typo3conf/ext/example_package | ||
| Zeile 93: | Zeile 93: | ||
ext_localconf.php | ext_localconf.php | ||
ext_tables.php | ext_tables.php | ||
| + | ==== ext_emconf.php ==== | ||
| + | <pre> | ||
| + | <?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' => '*', | ||
| + | ), | ||
| + | ), | ||
| + | ); | ||
| + | |||
| + | </pre> | ||
| + | ==== ext_localconf.php ==== | ||
| + | Vorsicht mit Einträgen. Diese gelten global für alle Sites. | ||
| + | <pre> | ||
| + | <?php | ||
| + | |||
| + | if (!defined('TYPO3_MODE')) { | ||
| + | die('Access denied.'); | ||
| + | } | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | ==== ext_tables.php ==== | ||
| + | Hier kann man mit addStaticFile statische TypoScript Templates einbinden (die stehen dann in den Template Includes im Backend zur Verfügung. | ||
| + | |||
| + | <pre> | ||
| + | <?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 | ||
| + | ); | ||
| + | </pre> | ||
| + | |||
| + | == 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: | ||
| + | <pre> | ||
| + | # | ||
| + | # 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"> | ||
| + | |||
| + | </pre> | ||
| + | Dieses wird wiederum in der ext_localconf.php geladen: | ||
| + | <pre> | ||
| + | /*************** | ||
| + | * PageTS | ||
| + | */ | ||
| + | \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY . '/Configuration/TsConfig/Page/All.tsconfig">'); | ||
| + | </pre> | ||
| + | === 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... | ||
Aktuelle Version vom 25. April 2019, 10:31 Uhr
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[Bearbeiten]
Siehe auch ältere Version:
TYPO3 - Distribution mit FLUID Templates erstellen
Links[Bearbeiten]
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[Bearbeiten]
Basic Structure[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
Initialisierung[Bearbeiten]
Assets, Datensätze kopieren[Bearbeiten]
- Dateien aus dem Files Ordner werden nach fileadmin/extensionname/ kopiert.
- Daten aus .t3d Dateien (Seitenbaum etc.) werden auf dem root level angelegt
Minimales Sitepackage[Bearbeiten]
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[Bearbeiten]
typo3conf/ext/example_package
Configuration Resources ext_emconf.php ext_icon.png ext_localconf.php ext_tables.php
ext_emconf.php[Bearbeiten]
<?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[Bearbeiten]
Vorsicht mit Einträgen. Diese gelten global für alle Sites.
<?php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
ext_tables.php[Bearbeiten]
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[Bearbeiten]
PageTS[Bearbeiten]
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[Bearbeiten]
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...