Wenn ihr in einer Situation wie dieser nicht warten möchtet, bis der Maintainer der Extension den Bugfix gemergt hat, könnt ihr übergangsweise auch folgenden Weg gehen, um in einer Composer-basierten Installation automatisiert bei der nächsten Ausführung von composer install
die erforderliche Änderung als Patch einzuspielen:
1. Package cweagans/composer-patches installieren
composer require cweagans/composer-patches
2. Patch-Datei herunterladen indem ihr .diff
an die GitHub-URL des Pull Requests anhängt.
also beispielsweise:
https://github.com/FriendsOfTYPO3/tt_address/pull/554
wird zu:
https://github.com/FriendsOfTYPO3/tt_address/pull/554.diff
GitHub gibt euch mit diesem Feature automatisch genau das Format zurück, dass ihr benötigt, um den Patch einzuspielen.
Das sieht dann im aktuellen Fall so aus:
diff --git a/Classes/FormEngine/TtAddressPreviewRenderer.php b/Classes/FormEngine/TtAddressPreviewRenderer.php
index d860a382..03adf3ea 100644
--- a/Classes/FormEngine/TtAddressPreviewRenderer.php
+++ b/Classes/FormEngine/TtAddressPreviewRenderer.php
@@ -13,6 +13,7 @@
use Doctrine\DBAL\Connection;
use TYPO3\CMS\Backend\Preview\StandardContentPreviewRenderer;
use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
use TYPO3\CMS\Core\Service\FlexFormService;
@@ -42,10 +43,10 @@ class TtAddressPreviewRenderer extends StandardContentPreviewRenderer
],
];
- protected function renderContentElementPreviewFromFluidTemplate(array $row): ?string
+ protected function renderContentElementPreviewFromFluidTemplate(array $row, ?GridColumnItem $item = null): ?string
{
$row = $this->enrichRow($row);
- return parent::renderContentElementPreviewFromFluidTemplate($row);
+ return parent::renderContentElementPreviewFromFluidTemplate($row, $item);
}
protected function enrichRow(array $row): array
3. Die Datei im Projektverzeichnis ablegen. Ich nehme dafür z.B. gerne ein Verzeichnis patches
4. Zusatz in der composer.json
des Projekts ergänzen
"extra": {
"patches": {
"friendsoftypo3/tt-address": {
"[BUGFIX] Make preview renderer compatible with v12.4.17": "patches/tt_address-554.diff"
}
}
},
5. Befehl composer install
ausführen
In der Konsole wird dann das Package neu installiert und direkt danach der Patch mit dem von euch definierten String eingespielt.
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
Gathering patches for root package.
Gathering patches for dependencies. This might take a minute.
- Installing friendsoftypo3/tt-address (8.1.0): Extracting archive
- Applying patches for friendsoftypo3/tt-address
patches/tt_address-554.diff ([BUGFIX] Make preview renderer compatible with v12.4.17)
Falls es noch keinen GitHub Pull Request gibt, dann erstelle einen 😉.
Das kommt am Ende allen Nutzern zugute und geht mindestens genauso schnell wie eine eigene Patch-Datei zu erzeugen.
Falls es sich nicht um ein GitHub Repository handelt und eine ähnliche Funktion auch nicht beim alternativen Git-Anbieter verfügbar ist oder falls du eine Änderung einspielen möchtest, die nur für dein eigenes Projekt Geltung hat, dann kannst du wie hier dokumentiert auch eine Patch-Datei erzeugen per:
diff -ru pfad/zur/bisherigen/extension/ pfad/zur/modifizierten/extension/ > patch_1234.diff
Anschließend müsstest du nurnoch die Ziel-Pfade in der Patch-Datei ersetzen.
pfad/zur/bisherigen/extension/
ersetzen durch a/
und
pfad/zur/modifizierten/extension/
ersetzen durch b/