Modulvariablen in Code und Templates nutzen

in  Basics , ,

Modulvariablen in Code und Templates nutzen

Dieser Beitrag gibt eine kurze Einführung in die Verwendung von Modulvariablen. Diese können dazu verwendet werden, bestimmte Parameter in einem Modul einstellbar zu machen. Typische Beispiel hierfür sind etwa Grenzwerte oder API-Keys für Drittdienste.

Nutzung im Code

Die wichtigsten Grundfunktionen werden von Zikula durch die ModUtil-Klasse bereitgestellt.

1
2
3
4
5
ModUtil::hasVar($modname, $name)
ModUtil::getVar($modname, $name = '', $default = false)
ModUtil::setVar($modname, $name, $value = '')
ModUtil::setVars($modname, array $vars)
ModUtil::delVar($modname, $name = '')

Innerhalb von Klassen, die von Zikula_AbstractBase erben, zum Beispiel in Controller- und API-Klassen, gibt es außerdem Convenience-Methoden, die auf die oben genannten ModUtil-Methoden verweisen.

1
2
3
4
5
6
$this->setVar($key, $value='')
$this->setVars(array $vars)
$this->getVar($key, $default=false)
$this->getVars()
$this->delVar($key)
$this->delVars()

Nutzung im Template

Zikula stellt per Standard jedem Template alle Modulvariablen zur Verfügung. Diese können direkt als Variable benutzt werden. Die folgenden Beispiele beziehen sich auf Smarty, noch nicht auf Twig.

1
Meine ModVar: {$modvars.MeinModul.meineVariable}

Falls man nicht davon ausgehen kann, dass die Variable korrekt initialisiert wurde, sollte man einen Standardwert vorgeben.

1
Meine ModVar: {$modvars.MeinModul.meineVariable|default:'abc'}

Falls man außerdem nicht davon ausgehen kann, dass das Modul überhaupt verfügbar ist, zum Beispiel weil man eine Variable in einem vom Modul unabhängigen Template einsetzen möchte, sollte man dies entsprechend prüfen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{assign var='myVar' value='abc'}
{* entweder *}
{modavailable modname='MeinModul' assign='hasMeinModul'}
{if $hasMeinModul}
    {assign var='myVar' value=$modvars.MeinModul.meineVariable|default:'abc'}
{/if}
{* oder *}
{if isset($modvars.MeinModul)}
    {assign var='myVar' value=$modvars.MeinModul.meineVariable|default:'abc'}
{/if}

Die zweite Variante ist hierbei im Vergleich zur ersten nicht ganz so sauber, weil sie auch dann die Variable des Moduls verwendet, wenn dieses zwar installiert, aber auf inaktiv gestellt ist. In dem Falle sollte eigentlich eher abc verwendet werden.

Weitere Beiträge in Kategorie Basics

CSS-Konzepte spielerisch lernen
- Die Cascading Style Sheets zum Gestalten von Internetseiten und Webanwendungen gibt es schon eine ganze Ewigkeit. Elementare Dinge ändern sich hier vergleichsweise selten. Mit der Umstellung von …
Twig: kleine Syntax-Anpassung mit deutlichem Einspareffekt
- Der folgende Tipp hilft dabei, den Code-Umfang häufiger Abfragen in Twig-Templates zu reduzieren. Dies verbessert die Lesbarkeit enorm und hilft dabei, die Logik in den Templates intuitiver zu …
Funktionale Programmierung in Twig: Collections deklarativ verarbeiten
- Seit kurzem haben neue Funktionen in die Template-Engine Twig Einzug gehalten. Diese verändern die Art und Weise, wie mit mehrwertigen Daten umgegangen wird, fundamental. Aus diesem Grund soll dieser …
Prägnante und strukturierte Stylesheets mit SCSS
- Auch wenn es für einige Leser ein alter Hut ist, so gibt es dennoch sicherlich andere, die noch keine Erfahrungen mit Less oder Sass haben. Daher sei einmal das sehr leicht zu erlernende SCSS (Sassy …
Kategorien in Zikula - weit mehr als nur Themen
- Der Zikula Core enthält eine zentrale Verwaltung für Kategorien, mit denen man vielfältige Lösungen umsetzen kann. Die häufigste Verwendung von Kategorien ist sicherlich eine thematische Zuordnung von …