Hallo zusammen,
ich habe hier ein kleines (oder großes?) Template Problem – es wird mit PHP-Templates und Contao 4.13.xx gearbeitet – ich bin leider nicht auf eine passendere Überschrift gekommen.
Das Templating steckt in einer Dritt-Extension. Es wird ein Template für eine PDF-Generierung geparst.
Das Grundtemplate heißt pdf_base und hat diesen strukturellen Aufbau:
PHP-Code:
<!DOCTYPE html>
<html lang="<?php echo $this->locale ?>">
<head>
<?php $this->block('head'); ?>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $this->charset; ?>" />
[...]
<?php $this->endblock(); ?>
</head>
<body>
<?php $this->block('header'); ?>
<?php echo $this->header; ?>
<?php $this->endblock(); ?>
<?php $this->block('body'); ?>
<?php echo $this->body; ?>
<?php $this->endblock(); ?>
<?php $this->block('footer'); ?>
<?php echo $this->footer; ?>
<?php $this->endblock(); ?>
</body>
</html>
Ich würde jetzt gerne in Abhängigkeit des Templates, das in „body“ eingeparst wird, den Header und Footer leeren.
Beispiel:
Wird in body "Template 1" eingeparst, soll der Header und Footer ebenfalls eingeparst werden, wird "Template 2" in body eingeparst, sollen Header und Footer geleert werden.
Ich habe mich nun schon einige Stunden durchgewühlt, habe aber nichts passendes gefunden. In den jeweiligen Templates kann ich mit $this->getName() den jeweils eigenen Namen bestimmen, das bringt mir aber nichts.
Ich habe das jetzt ziemlich unschön (oder kreativ ) gelöst, in dem ich folgendes mache:
In Template 2.html:
PHP-Code:
if (!function_exists('doNotUseHeader')) { function doNotUseHeader() { } }
if (!function_exists('doNotUseFooter')) { function doNotUseFooter() { } }
und im pdf_base folgendes:
PHP-Code:
if (function_exists('doNotUseHeader')) $doNotUseHeader = TRUE; else $doNotUseHeader = FALSE;
if (function_exists('doNotUseFooter')) $doNotUseFooter = TRUE; else $doNotUseFooter = FALSE;
[...]
<?php $this->block('header'); ?>
<?php if (!$doNotUseHeader) { echo $this->header; } ?>
<?php $this->endblock(); ?>
[...]
<?php $this->block('footer'); ?>
<?php if (!$doNotUseFooter) { echo $this->footer; } ?>
<?php $this->endblock(); ?>
Das klappt, "fühlt" sich aber ziemlich schlecht an - ich bin so gar nicht damit zufrieden :-)
Mit den Hooks OutputBackendTemplate, OutputFrontendTemplate, ParseTemplate bin ich auch nicht weiter gekommen - da habe ich auch nichts gefunden, was mir hätte weiter helfen können.
Hat jemand eine bessere Idee?
Grüße
Sebastian
Lesezeichen