SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
THE ANATOMY OF
SITEPACKAGES
Modern website building in TYPO3
Benjamin Kott
Front-end Developer at TeamWFP
Member of the TYPO3 UX Team
Düsseldorf, Germany
facebook.com/benjamin.kott
twitter.com/benjaminkott
github.com/benjaminkott
bk2k.info
THE ANATOMY OF SITEPACKAGES2
Benjamin Kott
Front-end Developer at TeamWFP
Member of the TYPO3 UX Team
Düsseldorf, Germany
facebook.com/benjamin.kott
twitter.com/benjaminkott
github.com/benjaminkott
bk2k.info
THE ANATOMY OF SITEPACKAGES3
That is Dave.
Dave is Frank Näglers
personal Minion. Every time
Frank commits bullshit to the
TYPO3 Core, it was Dave.
Dave really, really wanted
to be part of this presentation.
4 THE ANATOMY OF SITEPACKAGES
Build #6480 (fcec4ef) of
TYPO3/TYPO3.CMS@master
by Frank Nägler failed in 10 min
32 sec
It´s not my fault!
Eh. Banana?
5 THE ANATOMY OF SITEPACKAGES
Agenda
  
The what and why? Lots of technical stuff! Final Conclusion.
6 THE ANATOMY OF SITEPACKAGES
W
The what and why?
What is a Sitepackage?
It´s all about definition.
7 THE ANATOMY OF SITEPACKAGES
Different names for
the same @!?#&%§ shit.
Base Extension
Template Extension
Sitepackage
Site Foundation
Distribution*
…
8 THE ANATOMY OF SITEPACKAGES
* A Distribution normally contains a pre-set of pages and assets,
in this case we will not make use of it. It´s listed for sake of completeness.
„A sitepackage is an extension
for TYPO3 that contains
all relevant configurations
for a website.“
9 THE ANATOMY OF SITEPACKAGES
Why should you care
about a Sitepackage?
It @!?#&%§ works for me™ to put
everything in the fileadmin.
10 THE ANATOMY OF SITEPACKAGES
Your configuration files
are indexed by FAL.
All files you upload into the fileadmin are automatically
indexed from the file abstraction layer if not disabled.
Lots of totally useless records that should not
be there at any point.
11 THE ANATOMY OF SITEPACKAGES
FAL records are not updated
if files are uploaded via FTP.
The only way FAL recognizes file changes or deletions
is if they are done using the backend or the API directly.
Files that are changed outside can cause fatal error,
if this file is referenced and deleted via FTP.
12 THE ANATOMY OF SITEPACKAGES
13 THE ANATOMY OF SITEPACKAGES
Fileadmin is userspace.
Files within the fileadmin directory are edited and maintained by an
editor who usually does not have the knowledge to so it properly.
It´s better to protect the editor from
accidentally breaking a part of the internet.
14 THE ANATOMY OF SITEPACKAGES
Configurations should be
in your version control.
Having the configuration files in the fileadmin is a
strong indicator for missing version control.
We should talk about that…
15 THE ANATOMY OF SITEPACKAGES
16 THE ANATOMY OF SITEPACKAGES
Source: http://www.commitstrip.com/en/2013/11/05/git-svn-ou/
You are not able to handle
Extension dependencies.
Without dependency management you have no idea which extensions
and which version is needed to maintain a running website.
17 THE ANATOMY OF SITEPACKAGES
Dependencies
The Extension Manager is your friend.
18 THE ANATOMY OF SITEPACKAGES
For example sitepackage extension could
require Bootstrap Package, News & Seo
Basics in the newest available version on
installation.
Your TypoScript
Setup and Constants are saved
in the template record.
The setup and constant field of a template record is
the last possibility to override the TypoScript configuration
of your TYPO3 page within that record.
19 THE ANATOMY OF SITEPACKAGES
20 THE ANATOMY OF SITEPACKAGES
Template Record
Static template sorting.
Instead of putting your setup and constants
directly in the template record or include it
there its more easy to make use of Static
Templates.
General Options Includes Access
Template
Include static (from extensions)
CSS Styled Content
(css_styled_content)
Selected Items Available Items
Bootstrap Package
(bootstrap_package)
Example Package
(example_package)
General Options Includes Access
Template
Constants
<INCLUDE_TYPOSCRIPT: source="…">
Setup
<INCLUDE_TYPOSCRIPT: source="…">
Static Templates
and loading order.
Your configuration is
@!?#&%§ public accessible.
Most users that put their configuration files in the
fileadmin folder, forget to protect it from external access.
Want so see how not to do it?
Bing „fileadmin setup.txt“ or „fileadmin setup.ts“
21 THE ANATOMY OF SITEPACKAGES
plugin.tx_odstwitter_pi1 {
consumerKey = XXXXXX
consumerSecret = XXXXXX
accessToken = XXXXXX
accessTokenSecret = XXXXXX
}
22 THE ANATOMY OF SITEPACKAGES
plugin.ldap.auth {
username = admin
password = XXXXXX
}
23 THE ANATOMY OF SITEPACKAGES
You don´t want your
configuration to be
public accessible!
NEVER. EVER. EVERERERERER!
24 THE ANATOMY OF SITEPACKAGES
… we could do this for hours.
25 THE ANATOMY OF SITEPACKAGES
Benefits of Sitepackages!
Yummy, yummy!
26 THE ANATOMY OF SITEPACKAGES
Facts
Config files editable through file module
Config files not accessible by editors
Config files are protected *
Autoload PageTS
Autoload TypoScript
Static TypoScript Template
Dependency Management
Distrubution through TER possible
Deployment through Extension Manager
Clean Version Control possible
Sitepackage










