TYPO3 - Distributions erstellen

Aus Wikizone
Version vom 25. April 2019, 10:31 Uhr von Steff (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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...