-
TER publishing with GitHub Releases in 2025
I've updated my extension publishing workflow based on GitHub Actions and TYPO3 Tailor. The original post was written back in 2021 and has now been updated to reflect the recent changes to GitHub Actions. Furthermore the workflow logic is more stable…
-
Using data handler in upgrade wizards in TYPO3 CMS
I work a lot with TYPO3 Upgrades and often have to write upgrade wizards to migrate certain data. I recently discovered, that it is possible to use the data handler, which is the core component of handling data database actions in the backend, e.g.…
-
CKEditor 5: Base64 encoded embedded images loose src
I have a project, where the customer sometimes pastes images directly into the editor, which then get saved as base64 encoded data url in the `src` attribute. However, I the customer recently stated, that the images disappear after saving, when the…
-
PhpStorm + MacOS: Trying to enter pipe into commit message performs commit
I've had a problem with typing certain special characters in the commit message in PHPStorm on MacOS. I'm using the danish keyboard layout, where Option+I would create the pipe character “|”. Unfortunately the so called mnemonics kick in and perform…
-
Plesk: Nano editor in chroot: Error opening terminal: xterm-256color
I recently came across a strange error, which must have been a combination of my local OS being MacOS and the chroot environment on my server with Plesk. I logged into a user with chroot'ed shell access using SSH. When trying to start nano editor I…
-
MariaDB vs. MySQL 8: GROUP BY sorting wrong
I just fell over some quite funny behaviour. In my local development environment i used MariaDB 10.3. The server environment used MySQL 8.0. I had a query with a `GROUP BY` statement: SELECT SUBSTR(short, 1, 1) AS `char` FROM tx_a21glossary_main…
-
Symfony: Security context in doctrine filters
I one of my recent projects, I wanted to use doctrine filters to dynamically alter queries based on, which role the currently logged-in user had. I wanted to use this to automatically filter inactive entities - based on the `active` property, when…
-
Symfony: Login form on every page
I was working on a Symfony based project, where it should be possible to login from every page and, of course, come page to the original page after successful login. I couldn't find specific in the Symfony documentation about that, but I found…
-
Webpack like manifest.json for Vite
For recent projects I swtiched to Vite for developping and building my frontend asset. I usually integrate the built CSS and JS files into TYPO3, which automatically creates a cache busting/versioning identifier with the files modified timestamp.…
-
FlexForms 2.0 aka Dot Forms
Have you ever dreamed of creating virtual form fields, known as Flex Forms in TYPO3 CMS, but without that awful XML and even more flexible? I definitely have, so I created an extension for this. It's called dot_forms and allows you to define TCA…
-
Multiple domains on the same page tree/site
In one project, the customer wanted to do a branch split by using the same site and page tree for both brands with 99% identical content. I tried to find a way to make TYPO3 respond on both domains with the same page tree and decide the page and…
-
Symfony: Generated UUID in additions to auto incremented id property
In one of my projects I wanted to add a UUID or GUID to one of the models, that already had an `id` property with a generated value (auto increment). Obviously it is not allowed or not possible to use multiple properties with the `@GeneratedValue`…