27 THE ANATOMY OF SITEPACKAGES
Fileadmin










* Possible but not common practice
28 THE ANATOMY OF SITEPACKAGES
T
Technical Stuff
Structure
Stick to the Conventions.
29 THE ANATOMY OF SITEPACKAGES
Basic Structure
 Classes
 Configuration
 Documentation
 Initialisation
 Resources
 ext_conf_template.txt
 ext_emconf.php
 ext_icon.png
 ext_localconf.php
 ext_tables.php
 ext_tables.sql
Controller, ViewHelpers
TypoScript, PageTS, TCA
Manual in reStructuredText format
Data / Assets for Fileadmin
Templates, Images, CSS, JS, …
Extension Manager Configuration
Extension Configuration
Extension Icon
Executed in FE and BE
Executed in BE
Database Schema
30 THE ANATOMY OF SITEPACKAGES
 Classes
 Controller
 Domain
 Model
 Repository
 Hook
 ViewHelpers
MVC Controller
MVC Domain Model
Data Repositorys
Core Manipulation Scripts
Custom Fluid ViewHelper
31 THE ANATOMY OF SITEPACKAGES
 Configuration
 PageTS
 RTE.txt
 TCEFORM.txt
 TCA
 Overrides
 tt_content.php
 tx_myext_record.php
 TypoScript
 setup.txt
 constants.txt
 .htaccess
PageTS for your Website
TCA Definition for your own
tables
TCA Overrides for existing
tables
TypoScript Static Template
Protect your stuff!
32 THE ANATOMY OF SITEPACKAGES
 Documentation
docs.typo3.org/typo3cms/CoreApiReference/ExtensionArchitecture/Documentation/I
ndex.html
Call for help!
documentation@typo3.org
twitter.com/T3docTeam
Documentation is hard and we are all really bad in this.
It helps you to remember and others to understand what
and how things work.
33 THE ANATOMY OF SITEPACKAGES
 Initialisation
 Files
 Images
 Example_1.png
 Example_2.jpg
 Example_3.txt
 data.t3d
Files added here, they will be
copied to fileadmin/extension/
during installation
Export of your database it will
be imported at page root level
during installation
34 THE ANATOMY OF SITEPACKAGES
 Resources
 Private
 Languages
 Layouts
 Partials
 Templates
 .htaccess
 Public
 Css
 Images
 JavaScript
Private protected files
XLIFF/XML files for localized labels
Main layouts for the views
Partial templates for repetitive use
Templates for the views
Protect your stuff!
Public accessible files
Any CSS file used by the extension
Any images used by the extension
Any JS file used by the extension
35 THE ANATOMY OF SITEPACKAGES
Minimal Setup
Let´s start small.
36 THE ANATOMY OF SITEPACKAGES
Example Package
Just enough to get the party starting.
Extension
Dependency to CSS Styled Content
Basic TypoScript
Basic PageTS
Fluid Template
CSS file
JavaScript file
37 THE ANATOMY OF SITEPACKAGES
typo3conf/ext/example_package
Head to the directory and create a folder with a name of your choice like
„example_package“. This will be the container of your sitepackage and
also your extension key.
38 THE ANATOMY OF SITEPACKAGES
Extension Directory Your Extension
 example_package
 Configuration
 Resources
 ext_emconf.php
 ext_icon.png
 ext_localconf.php
 ext_tables.php
TypoScript, PageTS, TCA
Templates, Images, CSS, JS, …
Extension Configuration
Extension Icon
Executed in FE and BE
Executed in BE
39 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext
 ext_emconf.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' => '6.2.12-7.99.99',
'css_styled_content' => '6.2.0-7.99.99',
),
'conflicts' => array(
'fluidpages' => '*',
'themes' => '*',
),
),
);
Title
A title for your extension.
Category
Type of category the extension should be
listed in. Use template for general usage
and distribution for a listing in the
distributions section.
Dependencies
Additional Extensions, for example like a
news extension or a specific core version.
Conflicts
Known issues with other extensions can
be placed here to avoid that these
extension are running parallel in your
system.
40 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package
 ext_icon.png
41 THE ANATOMY OF SITEPACKAGES
Make it pretty. Please.
64x64 PNG are welcome.
 typo3conf /  ext /  example_package
 ext_localconf.php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
TYPO3CMSCoreUtilityExtensionManagementUtility::addPageTSConfig(
'<INCLUDE_TYPOSCRIPT: source="FILE:EXT:'
. $_EXTKEY . '/Configuration/PageTS/TCEFORM.txt">'
);
42 THE ANATOMY OF SITEPACKAGES
Add PageTS by default*
* You should really know what you are doing before adding global PageTS.
After adding its set for all Websites in your TYPO3 instance.
 typo3conf /  ext /  example_package
 ext_tables.php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
