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}