-
Extending the domain model of the blog extension
Extending the domain model of existing extension has always been a pain in the ... you know. Extbase is unfortunately lacking this very importance feature. But... luckily evoWeb created the `extender` extension, which exatly fills this gap, as they…
-
Serializing Symfony security user object
In one of my projects I used the VichUploaderBundle. The model with the file property is itself a property to my User class. The user object get's serialized and derserialized during request lifecycle. Because of this I ran into the quite familiar…
-
Automatic cache clearing, when editing any record
In a recent project I wanted to clear caches for pages, that display certain records, when one of these records was updated. In this case it was courses and the available sessions. I found out, that TYPO3 already does some automatic cache clearing,…
-
TER publishing with GitHub Releases
I'm a big fan of automated releases procedures. That's why I wanted to use GitHub Actions and GitHub releases for publishing my extension to the TER. There is already a great tool for talking to the TER: Tailor. One challenge gave some…
-
Auto-redirect on slug change: Default status code
TYPO3 CMS used 307 as the default status code for redirects, both when creating them via the "Redirects" module and when auto-creating them on slug changes. In my opinion this I a kind of odd decision. 307 would make the browser use the same request…
-
.gitignore: Correctly specifying ignore and exclude patterns
I was trying to make git ignore some directories but exclude certain file and directories within it. My directory structure was as follows: . └── public ├── index.php └── typo3conf ├── AdditionalConfiguration.Development.php …
-
Deferred image processing for TYPO3 CMS
In one of my recent projects I tried to generate images with the <picture> tag and different image sources for different screensizes and pixel densities. This led to about 10 different image sources per included file, which dramatically increased…
-
Ansible + passwordstore: Creating, storing and distributing SSH key pairs
There are many situations where you need or want to use SSH keys for connecting to a server. This could be automatic software deployment (continuous deployment) or backup. I was looking for a way to create, securely store and distribute the…
-
CKEditor 4: Style set with multiple classes not showing
I ran into a problem recently, where I wanted to add a style set, that adds multiple classes. In my case it was for a link (button), that should have the classes button button--primary button--big. But every time I added the button--big, the style…
-
OpenSSL not working correctly in Alpine based PHP docker images
Mainly because of the significantly smaller size I'm currently switching to Alpine-Linux based docker images. In connection with PHP images (PHP-FPM as well as CLI) I stepped onto an issue with the OpenSSL extension for PHP which seemed not to work…
-
PhpStorm: JavaScript code completion not working correctly
Those who work a lot with TYPO3 and probably work a lot with TypoScript may also have the file extension *.ts assigned to the TypoScript file type. Those wo also do frontend development, meaning writing JavaScript, may have noticed, that the…
-
Safari: AJAX bug with `fetch`
When we do not have to support for old browser like the Internet Explorer, we can finally use new technologies. Though it is bad, if even a modern browser fails with those technologies. In my case I tried to use fetch for the first time. fetch is…