TYPO3CMSCoreUtilityExtensionManagementUtility::addStaticFile(
$_EXTKEY, // Extension Key
'Configuration/TypoScript', // Path to setup.txt and constants.txt
'Example Package' // Title in the selector box
);
43 THE ANATOMY OF SITEPACKAGES
Add static template to
the template record
General Options Includes Access
Template
Include static (from extensions)
Example Package (example_package)
CSS Styled Content (css_styled_content)
Bootstrap Package (bootstrap_package)
Selected Items Available Items
 typo3conf /  ext /  example_package
 Configuration
 PageTS
 TCEFORM.txt
 TypoScript
 setup.txt
 constants.txt
Basic PageTS
Basic Setup
Basic Constants
44 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package
 TCEFORM.txt
## TCEFORM
TCEFORM {
pages {
layout.disabled = 1
}
tt_content {
// NOBODY wants or should edit this
// really, let them disappear
table_bgColor.disabled = 1
table_border.disabled = 1
table_cellspacing.disabled = 1
table_cellpadding.disabled = 1
pi_flexform.table.sDEF {
acctables_nostyles.disabled = 1
acctables_tableclass.disabled = 1
}
}
}
45 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  PageTS
You should really know what you are
doing before adding global PageTS
like in this example. After adding its set
for all Websites in your TYPO3
instance.
See ext_localconf.php as example how
to add PageTS globally.

 constants.txt
## PAGE
page {
template {
# cat=example package: advanced/100/100; type=string; label=Layout Root Path: Path to layouts
layoutRootPath = EXT:example_package/Resources/Private/Layouts/
# cat=example package: advanced/100/110; type=string; label=Partial Root Path: Path to partials
partialRootPath = EXT:example_package/Resources/Private/Partials/
# cat=example package: advanced/100/120; type=string; label=Template Root Path: Path to templates
templateRootPath = EXT:example_package/Resources/Private/Templates/
}
}
46 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  TypoScript
Use TypoScript Constants and
configuration for the Constant Editor to
have your Sitepackage ready for
multisite usage or to easily make
adjustments to your website.

 setup.txt
## DEPENDENCIES
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/static/setup.txt">
47 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  TypoScript
Load the needed TypoScript from
dependant extensions to avoid sorting
of static tempates in the template
record.
To avoid unnecessary work we are
depending css_styled_content for the
content rendering in this example.

 setup.txt
## CONTENT SELECTION
lib.dynamicContent = COA
lib.dynamicContent {
5 = LOAD_REGISTER
5.colPos.cObject = TEXT
5.colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
20 < styles.content.get
20.select.where = colPos={register:colPos}
20.select.where.insertData = 1
90 = RESTORE_REGISTER
}
48 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  TypoScript
Content selection for use in Fluid
cObject ViewHelper with data pass-
through.
<f:cObject
typoscriptObjectPath="lib.dynamicCont
ent“ data="{colPos: '0'}" />

 setup.txt
## PAGE – Part 1
page = PAGE
page {
typeNum = 0
10 = FLUIDTEMPLATE
10 {
file.stdWrap.cObject = CASE
file.stdWrap.cObject {
key.data = levelfield:-1, backend_layout_next_level, slide
key.override.field = backend_layout
default = TEXT
default.value = {$page.template.templateRootPath}Default.html
default.insertData = 1
}
partialRootPath = {$page.template.partialRootPath}
layoutRootPath = {$page.template.layoutRootPath}
}
}
49 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  TypoScript
Page-Templates based
on Fluid for super
easy templating.
BackendLayouts used
to select the Template.

 setup.txt
## PAGE – Part 2
page {
includeCSS {
main = EXT:example_package/Resources/Public/Css/main.css
}
includeJSFooterlibs {
main = EXT:example_package/Resources/Public/JavaScript/main.js
}
}
50 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Configuration /  TypoScript
Include CSS and
JavaScript files with
the EXT: notation from
the extension
directory.

 Resources
 Private
 Layouts
 Default.html
 Templates
 Default.html
 Public
 Css
 main.css
 JavaScript
 main.js
Default Layout
Default Template
Basic CSS
Basic JavaScript
51 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package
 Default.html
<f:render section="Main" />
52 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Resources /  Private /  Layouts
 Default.html
<f:layout name="Default" />
<f:section name="Main">
HELLO WORLD
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}" />
</f:section>
 typo3conf /  ext /  example_package /  Resources /  Private /  Templates
Render the Section

Select the Layout

 main.css
body {
background-color: #ffffff;
color: #333333;
}
53 THE ANATOMY OF SITEPACKAGES
 typo3conf /  ext /  example_package /  Resources /  Public /  Css
 main.js
console.log('I LOVE TYPO3');
 typo3conf /  ext /  example_package /  Resources /  Public /  JavaScript
That is everything you need!
A minimum configuration with 11 files in total.
54 THE ANATOMY OF SITEPACKAGES
Download
github.com/benjaminkott/example_package
55 THE ANATOMY OF SITEPACKAGES

