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.

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.

$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.

Meine ModVar: {$modvars.MeinModul.meineVariable}

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

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.

{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

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 …
Probleme mit Error Tracking proaktiv erkennen
- Sobald ein Programm oder eine Internetseite erst einmal produktiv verwendet wird, stellt sich heraus, ob alle Eventualitäten bedacht sind oder ob doch etwas nicht berücksichtigt worden ist. Spätestens …
Batch-Verarbeitung von Modulen mit der Bash
- In diesem Beitrag wird gezeigt, wie man eine ganze Reihe von Modulen automatisch mit Hilfe eines Bash-Skriptes neu generieren kann. Auch die Übersetzungen der Module können automatisch neu generiert …
Standalone Generator im ersten Praxistest
- Gastbeitrag von Ralf Köster Habt ihr schon mitbekommen, dass es seit 0.7.3 auch einen standalone Generator gibt? Sicherlich habt ihr dass, aber ihr fragt euch, was ihr damit machen könnt? Ich versuche …