Seitentitel und Metadaten anpassen mit Daten, die erst im Modul erzeugt werden
cukabeka opened this issue · 1 comments
Wenn ich im Modul erst per URL-Parameter Daten aus der Datenbank hole, kann ich diese Daten nicht ohne Weiteres vorher im Template verwenden.
Im Normalfall ist ein Template ja so aufgebaut, dass es einfach das HTML-Gerüst enthält und dann an den richtigen Stellen aus REDAXO Content eingebaut wird oder das Menü der Headerinformationen:
<!DOCTYPE html>
<html lang="<?= rex_clang::getCurrent()->getCode() ?>">
<head>
...
<title>MeinSeitenTitel</title>
...
</head>
<body>
<navigation>
...
</navigation>
<content>
[REX_ARTICLE] oder <?= $this->getArticle()?>
</content>
</body>
</html>
Nun muss nur das Generieren des Artikels vor die Klammer gezogen werden. Dann wird alles was im Modul passiert VOR dem Aufbau des HTML-Gerippes erfolgen und daraus resultierende Informationen verfügbar sein.
Dazu müssen die Daten im Modul schon via rex::setProperty('ausmodul','defaulttitel')
zwischengespeichert werden, dann ist es auch beim Aufruf im Template via $this->getArticle()
verfügbar.
Im Modul sieht das z.B. so aus:
$eventID = rex_get('eventid','int',0);
$data = \forCal\Handler\forCalHandler::getEntry($eventID);
$project->setProperty('datenausmodul',$data->titel)
Und im Template dann so:
<?php
$content = $this->getArticle();
$navigation = ....
$titel = rex::getProperty('datenausmodul');
?>!DOCTYPE html>
<html lang="<?= rex_clang::getCurrent()->getCode() ?>">
<head>
...
<title><?=$titel?></title>
...
</head>
<body>
<navigation>
<?=$navigation?>
</navigation>
<content>
<?=$content?>
</content>
</body>
</html>