5.25 Hooks: themes
In diesem Abschnitt beschäftigen wir uns mit den Hooks für die Themes.
Hook: compareThemeFiles
Der compareThemeFiles Hook wir aufgerufen, wenn ein Theme importiert wird und Contao die Unterschiede zwischen der aktuellen Datenbank und der im Import befindlichen Daten anzeigt.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: compareThemeFiles, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\ZipReader;
class ExampleHook {
public function handleHook(\DOMDocument $xml, ZipReader $zip): string
{
// Execute your custom theme comparison
if ($this->doCustomComparison()) {
return $customComparison;
}
return '';
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$xml |
\DOMDocument |
XML Objekt mit den Daten des Themes |
$zip |
\Contao\ZipReader |
Zip Objekt mit den Dateien des Themes |
Rückgabewert:
Typ | Beschreibung |
---|---|
string |
String mit dem HTML, das den Vergleich zeigt |
Referenz im Contao Core: \Contao\Theme.php#L278-L285 und https://github.com/contao/core/pull/7341
Hook: exportTheme
Der exportTheme Hook wir aufgerufen, wenn ein Theme exportiert wird.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: exportTheme, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\ZipWriter;
class ExampleHook {
public function handleHook(\DOMDocument $xml, ZipWriter $zipArchive, int $themeId): void
{
// do dsomething ...
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$xml |
\DOMDocument |
XML Objekt mit den Daten des Themes |
$zipArchive |
\Contao\ZipWriter |
Zip Objekt mit den Dateien des Themes |
$themeId |
integer |
Id des exportierten Themes |
Rückgabewert:
keiner
Referenz im Contao Core: \Contao\Theme.php#L757-L764 und https://github.com/contao/core/pull/7341
Hook: extractThemeFiles
Der extractThemeFiles Hook wir aufgerufen, wenn ein Theme während des Imports entpackt wird.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: extractThemeFiles, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\ZipReader;
class ExampleHook {
public function handleHook(\DOMDocument $xml, ZipReader $zipArchive, int $themeId, array $mapper): void
{
// do dsomething ...
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$xml |
\DOMDocument |
XML Objekt mit den Daten des Themes |
$zipArchive |
\Contao\ZipReader |
Zip Objekt mit den Dateien des Themes |
$themeId |
integer |
Id des exportierten Themes |
$mapper |
array |
Mappingdaten der Datenbank |
Rückgabewert:
keiner
Referenz im Contao Core: \Contao\Theme.php#L683-L692 und https://github.com/contao/core/pull/7341