Smarty

Was ist Smarty

Smarty ist eine Template-Engine für PHP. smarty.net

Smarty Schnipsel

Kommentar

	{* Kommentar *}

if else

	{if $myVar == 'Yes'}...{else}...{/if}

Vergleichsoperatoren

	==
	===
	!=
	>
	>=
	%
	is even
	is not even
	eq

mindestens ein Element

	{if $elements|@count gt 0}...{/if}

Array iterieren mit foreach

	{foreach from=$passesData item=pass key=key}
		value: {$pass.value1}
	{/foreach}

abwechselnd etwas anderes ausgeben mit cycle

	{cycle values="odd, even"}

section zum Hochzählen/Iterieren

	{section name=starLoop start=0 loop=$elem.stars step=1}
		<img class="stars" src="star.png" title="{$elem.stars} {$lang.stars}" alt="{$elem.stars} {$lang.stars}" />
	{/section}

kürzen mit truncate

	{$text|truncate:20}
	{$text|truncate:20:'..':false:false}

Formatierung und Ersetzung

	{$store.km|string_format:"%.2f"|replace:".":","}

===Datumsformatierung=
	{$yesterday|date_format:"%d.%m.%Y"}
	{$time|date_format:"%H:%M"}

nicht parsen/auswerten

	{literal}
		/* Inhalt dazwischen mit geschweiften Klammern { */
		<script type="text/javascript">
			function test() {
				alert('javascript');
			}
		</script>
	{/literal}

Mathematische Operation

	{math equation="x + y" x=$height y=$width}

neue Variable in smarty zuweisen

	{assign var='myName' value=$var.subvar}

Kategorie ausgeben, falls neue Kategorie beginnt

	{assign var='category' value=''}
	{foreach from=$elements item=element}
		{* headline of elements *}
		{if $category != $element.category}
			{assign var='category' value=$element.category}
			<h2>{$category}</h2>
		{/if}
		{* elements *}
		<div>{element.value}</div>
	{/foreach}

Datei einbinden

	{foreach from=$arrProducts item=product key=index name=foo}
		{if $view == 1}
			{include file="view1.tpl" fooIndex=$smarty.foreach.foo.index}
		{else}
			{include file="view2.tpl" fooIndex=$smarty.foreach.foo.index}
		{/if}
	{foreachelse}

Letztes Element

	{foreach from=$arrProducts item=product key=index name=foo}
		<li class="{if $smarty.foreach.foo.last}last{/if}">...</li>
	{/foreach}

Smarty Modifier erstellen

bestehende PHP-Funktion registrieren

	$this->getSmarty()->register_modifier('methodexists', 'checkMethod');

eigene PHP-Funktion registrieren

Methode eines Objekts auf Existenz prüfen

direkt registrieren
	function methodexists($object, $method) {
		if(is_object($object) && method_exists($object, $method)) {
			return true;
		} 
		return false;
	}
	$this->getSmarty()->register_modifier('methodexists', 'checkMethod');
	{if $object|checkMethod:'methodexists'}...{/if}
Inkludierung über den Smarty-Pluginfolder
	function smarty_modifier_methodexists($object,$method) {
		if(is_object($object) && method_exists($object,$method)) {
			return true;
		}
		return false;
	}
	$smarty->plugins_dir[] = 'includes/my_smarty_plugins';
	/* TYPO3 smarty-ext TypoScript:
	smarty {
		plugins_dir = smarty/viewhelper/, EXT:myext/view/viewhelper/
	}
	*/
	{if $object|checkMethod:'methodexists'}...{/if}
====in_array===
	// register function
	class ... {
		function ... {
			$this->getSmarty()->register_function('in_array', 'smarty_function_inarray');
		}
	}
	/* smarty function */
	function smarty_function_inarray($params, &$smarty) {
	  #t3lib_div::debug($params, '$params in smarty_function_inarray');
	  if(!is_array($params['haystack'])) {
		$params['haystack'] = explode(',', $params['haystack']);
	  }
	  if(in_array($params['needle'], $params['haystack'])) {
		return $params['content_if'];
	  }
	  return (!empty($params['content_else'])) ? $params['content_else'] : '';
	}
	{in_array needle=$id haystack=$postVars.uids content_if='checked="checked"'}

is_zero

	function smarty_modifier_iszero($variable) {
	  if($variable === 0 || $variable === '0') {
		return true;
	  }
	  return false;
	}

Wiki-Datei des Artikels herunterladen