[789 Aufrufe]

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