forum Sea of Sin / Startseite sitemap

Sea of Sin / Blog

Zentrum der Langeweile

Smarty else Modifier

2011/06/09 von de_henne
Im großen und ganze nutze ich die Template Engine Smarty. Mittlerweile hab ich sie auch lieb gewonnen und bin meist zufrieden damit. Sie ist schnell erweiterbar und die Community ist recht aktiv.
Nun, ich hatte des öfteren das Problem, das es eine Variable oder Eigenschaft eines Objektes geben kann oder auch nicht und ich dann ein Platzhalter anzeigen lassen sollte.

Natürlich gibt es auch ein kleines Fallbeispiel damit das ganze etwas klarer wird. Zur Zeit bin ich am Re-Design von www.nexgam.de, hier gibt es Spiele, die verschiedene Eigenschaften besitzen. Regionalcode, Auflösung, Herz usw. Diese Eigenschaften sind aber nicht zwingend vorhanden. Bei der Darstellung soll nun ein – (Strich, Minus) angezeigt werden, damit das Feld nicht einfach leer ist.

Die eigentliche Vorgehensweise wäre:
  1. {if $var}{$var}{else}-{/if}

Bei Objekten ist das ganze noch etwas länger:
  1. {if $Object->attribute}{$Object->attribute}{else}-{/if}

Ich fand auch keine Alternativen die etwas einfacher sind, daher dachte ich mir, es wäre doch schön wenn {$var|else:“-“} gehen würde.

Also hab ich kurzerhand folgenden modifier gebaut:

  1. <?php
  2. /**
  3.  * Smarty plugin
  4.  * @package Smarty
  5.  * @subpackage plugins
  6.  */
  7.  
  8. /**
  9.  * Smarty else modifier plugin
  10.  *
  11.  * Type: modifier<br>
  12.  * Name: else<br>
  13.  * Date: Jun 9, 2011
  14.  * Purpose: setzt alternative falls variable false oder leer ist
  15.  * Input: string
  16.  * Example: {$var|else:"..."}
  17.  *
  18.  * @author PCSG Henning - www.pcsg.de
  19.  * @version 1.0
  20.  * @param string
  21.  * @param string
  22.  *
  23.  * @return string
  24.  */
  25. function smarty_modifier_else($string, $else)
  26. {
  27. if (empty($string) || !$string) {
  28. return $else;
  29. }
  30.  
  31. return $string;
  32. }
  33.  
  34. ?>


und fertig :-)
Vielleicht hat ja noch jemand Spass daran.

  • Keine Kommentare