Hooks: modules
In diesem Abschnitt beschäftigen wir uns mit den Hooks für die Module.
Hook: activateAccount
Der activateAccount Hook wurde bereits unter "Hooks: member" besprochen.
Hook: checkCredentials
Der checkCredentials Hook wurde bereits unter "Hooks: member" besprochen.
Hook: closeAccount
Der closeAccount Hook wurde bereits unter "Hooks: member" besprochen.
Hook: compileArticle
Der compileArticle Hook wurde bereits unter "Hooks: article" besprochen.
Hook: createNewUser
Der createNewUser Hook wurde bereits unter "Hooks: member" besprochen.
Hook: customizeSearch
Der customizeSearch Hook wird aufgerufen, wenn ein Forntend-Mitglied die Suche benutzt.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: customizeSearch, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\Module;
class ExampleHook {
public function handleHook(array &$pageIds, string $keywords, string $queryType, bool $fuzzy, Module $module): void
{
// Change the $pageIds array here or do some other adjustments ...
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$pageIds |
array |
Ids der Seiten die durchsucht werden |
$keywords |
string |
String mit den Suchworten |
$queryType |
string |
Abfragetyp (and oder or ) |
$fuzzy |
bool |
Bei einer unscharfen Suche true sonst false |
$module |
\Contao\Module |
Instanz des Moduls, dass die Suche ausgelöst hat |
Rückgabewert:
Keiner, da $pageIds
per Referenz übergeben wird.
Referenz im Contao Core: \Contao\ModuleSearch#L132-L140 und https://github.com/contao/core/issues/5223
Hook: findCalendarBoundaries
Der findCalendarBoundaries Hook wurde bereits unter "Hooks: calendar" besprochen.
Hook: generateBreadcrumb
Mit dem generateBreadcrumb Hook kann man die Brodkrumennavigation anpassen.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: generateBreadcrumb, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\Module;
class ExampleHook {
public function handleHook(array $items, Module $module)
{
// Modify $items ...
return $items;
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$items |
array |
Elemente der Navigation |
$module |
\Contao\Module |
Instanz des Moduls, dass die Navigation aufbaut |
Rückgabewert:
Typ | Beschreibung |
---|---|
array |
Elemente der Navigation |
Die einzelnen Einträge des Arrays müssen die folgende Struktur haben:
Parameter | Typ | Beschreibung |
---|---|---|
isRoot |
bool |
Muss true sein, wenn es sich um eine Startseite handelt, sonst false |
isActive |
bool |
Muss true sein, wenn es sich um die aktive Seite handelt, sonst false |
href |
string |
Url des Eintrags |
title |
string |
Titleatribut des Links |
link |
string |
Text des Links |
data |
array |
Assoziative Array mit den Daten der Seite aus tl_page , auf die der Link verweist |
class |
string |
CSS-Klasse für den Eintrag |
Referenz im Contao Core: \Contao\ModuleBreadcrumb.php#L212-L220
Hook: getAllEvents
Der getAllEvents Hook wurde bereits unter "Hooks: calendar" besprochen.
Hook: getFrontendModule
Der getFrontendModule Hook wurde bereits unter "Hooks: controller" besprochen.
Hook: newsListCountItems
Wenn die News-Ergebnisse mittels newsListFetchItems
-Hook manuell gefilter werden, muss zusätzlich der
newsListCountItems Hook aufgerufen werden, um die
richtige Anzahl gefundener Elemente anzuzeigen.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: newsListCountItems, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\Module;
class ExampleHook {
public function handleHook(array $newsArchives, bool $featuredOnly, Module $module)
{
if (true) { // do here somtthing usefull!
// Query the database and return the number of records
return $numberOfRecords;
}
return false;
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$newsArchives |
array |
Ids der Archive die angezeigt werden sollen |
$featuredOnly |
bool |
Bei true werden nur die Favoriten angezeigt |
$module |
\Contao\Module |
Instanz des Moduls, dass den Aufruf ausgelöst hat |
Rückgabewert:
Typ | Beschreibung |
---|---|
int oder false |
Anzahl der gefundenen Beiträge, oder false |
Referenz im Contao Core: \Contao\ModuleNewsList#L168-L183
Hook: newsListFetchItems
Mit dem newsListFetchItems Hook können die News-Beiträge manuell gefiltert oder sortiert werden.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: newsListFetchItems, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\Module;
class ExampleHook {
public function handleHook(array $newsArchives, ?bool $featuredOnly, int $limit, int $offset, Module $module)
{
if (true) { // do here something usefull
// Query the database and return the records
return \Contao\NewsModel::findBy(/* ... */);
}
return false;
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$newsArchives |
array |
Ids der Archive die angezeigt werden |
$featuredOnly |
bool |
Bei true werden nur die Favoriten angezeigt |
$limit |
integer |
Das im Modul definierte Limit |
$offset |
integer |
Der im Modul definierte Versatz |
$module |
\Contao\Module |
Instanz des Moduls, dass den Aufruf ausgelöst hat |
Rückgabewert:
Typ | Beschreibung |
---|---|
\Contao\Model\Collection oder false oder null |
Gefundenen Beiträge, oder null wenn keine Beiträge gefunden wurden, oder false wenn der Hook keine Verarbeitung durchführt |
Referenz im Contao Core: \Contao\ModuleNewsList#L200-L215
Hook: parseArticles
Der parseArticles Hook wird aufgerufen, wenn ein Artikel gerendert wird.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: parseArticles, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
use Contao\FrontendTemplate;
use Contao\Module;
class ExampleHook {
public function handleHook(FrontendTemplate $template, array $newsEntry, Module $module)
{
// Remove the default "by ..." from Contao
$template->author = UserModel::findByPk($newsEntry['author'])->name;
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$template |
\Contao\FrontendTemplate |
Instanz des zu renderden Templates |
$newsEntry |
array |
Daten der einzelnen News aus der Datenbank |
$module |
\Contao\Module |
Instanz des Moduls, dass den Aufruf ausgelöst hat |
Rückgabewert:
Keiner, da $template
als Referenz übergeben wird.
Referenz im Contao Core: \Contao\ModuleNews#L217-L225
Hook: printArticleAsPdf
Der printArticleAsPdf Hook wurde bereits unter "Hooks: article" besprochen.
Hook: removeRecipient
Der removeRecipient Hook wird aufgerufen, wenn ein Newsletterempfänger gelöscht wird.
Registrierung
# /src/Ctocb/Example/Resources/config/services.yml
services:
# Hooks
Ctocb\Example\Classes\Contao\Hooks\ExampleHook:
public: true
tags:
- { name: contao.hook, hook: removeRecipient, method: handleHook, priority: 1024 }
Klasse
<?php
namespace Ctocb\Example\Classes\Contao\Hooks;
class ExampleHook {
public function handleHook(string $email, array $channels): void
{
// Do something ...
}
}
Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
$email |
string |
E-Mail-Adresse des zu löschenden Empfängers |
$channels |
array |
Newsletterarchive, aus denen der Empfänger gelöscht wird |
Rückgabewert:
keinen
Referenz im Contao Core: \Contao\ModuleUnsubscribe#L262-L270
Hook: setNewPassword
Der setNewPassword Hook wurde bereits unter "Hooks: backend" besprochen.
Hook: updatePersonalData
Der updatePersonalData Hook wurde bereits unter "Hooks: member" besprochen.