[2025 Aufrufe]

5.24 Hooks: template

In diesem Abschnitt beschäftigen wir uns mit den Hooks für die Templates.

Hook: compileArticle

Der compileArticle Hook wurde bereits unter "Hooks: article" besprochen.

Hook: modifyFrontendPage

Der modifyFrontendPage Hook wir aufgerufen, wenn ein Frontendtemplate ausgegeben wird.

Es ist zu beachten, dass der Hook erst nach dem Ersetzen der InsertTags aufgerufen wird. Wird ein Hook benötigt, der vor dem Ersetzen der InsertTags aufgerufen werden soll, kann der outputFrontendTemplate verwendet werden.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: modifyFrontendPage, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(string $buffer, string $templateName): string
    {
        if ('fe_page' === $templateName) {
            // Modify $buffer
        }

        return $buffer;
    }
}

Parameter:

Parameter Typ Beschreibung
$buffer string Inhalt des Template
$templateName string Name des Templates

Rückgabewert:

Typ Beschreibung
string Inhalt des Template

Referenz im Contao Core: \Contao\FrontendTemplate#L132-L140 und https://github.com/contao/core/issues/4291

Hook: outputBackendTemplate

Der outputBackendTemplate Hook wir aufgerufen, wenn ein Backendtemplate ausgegeben wird.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: outputBackendTemplate, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(string $buffer, string $templateName): string
    {
        if ('be_main' === $templateName) {
            // Modify $buffer
        }

        return $buffer;
    }
}

Parameter:

Parameter Typ Beschreibung
$buffer string Inhalt des Template
$templateName string Name des Templates

Rückgabewert:

Typ Beschreibung
string Inhalt des Template

Referenz im Contao Core: \Contao\BackendTemplate#L141-L149

Hook: outputFrontendTemplate

Der outputFrontendTemplate Hook wir aufgerufen, wenn ein Frontendtemplate ausgegeben wird.

Es ist zu beachten, dass der Hook vor dem Ersetzen der InsertTags aufgerufen wird. Wird ein Hook benötigt, der erst nach dem Ersetzen der InsertTags aufgerufen werden soll, kann der modifyFrontendPage verwendet werden.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: outputFrontendTemplate, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(string $buffer, string $templateName): string
    {
        if ('fe_page' === $templateName) {
            // Modify $buffer
        }

        return $buffer;
    }
}

Parameter:

Parameter Typ Beschreibung
$buffer string Inhalt des Template
$templateName string Name des Templates

Rückgabewert:

Typ Beschreibung
string Inhalt des Template

Referenz im Contao Core: \Contao\FrontendTemplate#L118-L126

Hook: parseArticles

Der parseArticles Hook wurde bereits unter "Hooks: modules" besprochen.

Hook: parseBackendTemplate

Der parseBackendTemplate Hook wir aufgerufen, wenn ein Backendtemplate verarbeitet wird.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: parseBackendTemplate, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(string $buffer, string $templateName): string
    {
        if ('be_main' === $templateName) {
            // Modify $buffer
        }

        return $buffer;
    }
}

Parameter:

Parameter Typ Beschreibung
$buffer string Inhalt des Template
$templateName string Name des Templates

Rückgabewert:

Typ Beschreibung
string Inhalt des Template

Referenz im Contao Core: \Contao\BackendTemplate#L35-L43

Hook: parseFrontendTemplate

Der parseFrontendTemplate Hook wir aufgerufen, wenn ein Frontendtemplate verarbeitet wird.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: parseFrontendTemplate, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

use Contao\FrontendTemplate;

class ExampleHook {

    public function handleHook(string $buffer, string $templateName, FrontendTemplate $template): string
    {
        if ('ce_text' === $templateName) {
            // Modify $buffer
        }

        return $buffer;
    }
}

Parameter:

Parameter Typ Beschreibung
$buffer string Inhalt des Template
$templateName string Name des Templates
$template \Contao\FrontendTemplate Instanz des Template

Den Parameter $template gibt es erst ab Contao 4.9.21!

Rückgabewert:

Typ Beschreibung
string Inhalt des Template

Referenz im Contao Core: \Contao\FrontendTemplate#L45-L53

Hook: parseTemplate

Der parseTemplate Hook wir aufgerufen, bevor ein Template verarbeitet wird.

Registrierung

# /src/Ctocb/Example/Resources/config/services.yml
services:

  # Hooks
  Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
    public: true
    tags:
      - { name: contao.hook, hook: parseTemplate, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

use Contao\Template;

class ExampleHook {

    public function handleHook(Template $template): void
    {
        if ('fe_page' === $template->getName() || 0 === strpos($template->getName(), 'fe_page_')) {
            $template->foobar = 'foobar';
        }
    }
}

Parameter:

Parameter Typ Beschreibung
$template \Contao\Template Instanz des Template

Rückgabewert:

keiner

Referenz im Contao Core: \Contao\Template#L290-L298