[621 Aufrufe]

5.19 Hooks: page

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

Hook: generateFrontendUrl

Der generateFrontendUrl Hook wurde bereits unter "Hooks: controller" besprochen.

Hook: generatePage

Der generateFrontendUrl Hook wird aufgerufen, bevor das Haputlayput (fe_page) 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: generatePage, method: handleHook, priority: 1024 }

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

use Contao\PageRegular;
use Contao\LayoutModel;
use Contao\PageModel;

class ExampleHook {

    public function handleHook(PageModel $pageModel, LayoutModel $layout, PageRegular $pageRegular): void
    {
        // Do something ...
    }
}

Parameter:

Parameter Typ Beschreibung
$pageModel \Contao\PageModel Instanz des Models der aktuellen Seite
$layout \Contao\LayoutModel Instanz des aktiven Seitenlayouts
$pageRegular \Contao\PageRegular Instanz des aktuellen Seitentyps

Rückgabewert:

keiner

Referenz im Contao Core: \Contao\PageRegular#L193-L201

Hook: getPageLayout

Der getPageLayout Hook wird aufgerufen, wenn eine normale Seite generiert wird.

Registrierung

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

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

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

use Contao\PageRegular;
use Contao\LayoutModel;
use Contao\PageModel;

class ExampleHook {

    public function handleHook(PageModel $pageModel, LayoutModel $layout, PageRegular $pageRegular): void
    {
        // Modify the page or layout object
    }
}

Parameter:

Parameter Typ Beschreibung
$pageModel \Contao\PageModel Instanz des Models der aktuellen Seite
$layout \Contao\LayoutModel Instanz des aktiven Seitenlayouts
$pageRegular \Contao\PageRegular Instanz des aktuellen Seitentyps

Rückgabewert:

keiner

Referenz im Contao Core: \Contao\PageRegular#L244-L252 und https://github.com/contao/core/issues/4736

Hook: getPageStatusIcon

Der getPageStatusIcon Hook wurde bereits unter "Hooks: controller" besprochen.

Hook: indexPage

Der indexPage Hook wird aufgerufen, wenn der Inhalt einer Seite zum Suchindex hinzugefügt wird.

Registrierung

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

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

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

class ExampleHook {

    public function handleHook(string $content, array $pageData, array &$indexData): void
    {
        // Modify $indexData which will eventually be stored in tl_search
    }
}

Parameter:

Parameter Typ Beschreibung
$content string Inhalt der Seite
$pageData array Array mit den Daten der indexierten Seite
$indexData array Array mit den gesammelten Daten

Rückgabewert:

Keiner, da $indexData per Referenz übergeben wird.

Referenz im Contao Core: \Contao\Search#L128-L135

Hook: loadPageDetails

Der loadPageDetails Hook wird aufgerufen, wenn die Details einer Seite geladen werden.

Dieser Hook wurde in Contao 4.8 hinzugefügt!

Registrierung

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

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

Klasse

<?php

namespace Ctocb\Example\Classes\Contao\Hooks;

use Contao\PageModel;

class ExampleHook {

    public function handleHook(array $parentModels, PageModel $page): void
    {
        // Add additional data from the root page to the processed page
        if (count($parentModels) > 0) {
            $rootPage = end($parentModels);
            $page->myCustomVariable = $rootPage->myCustomRootVariable;
        }
    }
}

Parameter:

Parameter Typ Beschreibung
$parentModels array Array mit den Daten aller Elternseiten der untersuchten Seite
$page \Contao\PageModel Instanz des Models der Seite

Rückgabewert:

Keiner, da $page per Referenz übergeben wird.

Referenz im Contao Core: \Contao\PageModel#L1021-L1035