3. Struktur

3.1. Dateisystem

Beispielaufbau bei Setup via Composer mit helhum/typo3-secure-web:

.
├── composer.json
├── composer.lock
├── typo3
│   ├── fileadmin
│   │   ├── _temp_
│   │   └── user_upload
│   ├── index.php
│   ├── typo3
│   │   ├── index.php
│   │   ├── install.php
│   │   └── sysext
│   ├── typo3conf
│   │   ├── ENABLE_INSTALL_TOOL
│   │   ├── ext
│   │   ├── l10n
│   │   ├── AdditionalConfiguration.php
│   │   ├── LocalConfiguration.php
│   │   └── PackageStates.php
│   ├── typo3temp
│   │   ├── assets
│   │   ├── index.html
│   │   └── var
│   └── uploads
│       ├── index.html
│       └── media
├── vendor
│   ├── autoload.php
│   ├── bin
│   │   ├── ...
│   │   ├── fluid -> ../typo3fluid/fluid/bin/fluid
│   │   ├── phpunit -> ../phpunit/phpunit/phpunit
│   │   ├── typo3 -> ../typo3/cms-cli/typo3
│   │   └── typo3cms -> ../helhum/typo3-console/Scripts/typo3cms
│   ├── cogpowered
│   │   └── finediff
│   ├── composer
│   │   ├── autoload_ ...
│   │   └── ClassLoader.php
│   ├── cweagans
│   │   └── composer-patches
│   ├── doctrine
│   │   ├── ...
│   │   └── lexer
│   ├── helhum
│   │   ├── console-autoload-include.php
│   │   ├── typo3-composer-setup
│   │   ├── typo3-console
│   │   ├── typo3-console-plugin
│   │   └── typo3-secure-web
│   ├── symfony
│   │   ├── console
│   │   ├── debug
│   │   ├── finder
│   │   ├── polyfill-mbstring
│   │   ├── process
│   │   └── yaml
│   ├── ...
│   ├── typo3
│   │   ├── autoload-include.php
│   │   ├── class-alias-loader
│   │   ├── cms-cli
│   │   └── cms-composer-installers
│   ├── typo3-console
│   │   └── composer-auto-setup
│   └── typo3fluid
│       └── fluid
└── web
    ├── fileadmin -> ../typo3/fileadmin
    ├── index.php
    ├── typo3
    │   ├── index.php
    │   ├── install.php
    │   └── sysext
    └── typo3temp
        └── assets -> ../../typo3/typo3temp/assets

111 directories, 34 files

3.2. Extensions

Extensions erweitern die Funktionalität von TYPO3 und bestehen aus einem Ordner mit weiteren Dateien. Sie können PHP und andere Dateien wie CSS und JS enthalten.

3.2.1. Core Extensions

TYPO3 selbst besteht schon ausschließlich aus Extensions, diese befinden sich unter typo3/sysext. Der Ordner steht für “Systemextensions”.

3.2.2. Extensions / Sitepackage

Eigene Extensions werden unterhalb von typo3conf/ext/ abgelegt.

Früher wurden Konfigurationen für die Installation noch im fileadmin abgelegt, mittlerweile hat sich hier die Verwendung von sogenannten Sitepackages durchgesetzt. Dies sind Extensions welche keine besondere Funktionalität, wie z.B. Mailversand, mitbringen, sondern das System als solches konfigurieren.

3.3. Pakete / Composer

Weitere Abhängigkeiten die mittels composer installiert werden liegen im vendor Ordner.

3.4. Datenbank (-Tabellen)

TYPO3 verwendet eine eigene Datenbank und keine Prefixe um sich von anderer Software abzugrenzen, wie manch anderes System. Dafür werden Prefixe bei Tabellen verwendet. So z.B. cf_ für das Caching-Framework, be für Backend, fe für Frontend und sys für System.

TYPO3 kennt grundlegend 2 Tabellen-Arten, einmal normale Tabellen die Daten vorhalten, und mm-Tabellen für Relationen.

Letztere sollten immer mit einem Suffix sys_category_record_mm kenntlich gemacht werden und idealerweise im Namen beinhalten welche Tabellen verknüpft werden. Im Beispiel sys_category mit anderen records wie tt_content.

Tabellen sollten immer über eine Spalte uid und pid verfügen. Zudem gibt es einige weitere Konventionen die in der TCA-Reference nachgelesen werden können. Auch die Relationen haben gewisse Konventionen was die Spalten betrifft, so gibt es dort uid_local und uid_foreign.