Introduction into using site packages
Site package benefits
Developing a website can be approached in different ways. A typical website consists of HTML documents containing text and references to image files, video files, styles, etc. Because it is an enterprise content management system, TYPO3 has a clean separation between design, content and functionality and allows developers/integrators to easily add simple or sophisticated functionality.
Encapsulation
Using extensions is a powerful way to get the most out of TYPO3. Extensions can be installed, uninstalled and replaced. They can extend the core TYPO3 system with new functions and features. An extension typically consists of PHP files, and can also contain design templates (HTML, CSS, JavaScript files, etc.) and global configuration settings. The visual appearance of a website does not necessarily require any PHP code. However, the site package extension described in this tutorial contains exactly two PHP files (plus a handful of HTML/CSS and configuration files) and is an extension to TYPO3. You can simply copy the PHP code in this tutorial if you do not have any programming knowledge.
Version control
The advantage of a site package extension is that all files relevant to the website are stored in one place and can easily be tracked in a version control system such as Git. The site package approach is not the only way of creating TYPO3 websites but it is convenient and professional and not overly-complicated.
Dependency management
TYPO3 extensions can have specific dependencies set to other extensions and TYPO3 versions. This is called "Dependency Management" and makes deployment easy and fail-safe. Most TYPO3 sites are dependent on extensions such as "News" and "Powermail". A site package extension which contains global configuration settings for these extensions will define the dependencies for you. When the site package extension is installed in an empty TYPO3 instance, the dependent extensions are automatically downloaded from the TYPO3 Extension Repository and installed.
Clean separation from the userspace
In a TYPO3 installation that doesn't use extensions, template files are often
stored in the fileadmin/ directory. Files in
this directory are indexed by TYPO3's File Abstraction Layer (FAL) resulting in
possibly irrelevant records in the database. To avoid this the fileadmin/
area should be seen as a "userspace" which is only available for editors to
use. Even if access permissions restrict editors from accessing or manipulating
files in fileadmin/, site configuration components should
still not be stored in the userspace.
Security
Files in fileadmin/ are meant to be publicly accessible by
convention. To avoid disclosing sensitive system information (see the
TYPO3 Security Guide for further details),
configuration files should not be stored in fileadmin/.
Deployment
TYPO3 follows the convention over configuration paradigm. If files and directories in the site package extension use the naming convention, they are loaded automatically as soon as the extension is installed/activated. This means the extension can easily be deployed with Composer. Deployment can be automated by system administrators.
Distributable
By virtue of the motto "TYPO3 inspires people to share!", the site package extension can be shared with the community via the official TYPO3 Extension Repository and/or in a publicly accessible version control system such as GitHub.
Last, but not least, configuration settings in the site package can be overwritten using TypoScript setup and constants.