Create your very own
Sitepackage now.
S/PKG/BLD
sitepackagebuilder.com
56 THE ANATOMY OF SITEPACKAGES
57 THE ANATOMY OF SITEPACKAGES
F
Final Words
Wrapping up
Getting to an end.
58 THE ANATOMY OF SITEPACKAGES
It may surprise you…
…but everything you find in this
presentation is not new.
59 THE ANATOMY OF SITEPACKAGES
Questions?
Ask me anything! But not now…I think we don’t have any time left.
60 THE ANATOMY OF SITEPACKAGES
Thank you for your patience
63 slides in 45 minutes, sorry about that.
61 THE ANATOMY OF SITEPACKAGES
Resources
Sitepackage Builder
sitepackagebuilder.com
Example Package
github.com/benjaminkott/example_package
Boostrap Package
github.com/benjaminkott/bootstrap_package
Distribution Management
wiki.typo3.org/Blueprints/DistributionManagement
Extension Architecture
docs.typo3.org/typo3cms/CoreApiReference/ExtensionArchitecture/Index.html
62 THE ANATOMY OF SITEPACKAGES
www.teamwfp.de
 @benjaminkott

Weitere ähnliche Inhalte

Was ist angesagt?

[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi DevelopmentPaul Fiore
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
 
Etl - Extract Transform Load
Etl - Extract Transform LoadEtl - Extract Transform Load
Etl - Extract Transform LoadABDUL KHALIQ
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Cql – cassandra query language
Cql – cassandra query languageCql – cassandra query language
Cql – cassandra query languageCourtney Robinson
 
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱PgDay.Seoul
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLSergey Petrunya
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
Oracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptOracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptChien Chung Shen
 
Alfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfrescoUE
 
In-memory OLTP storage with persistence and transaction support
In-memory OLTP storage with persistence and transaction supportIn-memory OLTP storage with persistence and transaction support
In-memory OLTP storage with persistence and transaction supportAlexander Korotkov
 
DB2 and storage management
DB2 and storage managementDB2 and storage management
DB2 and storage managementCraig Mullins
 
How to use histograms to get better performance
How to use histograms to get better performanceHow to use histograms to get better performance
How to use histograms to get better performanceMariaDB plc
 
Automating business processes and approvals with Microsoft Flow
Automating business processes and approvals with Microsoft FlowAutomating business processes and approvals with Microsoft Flow
Automating business processes and approvals with Microsoft FlowMicrosoft Tech Community
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsAndrei Solntsev
 
Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Markus Höfer
 
Alpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkAlpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkCommit University
 
Hive Authorization
Hive AuthorizationHive Authorization
Hive AuthorizationMinwoo Kim
 
Tuning for Oracle RAC Wait Events
Tuning for Oracle RAC Wait EventsTuning for Oracle RAC Wait Events
Tuning for Oracle RAC Wait EventsConfio Software
 

Was ist angesagt? (20)

[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi Development
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
Etl - Extract Transform Load
Etl - Extract Transform LoadEtl - Extract Transform Load
Etl - Extract Transform Load
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Cql – cassandra query language
Cql – cassandra query languageCql – cassandra query language
Cql – cassandra query language
 
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQL
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
Oracle Database SQL Tuning Concept
Oracle Database SQL Tuning ConceptOracle Database SQL Tuning Concept
Oracle Database SQL Tuning Concept
 
Alfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin Ideas
 
In-memory OLTP storage with persistence and transaction support
In-memory OLTP storage with persistence and transaction supportIn-memory OLTP storage with persistence and transaction support
In-memory OLTP storage with persistence and transaction support
 
DB2 and storage management
DB2 and storage managementDB2 and storage management
DB2 and storage management
 
How to use histograms to get better performance
How to use histograms to get better performanceHow to use histograms to get better performance
How to use histograms to get better performance
 
Automating business processes and approvals with Microsoft Flow
Automating business processes and approvals with Microsoft FlowAutomating business processes and approvals with Microsoft Flow
Automating business processes and approvals with Microsoft Flow
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOps
 
Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016
 
Alpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkAlpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript framework
 
Hive Authorization
Hive AuthorizationHive Authorization
Hive Authorization
 
Tuning for Oracle RAC Wait Events
Tuning for Oracle RAC Wait EventsTuning for Oracle RAC Wait Events
Tuning for Oracle RAC Wait Events
 

Andere mochten auch

Backendlayout mit FLUID-Templates
Backendlayout mit FLUID-TemplatesBackendlayout mit FLUID-Templates
Backendlayout mit FLUID-TemplatesMarcus Schwemer
 
TypoScript für Anfänger
TypoScript für AnfängerTypoScript für Anfänger
TypoScript für Anfängerdie.agilen GmbH
 
Typo Script für Anfänger II - stdWrap
Typo Script für Anfänger II - stdWrapTypo Script für Anfänger II - stdWrap
Typo Script für Anfänger II - stdWrapdie.agilen GmbH
 
Innovationsmotoren für IoT - DWX 2016 - Pluswerk
Innovationsmotoren für IoT - DWX 2016 - PluswerkInnovationsmotoren für IoT - DWX 2016 - Pluswerk
Innovationsmotoren für IoT - DWX 2016 - Pluswerkdie.agilen GmbH
 
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - PluswerkDWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerkdie.agilen GmbH
 
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkTYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringTYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringPeter Kraume
 
Roman Rackwitz - Gamification und OKR
Roman Rackwitz - Gamification und OKRRoman Rackwitz - Gamification und OKR
Roman Rackwitz - Gamification und OKRdie.agilen GmbH
 
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...die.agilen GmbH
 

Andere mochten auch (9)

Backendlayout mit FLUID-Templates
Backendlayout mit FLUID-TemplatesBackendlayout mit FLUID-Templates
Backendlayout mit FLUID-Templates
 
TypoScript für Anfänger
TypoScript für AnfängerTypoScript für Anfänger
TypoScript für Anfänger
 
Typo Script für Anfänger II - stdWrap
Typo Script für Anfänger II - stdWrapTypo Script für Anfänger II - stdWrap
Typo Script für Anfänger II - stdWrap
 
Innovationsmotoren für IoT - DWX 2016 - Pluswerk
Innovationsmotoren für IoT - DWX 2016 - PluswerkInnovationsmotoren für IoT - DWX 2016 - Pluswerk
Innovationsmotoren für IoT - DWX 2016 - Pluswerk
 
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - PluswerkDWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
DWX 2016 - Atomic Design – Frontend und Design im RWD-Zeitalter - Pluswerk
 
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkTYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
 
TYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringTYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoring
 
Roman Rackwitz - Gamification und OKR
Roman Rackwitz - Gamification und OKRRoman Rackwitz - Gamification und OKR
Roman Rackwitz - Gamification und OKR
 
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
Die Entwicklung von Objectives und Key Results (OKR) in Europa | OKR Meetup M...
 

Ähnlich wie The Anatomy of TYPO3 Sitepackages

TYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & EditorTYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & EditorNITSAN Technologies
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package ManagerKlaus Hofeditz
 
TYPO3 Sitepackages - improve TYPO3 Integration
TYPO3 Sitepackages - improve TYPO3 IntegrationTYPO3 Sitepackages - improve TYPO3 Integration
TYPO3 Sitepackages - improve TYPO3 IntegrationChristian Händel
 
TYPO3 6.2. What's new
TYPO3 6.2. What's newTYPO3 6.2. What's new
TYPO3 6.2. What's newRafal Brzeski
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & GithubJump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & Githubhubx
 
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTSCertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTScpsitgmbh
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorializdihara
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsDECK36
 
VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011djmichael156
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityTeamstudio
 
Buying a Ferrari for your teenager? You may want to think twice
Buying a Ferrari for your teenager? You may want to think twiceBuying a Ferrari for your teenager? You may want to think twice
Buying a Ferrari for your teenager? You may want to think twiceAl Zindiq
 
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9Nuno Godinho
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterSuite Solutions
 

Ähnlich wie The Anatomy of TYPO3 Sitepackages (20)

TYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & EditorTYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
TYPO3 + CKEditor: Heaven for TYPO3 Developer & Editor
 
]project-open[ Package Manager
]project-open[ Package Manager]project-open[ Package Manager
]project-open[ Package Manager
 
Spring Framework - III
Spring Framework - IIISpring Framework - III
Spring Framework - III
 
TYPO3 Sitepackages - improve TYPO3 Integration
TYPO3 Sitepackages - improve TYPO3 IntegrationTYPO3 Sitepackages - improve TYPO3 Integration
TYPO3 Sitepackages - improve TYPO3 Integration
 
AtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMSAtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMS
 
TYPO3 6.2. What's new
TYPO3 6.2. What's newTYPO3 6.2. What's new
TYPO3 6.2. What's new
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & GithubJump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & Github
 
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTSCertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
CertiFUNcation 2017 Best Practices Extension Development for TYPO3 8 LTS
 
Intro to OctoberCMS
Intro to OctoberCMSIntro to OctoberCMS
Intro to OctoberCMS
 
Ibm
IbmIbm
Ibm
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
 
Buying a Ferrari for your teenager? You may want to think twice
Buying a Ferrari for your teenager? You may want to think twiceBuying a Ferrari for your teenager? You may want to think twice
Buying a Ferrari for your teenager? You may want to think twice
 
Web technologies part-2
Web technologies part-2Web technologies part-2
Web technologies part-2
 
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
 

Kürzlich hochgeladen

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 

Kürzlich hochgeladen (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 

The Anatomy of TYPO3 Sitepackages

  • 1. THE ANATOMY OF SITEPACKAGES Modern website building in TYPO3
  • 2. Benjamin Kott Front-end Developer at TeamWFP Member of the TYPO3 UX Team Düsseldorf, Germany facebook.com/benjamin.kott twitter.com/benjaminkott github.com/benjaminkott bk2k.info THE ANATOMY OF SITEPACKAGES2
  • 3. Benjamin Kott Front-end Developer at TeamWFP Member of the TYPO3 UX Team Düsseldorf, Germany facebook.com/benjamin.kott twitter.com/benjaminkott github.com/benjaminkott bk2k.info THE ANATOMY OF SITEPACKAGES3 That is Dave. Dave is Frank Näglers personal Minion. Every time Frank commits bullshit to the TYPO3 Core, it was Dave. Dave really, really wanted to be part of this presentation.
  • 4. 4 THE ANATOMY OF SITEPACKAGES Build #6480 (fcec4ef) of TYPO3/TYPO3.CMS@master by Frank Nägler failed in 10 min 32 sec It´s not my fault! Eh. Banana?
  • 5. 5 THE ANATOMY OF SITEPACKAGES Agenda    The what and why? Lots of technical stuff! Final Conclusion.
  • 6. 6 THE ANATOMY OF SITEPACKAGES W The what and why?
  • 7. What is a Sitepackage? It´s all about definition. 7 THE ANATOMY OF SITEPACKAGES
  • 8. Different names for the same @!?#&%§ shit. Base Extension Template Extension Sitepackage Site Foundation Distribution* … 8 THE ANATOMY OF SITEPACKAGES * A Distribution normally contains a pre-set of pages and assets, in this case we will not make use of it. It´s listed for sake of completeness.
  • 9. „A sitepackage is an extension for TYPO3 that contains all relevant configurations for a website.“ 9 THE ANATOMY OF SITEPACKAGES
  • 10. Why should you care about a Sitepackage? It @!?#&%§ works for me™ to put everything in the fileadmin. 10 THE ANATOMY OF SITEPACKAGES
  • 11. Your configuration files are indexed by FAL. All files you upload into the fileadmin are automatically indexed from the file abstraction layer if not disabled. Lots of totally useless records that should not be there at any point. 11 THE ANATOMY OF SITEPACKAGES
  • 12. FAL records are not updated if files are uploaded via FTP. The only way FAL recognizes file changes or deletions is if they are done using the backend or the API directly. Files that are changed outside can cause fatal error, if this file is referenced and deleted via FTP. 12 THE ANATOMY OF SITEPACKAGES
  • 13. 13 THE ANATOMY OF SITEPACKAGES
  • 14. Fileadmin is userspace. Files within the fileadmin directory are edited and maintained by an editor who usually does not have the knowledge to so it properly. It´s better to protect the editor from accidentally breaking a part of the internet. 14 THE ANATOMY OF SITEPACKAGES
  • 15. Configurations should be in your version control. Having the configuration files in the fileadmin is a strong indicator for missing version control. We should talk about that… 15 THE ANATOMY OF SITEPACKAGES
  • 16. 16 THE ANATOMY OF SITEPACKAGES Source: http://www.commitstrip.com/en/2013/11/05/git-svn-ou/
  • 17. You are not able to handle Extension dependencies. Without dependency management you have no idea which extensions and which version is needed to maintain a running website. 17 THE ANATOMY OF SITEPACKAGES
  • 18. Dependencies The Extension Manager is your friend. 18 THE ANATOMY OF SITEPACKAGES For example sitepackage extension could require Bootstrap Package, News & Seo Basics in the newest available version on installation.
  • 19. Your TypoScript Setup and Constants are saved in the template record. The setup and constant field of a template record is the last possibility to override the TypoScript configuration of your TYPO3 page within that record. 19 THE ANATOMY OF SITEPACKAGES
  • 20. 20 THE ANATOMY OF SITEPACKAGES Template Record Static template sorting. Instead of putting your setup and constants directly in the template record or include it there its more easy to make use of Static Templates. General Options Includes Access Template Include static (from extensions) CSS Styled Content (css_styled_content) Selected Items Available Items Bootstrap Package (bootstrap_package) Example Package (example_package) General Options Includes Access Template Constants <INCLUDE_TYPOSCRIPT: source="…"> Setup <INCLUDE_TYPOSCRIPT: source="…"> Static Templates and loading order.
  • 21. Your configuration is @!?#&%§ public accessible. Most users that put their configuration files in the fileadmin folder, forget to protect it from external access. Want so see how not to do it? Bing „fileadmin setup.txt“ or „fileadmin setup.ts“ 21 THE ANATOMY OF SITEPACKAGES
  • 22. plugin.tx_odstwitter_pi1 { consumerKey = XXXXXX consumerSecret = XXXXXX accessToken = XXXXXX accessTokenSecret = XXXXXX } 22 THE ANATOMY OF SITEPACKAGES
  • 23. plugin.ldap.auth { username = admin password = XXXXXX } 23 THE ANATOMY OF SITEPACKAGES
  • 24. You don´t want your configuration to be public accessible! NEVER. EVER. EVERERERERER! 24 THE ANATOMY OF SITEPACKAGES
  • 25. … we could do this for hours. 25 THE ANATOMY OF SITEPACKAGES
  • 26. Benefits of Sitepackages! Yummy, yummy! 26 THE ANATOMY OF SITEPACKAGES
  • 27. Facts Config files editable through file module Config files not accessible by editors Config files are protected * Autoload PageTS Autoload TypoScript Static TypoScript Template Dependency Management Distrubution through TER possible Deployment through Extension Manager Clean Version Control possible Sitepackage           27 THE ANATOMY OF SITEPACKAGES Fileadmin           * Possible but not common practice
  • 28. 28 THE ANATOMY OF SITEPACKAGES T Technical Stuff
  • 29. Structure Stick to the Conventions. 29 THE ANATOMY OF SITEPACKAGES
  • 30. Basic Structure  Classes  Configuration  Documentation  Initialisation  Resources  ext_conf_template.txt  ext_emconf.php  ext_icon.png  ext_localconf.php  ext_tables.php  ext_tables.sql Controller, ViewHelpers TypoScript, PageTS, TCA Manual in reStructuredText format Data / Assets for Fileadmin Templates, Images, CSS, JS, … Extension Manager Configuration Extension Configuration Extension Icon Executed in FE and BE Executed in BE Database Schema 30 THE ANATOMY OF SITEPACKAGES
  • 31.  Classes  Controller  Domain  Model  Repository  Hook  ViewHelpers MVC Controller MVC Domain Model Data Repositorys Core Manipulation Scripts Custom Fluid ViewHelper 31 THE ANATOMY OF SITEPACKAGES
  • 32.  Configuration  PageTS  RTE.txt  TCEFORM.txt  TCA  Overrides  tt_content.php  tx_myext_record.php  TypoScript  setup.txt  constants.txt  .htaccess PageTS for your Website TCA Definition for your own tables TCA Overrides for existing tables TypoScript Static Template Protect your stuff! 32 THE ANATOMY OF SITEPACKAGES
  • 33.  Documentation docs.typo3.org/typo3cms/CoreApiReference/ExtensionArchitecture/Documentation/I ndex.html Call for help! documentation@typo3.org twitter.com/T3docTeam Documentation is hard and we are all really bad in this. It helps you to remember and others to understand what and how things work. 33 THE ANATOMY OF SITEPACKAGES
  • 34.  Initialisation  Files  Images  Example_1.png  Example_2.jpg  Example_3.txt  data.t3d Files added here, they will be copied to fileadmin/extension/ during installation Export of your database it will be imported at page root level during installation 34 THE ANATOMY OF SITEPACKAGES
  • 35.  Resources  Private  Languages  Layouts  Partials  Templates  .htaccess  Public  Css  Images  JavaScript Private protected files XLIFF/XML files for localized labels Main layouts for the views Partial templates for repetitive use Templates for the views Protect your stuff! Public accessible files Any CSS file used by the extension Any images used by the extension Any JS file used by the extension 35 THE ANATOMY OF SITEPACKAGES
  • 36. Minimal Setup Let´s start small. 36 THE ANATOMY OF SITEPACKAGES
  • 37. Example Package Just enough to get the party starting. Extension Dependency to CSS Styled Content Basic TypoScript Basic PageTS Fluid Template CSS file JavaScript file 37 THE ANATOMY OF SITEPACKAGES
  • 38. typo3conf/ext/example_package Head to the directory and create a folder with a name of your choice like „example_package“. This will be the container of your sitepackage and also your extension key. 38 THE ANATOMY OF SITEPACKAGES Extension Directory Your Extension
  • 39.  example_package  Configuration  Resources  ext_emconf.php  ext_icon.png  ext_localconf.php  ext_tables.php TypoScript, PageTS, TCA Templates, Images, CSS, JS, … Extension Configuration Extension Icon Executed in FE and BE Executed in BE 39 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext
  • 40.  ext_emconf.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' => '6.2.12-7.99.99', 'css_styled_content' => '6.2.0-7.99.99', ), 'conflicts' => array( 'fluidpages' => '*', 'themes' => '*', ), ), ); Title A title for your extension. Category Type of category the extension should be listed in. Use template for general usage and distribution for a listing in the distributions section. Dependencies Additional Extensions, for example like a news extension or a specific core version. Conflicts Known issues with other extensions can be placed here to avoid that these extension are running parallel in your system. 40 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package
  • 41.  ext_icon.png 41 THE ANATOMY OF SITEPACKAGES Make it pretty. Please. 64x64 PNG are welcome.  typo3conf /  ext /  example_package
  • 42.  ext_localconf.php if (!defined('TYPO3_MODE')) { die('Access denied.'); } TYPO3CMSCoreUtilityExtensionManagementUtility::addPageTSConfig( '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY . '/Configuration/PageTS/TCEFORM.txt">' ); 42 THE ANATOMY OF SITEPACKAGES Add PageTS by default* * You should really know what you are doing before adding global PageTS. After adding its set for all Websites in your TYPO3 instance.  typo3conf /  ext /  example_package
  • 43.  ext_tables.php if (!defined('TYPO3_MODE')) { die('Access denied.'); } TYPO3CMSCoreUtilityExtensionManagementUtility::addStaticFile( $_EXTKEY, // Extension Key 'Configuration/TypoScript', // Path to setup.txt and constants.txt 'Example Package' // Title in the selector box ); 43 THE ANATOMY OF SITEPACKAGES Add static template to the template record General Options Includes Access Template Include static (from extensions) Example Package (example_package) CSS Styled Content (css_styled_content) Bootstrap Package (bootstrap_package) Selected Items Available Items  typo3conf /  ext /  example_package
  • 44.  Configuration  PageTS  TCEFORM.txt  TypoScript  setup.txt  constants.txt Basic PageTS Basic Setup Basic Constants 44 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package
  • 45.  TCEFORM.txt ## TCEFORM TCEFORM { pages { layout.disabled = 1 } tt_content { // NOBODY wants or should edit this // really, let them disappear table_bgColor.disabled = 1 table_border.disabled = 1 table_cellspacing.disabled = 1 table_cellpadding.disabled = 1 pi_flexform.table.sDEF { acctables_nostyles.disabled = 1 acctables_tableclass.disabled = 1 } } } 45 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  PageTS You should really know what you are doing before adding global PageTS like in this example. After adding its set for all Websites in your TYPO3 instance. See ext_localconf.php as example how to add PageTS globally. 
  • 46.  constants.txt ## PAGE page { template { # cat=example package: advanced/100/100; type=string; label=Layout Root Path: Path to layouts layoutRootPath = EXT:example_package/Resources/Private/Layouts/ # cat=example package: advanced/100/110; type=string; label=Partial Root Path: Path to partials partialRootPath = EXT:example_package/Resources/Private/Partials/ # cat=example package: advanced/100/120; type=string; label=Template Root Path: Path to templates templateRootPath = EXT:example_package/Resources/Private/Templates/ } } 46 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  TypoScript Use TypoScript Constants and configuration for the Constant Editor to have your Sitepackage ready for multisite usage or to easily make adjustments to your website. 
  • 47.  setup.txt ## DEPENDENCIES <INCLUDE_TYPOSCRIPT: source="FILE:EXT:css_styled_content/static/setup.txt"> 47 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  TypoScript Load the needed TypoScript from dependant extensions to avoid sorting of static tempates in the template record. To avoid unnecessary work we are depending css_styled_content for the content rendering in this example. 
  • 48.  setup.txt ## CONTENT SELECTION lib.dynamicContent = COA lib.dynamicContent { 5 = LOAD_REGISTER 5.colPos.cObject = TEXT 5.colPos.cObject { field = colPos ifEmpty.cObject = TEXT ifEmpty.cObject { value.current = 1 ifEmpty = 0 } } 20 < styles.content.get 20.select.where = colPos={register:colPos} 20.select.where.insertData = 1 90 = RESTORE_REGISTER } 48 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  TypoScript Content selection for use in Fluid cObject ViewHelper with data pass- through. <f:cObject typoscriptObjectPath="lib.dynamicCont ent“ data="{colPos: '0'}" /> 
  • 49.  setup.txt ## PAGE – Part 1 page = PAGE page { typeNum = 0 10 = FLUIDTEMPLATE 10 { file.stdWrap.cObject = CASE file.stdWrap.cObject { key.data = levelfield:-1, backend_layout_next_level, slide key.override.field = backend_layout default = TEXT default.value = {$page.template.templateRootPath}Default.html default.insertData = 1 } partialRootPath = {$page.template.partialRootPath} layoutRootPath = {$page.template.layoutRootPath} } } 49 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  TypoScript Page-Templates based on Fluid for super easy templating. BackendLayouts used to select the Template. 
  • 50.  setup.txt ## PAGE – Part 2 page { includeCSS { main = EXT:example_package/Resources/Public/Css/main.css } includeJSFooterlibs { main = EXT:example_package/Resources/Public/JavaScript/main.js } } 50 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Configuration /  TypoScript Include CSS and JavaScript files with the EXT: notation from the extension directory. 
  • 51.  Resources  Private  Layouts  Default.html  Templates  Default.html  Public  Css  main.css  JavaScript  main.js Default Layout Default Template Basic CSS Basic JavaScript 51 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package
  • 52.  Default.html <f:render section="Main" /> 52 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Resources /  Private /  Layouts  Default.html <f:layout name="Default" /> <f:section name="Main"> HELLO WORLD <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}" /> </f:section>  typo3conf /  ext /  example_package /  Resources /  Private /  Templates Render the Section  Select the Layout 
  • 53.  main.css body { background-color: #ffffff; color: #333333; } 53 THE ANATOMY OF SITEPACKAGES  typo3conf /  ext /  example_package /  Resources /  Public /  Css  main.js console.log('I LOVE TYPO3');  typo3conf /  ext /  example_package /  Resources /  Public /  JavaScript
  • 54. That is everything you need! A minimum configuration with 11 files in total. 54 THE ANATOMY OF SITEPACKAGES
  • 56. Create your very own Sitepackage now. S/PKG/BLD sitepackagebuilder.com 56 THE ANATOMY OF SITEPACKAGES
  • 57. 57 THE ANATOMY OF SITEPACKAGES F Final Words
  • 58. Wrapping up Getting to an end. 58 THE ANATOMY OF SITEPACKAGES
  • 59. It may surprise you… …but everything you find in this presentation is not new. 59 THE ANATOMY OF SITEPACKAGES
  • 60. Questions? Ask me anything! But not now…I think we don’t have any time left. 60 THE ANATOMY OF SITEPACKAGES
  • 61. Thank you for your patience 63 slides in 45 minutes, sorry about that. 61 THE ANATOMY OF SITEPACKAGES
  • 62. Resources Sitepackage Builder sitepackagebuilder.com Example Package github.com/benjaminkott/example_package Boostrap Package github.com/benjaminkott/bootstrap_package Distribution Management wiki.typo3.org/Blueprints/DistributionManagement Extension Architecture docs.typo3.org/typo3cms/CoreApiReference/ExtensionArchitecture/Index.html 62 THE ANATOMY OF SITEPACKAGES