SlideShare a Scribd company logo
1 of 43
Download to read offline
LITTLE GEMS IN TYPO3 V12
Little Gems in TYPO3 v12
Features and changes that didn’t make the headlines
@jigalvh
Jigal van Hemert
jigal.van.hemert@typo3.org
Who is this guy?
▪︎ TYPO3 developer at MaxServ
▪︎ Working with TYPO3 since v3.8 (?)
▪︎ Translations of core labels in Dutch
▪︎ Shares home with wife and ten dogs
READY
TypoScript / TSCon
fi
g
New stdwrap.if options
If now supports contains, startsWith and endsWith
10 = TEXT
10 {
value = The contact page
if {
value.data = page:title
startsWith = Contact
}
}
New cObject EXTBASEPLUGIN
With the new object there is no need to define the userfunc and a USER object
10 = EXTBASEPLUGIN
10 {
extensionName = myextension
pluginName = myplugin
}
This provides better structure to configuration and allows to change Extbase
bootstrap in the future.
Copy page access settings from parent
If there are custom owner/group settings and access patterns for parts of the
pagetree and these need to be set to new subpages there is a new value
copyFromParent.
TCEMAIN.permissions.userid = copyFromParent
TCEMAIN.permissions.groupid = copyFromParent
TCEMAIN.permissions.user = copyFromParent
TCEMAIN.permissions.group = copyFromParent
TCEMAIN.permissions.everybody = copyFromParent
Additional attributes for TS Include*
All the page.include* properties now support custom additional attributes.
page = PAGE
page {
includeCSSLibs {
myIncludeFile = someFile.css
myIncludeFile.data-foo = plaap
}
}
TypoScript option to render all links absolute
If all links, images, assets need absolute URLs (e.g. emails other static pages) a
new option forces this.
config.forceAbsoluteUrls = 1
Backend
Grid view in Filelist
Drag and drop in Filelist
CLEVER
Site con
fi
guration (yaml) in backend
In the module Configuration it’s now
possible to see the resulting
configuration of Sites, including
routing configuration, languages, and
so on.
Con
fi
gurable Password policies
Frontend and backend separate
configuration. Policy classes can be
extended.
Manage
fi
lemounts in Backend Users module
In the module Backend Users it’s now
possible to create, edit, remove
Filemounts.
Task groups can be edited in Scheduler module
Fluid
Fluid ‘trim’ ViewHelper
<f:format.trim> Value to be trimmed. </f:format.trim>
<f:format.trim side=“left|right|both”>
<f:format.trim characters=“Tu.”>
Performs PHP functions ltrim() / rtrim() / trim()
Fluid ‘countrySelect’ ViewHelper
<f:form.countrySelect
name=“country”
value=“NL”
errorClass=“lang-wrong”
sortByOptionLabel=“true”
optionLabelField=“localizedName”
prioritizedCountries=“{0: ‘NL’, 1: ‘BE’}”
/>
There is a class CountryProvider to retrieve country information in code.
(Also available in Form framework)
Development
Symfony Poly
fi
ll packages
▪︎ Also in older versions of TYPO3
▪︎ Code can use functions from newer PHP versions (not language constructs)
▪︎ Example: PHP 8.3 function json_validate() can already be used
Settings.php can be read-only *)
If Settings.php is read-only the Install Tool displays the edit fields as disabled.
A
ft
er deploying the file can be read-only to prevent any changes by admins via
the Install Tool.
*) Patch pending to fix a bug in this feature
Automatic database
fi
eld for slugs
Fields with TCA type ‘slug’ are also automatically created in the database (if
they are not defined in the ext_tables.sql file).
Database column type ‘json’ support (1)
▪︎ insert(), update(), bulkInsert()
▪︎ value can be array, will be automatically converted
ext_tables.sql:
CREATE TABLE tx_myextension_domain_model_foo (
col1 varchar(100) DEFAULT '',
col2 json
);
Database column type ‘json’ support (2)
TCA type ‘json’ allows editing (using T3Editor if that is available)
Simple query parameters for Extbase BE modules
Query parameters without namespaces can be used in BE modules based on
Extbase.
To disable this for an extension:
module.tx_myextension {
features {
enableNamespacedArgumentsForBackend = 1
}
}
SWITCH
DataProcessors tagged with short name for TS
DataProcessors can be tagged and the tag can be used as name in TS. This also
enables DI. In Services.yaml:
VendorMyExtensionDataProcessingFooProcessor:
tags:
- { name: ‘data.processor’, identifier:
‘powerfoo’ }
In TypoScript:
dataProcessing.10 = powerfoo
Easier tagging of backend controllers
Previously in Services.yaml:
VendorMyExtControllerSomeBackendController:
tags: [‘backend.controler’]
Alternative:
use TYPO3CMSBackendAttributeController;
#[Controller]
class SomeBackendController {}
Easier registration of upgrade wizard
Register upgrade wizard throught PHP custom attribute.
use TYPO3CMSInstallAttributeUpgradeWizard;
#[UpgradeWizard('fooUpgradeWizard')]
class FooUpgradeWizard implements
UpgradeWizardInterface {}
Yaml import supports glob patterns
Example:
imports:
- { resource: "./**/*.yaml", glob: true }
- { resource: "EXT:core/Tests/**/Configuration/**/
SiteConfigs/*.yaml", glob: true }
API to read site settings (1)
In older versions:
$redirectSettings = $site
->getConfiguration()[‘settings']['redirects'] ?? [];
API to read site settings (2)
Now:
$siteSettings = $site->getSettings();
$redirectSettings = $siteSettings->get(‘redirects’);
TypoScript:
page.10 = TEXT
page.10.data = siteSettings:redirects.httpStatusCode
Language fallback for content (1)
The fallback type ‘fallback’ now works for content too.
▪︎ Works in TypoScript and Extbase
▪︎ Only with fallbackType = fallback
▪︎ Stops at default language (with weird fallback chains)
Fallback types ☞
Language fallback for content (2)
strict:
Only renders content that is translated in the target language or created in that
language. Keeps sorting behaviour from default language.
free:
Only looks at content in target language, ignores sorting behaviour from
default language.
Language fallback for content (3)
fallback:
If page is not available (or not even created) in target language it follows the
fallback chain.
For each content part it’s checked if it’s available in the target language,
otherwise fallback chain is checked.
POWERRRR
One more thing…
Magic methods in Extbase repositories are deprecated!!
Methods like findBy<Property>(), findOneBy<Property>(),
countBy<Property>() are marked as deprecated. In v13 deprecation
notices will be triggered and they will be removed in v14.
New:
findBy([‘propertyName’ => $propertyValue]);
findOneBy([‘propertyName’ => $propertyValue]);
count([‘propertyName’ => $propertyValue]);
Questions?
Or gems that you found?
Thank you!

More Related Content

What's hot

What's hot (20)

JavaScript Control Statements I
JavaScript Control Statements IJavaScript Control Statements I
JavaScript Control Statements I
 
MYSQL - PHP Database Connectivity
MYSQL - PHP Database ConnectivityMYSQL - PHP Database Connectivity
MYSQL - PHP Database Connectivity
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
 
Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
Php.ppt
Php.pptPhp.ppt
Php.ppt
 
Node.js File system & Streams
Node.js File system & StreamsNode.js File system & Streams
Node.js File system & Streams
 
Php and MySQL
Php and MySQLPhp and MySQL
Php and MySQL
 
Cookies and sessions
Cookies and sessionsCookies and sessions
Cookies and sessions
 
CodeIgniter & MVC
CodeIgniter & MVCCodeIgniter & MVC
CodeIgniter & MVC
 
Java script
Java scriptJava script
Java script
 
Javascript
JavascriptJavascript
Javascript
 
PL/SQL
PL/SQLPL/SQL
PL/SQL
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 EditionGoing Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
 
Clean code
Clean codeClean code
Clean code
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
Computer graphics programs in c++
Computer graphics programs in c++Computer graphics programs in c++
Computer graphics programs in c++
 
Sql Injection Myths and Fallacies
Sql Injection Myths and FallaciesSql Injection Myths and Fallacies
Sql Injection Myths and Fallacies
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 

Similar to Little Gems in TYPO3 v12

Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin GeneratorJohn Cleveley
 
WebClient Customization.pdf
WebClient Customization.pdfWebClient Customization.pdf
WebClient Customization.pdfsatyasekhar123
 
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
 
Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handlingSuite Solutions
 
Testing the frontend
Testing the frontendTesting the frontend
Testing the frontendHeiko Hardt
 
Dependency injection in Drupal 8
Dependency injection in Drupal 8Dependency injection in Drupal 8
Dependency injection in Drupal 8Alexei Gorobets
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0Masashi Umezawa
 
AD215 - Practical Magic with DXL
AD215 - Practical Magic with DXLAD215 - Practical Magic with DXL
AD215 - Practical Magic with DXLStephan H. Wissel
 
Mule data weave_10
Mule data weave_10Mule data weave_10
Mule data weave_10kunal vishe
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Phpfunkatron
 
Speed up your developments with Symfony2
Speed up your developments with Symfony2Speed up your developments with Symfony2
Speed up your developments with Symfony2Hugo Hamon
 
Dexterity in the Wild
Dexterity in the WildDexterity in the Wild
Dexterity in the WildDavid Glick
 
Puppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfPuppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfDavid Danzilio
 
Developing Drizzle Replication Plugins
Developing Drizzle Replication PluginsDeveloping Drizzle Replication Plugins
Developing Drizzle Replication PluginsPadraig O'Sullivan
 
Intake 38 data access 5
Intake 38 data access 5Intake 38 data access 5
Intake 38 data access 5Mahmoud Ouf
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3Javier Eguiluz
 
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015die.agilen GmbH
 

Similar to Little Gems in TYPO3 v12 (20)

Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin Generator
 
WebClient Customization.pdf
WebClient Customization.pdfWebClient Customization.pdf
WebClient Customization.pdf
 
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
 
Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handling
 
Testing the frontend
Testing the frontendTesting the frontend
Testing the frontend
 
Dependency injection in Drupal 8
Dependency injection in Drupal 8Dependency injection in Drupal 8
Dependency injection in Drupal 8
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0
 
AD215 - Practical Magic with DXL
AD215 - Practical Magic with DXLAD215 - Practical Magic with DXL
AD215 - Practical Magic with DXL
 
Mule data weave_10
Mule data weave_10Mule data weave_10
Mule data weave_10
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Php
 
Speed up your developments with Symfony2
Speed up your developments with Symfony2Speed up your developments with Symfony2
Speed up your developments with Symfony2
 
Dexterity in the Wild
Dexterity in the WildDexterity in the Wild
Dexterity in the Wild
 
Puppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfPuppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConf
 
AtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMSAtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMS
 
Developing Drizzle Replication Plugins
Developing Drizzle Replication PluginsDeveloping Drizzle Replication Plugins
Developing Drizzle Replication Plugins
 
Intake 38 data access 5
Intake 38 data access 5Intake 38 data access 5
Intake 38 data access 5
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3
 
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015
What's new in TYPO3 6.2 LTS - #certiFUNcation Alumni Event 05.06.2015
 
Mongo-Drupal
Mongo-DrupalMongo-Drupal
Mongo-Drupal
 

More from Jigal van Hemert

More from Jigal van Hemert (7)

Fun with fluid (TYPO3camp RheinRuhr 2019)
Fun with fluid (TYPO3camp RheinRuhr 2019)Fun with fluid (TYPO3camp RheinRuhr 2019)
Fun with fluid (TYPO3camp RheinRuhr 2019)
 
Build your own Upgrade Wizard
Build your own Upgrade WizardBuild your own Upgrade Wizard
Build your own Upgrade Wizard
 
Little gems in TYPO3 v9
Little gems in TYPO3 v9Little gems in TYPO3 v9
Little gems in TYPO3 v9
 
Fun with fluid_t3dd18
Fun with fluid_t3dd18Fun with fluid_t3dd18
Fun with fluid_t3dd18
 
Ddev workshop t3dd18
Ddev workshop t3dd18Ddev workshop t3dd18
Ddev workshop t3dd18
 
My Wife's Website
My Wife's WebsiteMy Wife's Website
My Wife's Website
 
New Little Gems in TYPO3 v8
New Little Gems in TYPO3 v8New Little Gems in TYPO3 v8
New Little Gems in TYPO3 v8
 

Recently uploaded

StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfsteffenkarlsson2
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAlluxio, Inc.
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMok TH
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAShane Coughlan
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfMehmet Akar
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionMohammed Fazuluddin
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfSrushith Repakula
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfQ-Advise
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1KnowledgeSeed
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)Max Lee
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionWave PLM
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfWSO2
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...naitiksharma1124
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Andrea Goulet
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfFurqanuddin10
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfDeskTrack
 

Recently uploaded (20)

Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
AI Hackathon.pptx
AI                        Hackathon.pptxAI                        Hackathon.pptx
AI Hackathon.pptx
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptx
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion Production
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 

Little Gems in TYPO3 v12

  • 1. LITTLE GEMS IN TYPO3 V12
  • 2. Little Gems in TYPO3 v12 Features and changes that didn’t make the headlines @jigalvh Jigal van Hemert jigal.van.hemert@typo3.org
  • 3. Who is this guy? ▪︎ TYPO3 developer at MaxServ ▪︎ Working with TYPO3 since v3.8 (?) ▪︎ Translations of core labels in Dutch ▪︎ Shares home with wife and ten dogs
  • 6. New stdwrap.if options If now supports contains, startsWith and endsWith 10 = TEXT 10 { value = The contact page if { value.data = page:title startsWith = Contact } }
  • 7. New cObject EXTBASEPLUGIN With the new object there is no need to define the userfunc and a USER object 10 = EXTBASEPLUGIN 10 { extensionName = myextension pluginName = myplugin } This provides better structure to configuration and allows to change Extbase bootstrap in the future.
  • 8. Copy page access settings from parent If there are custom owner/group settings and access patterns for parts of the pagetree and these need to be set to new subpages there is a new value copyFromParent. TCEMAIN.permissions.userid = copyFromParent TCEMAIN.permissions.groupid = copyFromParent TCEMAIN.permissions.user = copyFromParent TCEMAIN.permissions.group = copyFromParent TCEMAIN.permissions.everybody = copyFromParent
  • 9. Additional attributes for TS Include* All the page.include* properties now support custom additional attributes. page = PAGE page { includeCSSLibs { myIncludeFile = someFile.css myIncludeFile.data-foo = plaap } }
  • 10. TypoScript option to render all links absolute If all links, images, assets need absolute URLs (e.g. emails other static pages) a new option forces this. config.forceAbsoluteUrls = 1
  • 12. Grid view in Filelist
  • 13. Drag and drop in Filelist
  • 15. Site con fi guration (yaml) in backend In the module Configuration it’s now possible to see the resulting configuration of Sites, including routing configuration, languages, and so on.
  • 16. Con fi gurable Password policies Frontend and backend separate configuration. Policy classes can be extended.
  • 17. Manage fi lemounts in Backend Users module In the module Backend Users it’s now possible to create, edit, remove Filemounts.
  • 18. Task groups can be edited in Scheduler module
  • 19. Fluid
  • 20. Fluid ‘trim’ ViewHelper <f:format.trim> Value to be trimmed. </f:format.trim> <f:format.trim side=“left|right|both”> <f:format.trim characters=“Tu.”> Performs PHP functions ltrim() / rtrim() / trim()
  • 23. Symfony Poly fi ll packages ▪︎ Also in older versions of TYPO3 ▪︎ Code can use functions from newer PHP versions (not language constructs) ▪︎ Example: PHP 8.3 function json_validate() can already be used
  • 24. Settings.php can be read-only *) If Settings.php is read-only the Install Tool displays the edit fields as disabled. A ft er deploying the file can be read-only to prevent any changes by admins via the Install Tool. *) Patch pending to fix a bug in this feature
  • 25. Automatic database fi eld for slugs Fields with TCA type ‘slug’ are also automatically created in the database (if they are not defined in the ext_tables.sql file).
  • 26. Database column type ‘json’ support (1) ▪︎ insert(), update(), bulkInsert() ▪︎ value can be array, will be automatically converted ext_tables.sql: CREATE TABLE tx_myextension_domain_model_foo ( col1 varchar(100) DEFAULT '', col2 json );
  • 27. Database column type ‘json’ support (2) TCA type ‘json’ allows editing (using T3Editor if that is available)
  • 28. Simple query parameters for Extbase BE modules Query parameters without namespaces can be used in BE modules based on Extbase. To disable this for an extension: module.tx_myextension { features { enableNamespacedArgumentsForBackend = 1 } }
  • 30. DataProcessors tagged with short name for TS DataProcessors can be tagged and the tag can be used as name in TS. This also enables DI. In Services.yaml: VendorMyExtensionDataProcessingFooProcessor: tags: - { name: ‘data.processor’, identifier: ‘powerfoo’ } In TypoScript: dataProcessing.10 = powerfoo
  • 31. Easier tagging of backend controllers Previously in Services.yaml: VendorMyExtControllerSomeBackendController: tags: [‘backend.controler’] Alternative: use TYPO3CMSBackendAttributeController; #[Controller] class SomeBackendController {}
  • 32. Easier registration of upgrade wizard Register upgrade wizard throught PHP custom attribute. use TYPO3CMSInstallAttributeUpgradeWizard; #[UpgradeWizard('fooUpgradeWizard')] class FooUpgradeWizard implements UpgradeWizardInterface {}
  • 33. Yaml import supports glob patterns Example: imports: - { resource: "./**/*.yaml", glob: true } - { resource: "EXT:core/Tests/**/Configuration/**/ SiteConfigs/*.yaml", glob: true }
  • 34. API to read site settings (1) In older versions: $redirectSettings = $site ->getConfiguration()[‘settings']['redirects'] ?? [];
  • 35. API to read site settings (2) Now: $siteSettings = $site->getSettings(); $redirectSettings = $siteSettings->get(‘redirects’); TypoScript: page.10 = TEXT page.10.data = siteSettings:redirects.httpStatusCode
  • 36. Language fallback for content (1) The fallback type ‘fallback’ now works for content too. ▪︎ Works in TypoScript and Extbase ▪︎ Only with fallbackType = fallback ▪︎ Stops at default language (with weird fallback chains) Fallback types ☞
  • 37. Language fallback for content (2) strict: Only renders content that is translated in the target language or created in that language. Keeps sorting behaviour from default language. free: Only looks at content in target language, ignores sorting behaviour from default language.
  • 38. Language fallback for content (3) fallback: If page is not available (or not even created) in target language it follows the fallback chain. For each content part it’s checked if it’s available in the target language, otherwise fallback chain is checked.
  • 41. Magic methods in Extbase repositories are deprecated!! Methods like findBy<Property>(), findOneBy<Property>(), countBy<Property>() are marked as deprecated. In v13 deprecation notices will be triggered and they will be removed in v14. New: findBy([‘propertyName’ => $propertyValue]); findOneBy([‘propertyName’ => $propertyValue]); count([‘propertyName’ => $propertyValue]);