Template Settings in allen Template-Dateinen verfügbar machen
Problem
index.html inkludiert weitere Template-Dataien mit
{fetch template="template/topBar.html" Menu=$Menu User=$User Avatar=$Avatar Search=$Search Template=$Template}
<!-- (...) -->
{fetch template="template/page.html"
showBreadcrumb=$showBreadcrumb
header=$header
pageTitle=$pageTitle
BricksManager=$BricksManager
Site=$Site
paymentsData=$paymentsData
shortText=$shortText
urlList=$urlList
featuredProducts=$featuredProducts
Template=$Template
}
Problematisch dabei ist, dass man jedes mal die Template Settings (oder auch Objekte) weitergeben muss. template/page.html holt sich weitere kleinere tpl Dateien.
Lösung 1
Neues $Setting Objekt erstellen, als Template Attribute zuweisen...
/**
* Own object container for template settings
* Smarty example: {$Template->getAttribute('TemplateSetting')->getAttribute('navPos')}
*/
$Setting = new \QUI\QDOM();
$Setting->setAttributes($templateSettings);
$Template->setAttribute('TemplateSetting', $Setting);
und dann in den jeweiligen Template-Dateien abfragen. Etwas umständlich.
{assign var=Settings value=$Template->getAttribute('TemplateSetting')}
<!-- (...) -->
{if $Settings->getAttribute('includeDemoCss')}
<link href="{$Template->getTemplateUrl('bin/css/demo.css')}" rel="stylesheet" type="text/css"/>
{/if}
Lösung 2
TemplateSetting als globales Template Parameter zuweisen.
QUI::getTemplateManager()->assignGlobalParam('TemplateSettings', $TemplateSettings);
So kann man das direkt in Template-Datei verwenden:
{if $TemplateSettings->getAttribute('includeDemoCss')}
<link href="{$Template->getTemplateUrl('bin/css/demo.css')}" rel="stylesheet" type="text/css"/>
{/if}