Smarty Grundlagen

Smarty, xt:Commerce Add comments

Hallo! Für Newbies ist Smarty sicherlich ein schweres Ding. Muss aber nicht sein. Hier einige Grundlagen.

In der PHP-Datei die Variable setzen:
$smarty->assign('VARIABLENNAME', WERTDERVARIABLE);
Und die Benutzung in der Template-Datei:
{$VARIABLENNAME}

Feststellen, ob eine Variable existiert:
{if $VARIABLENNAME}Ausgabe: bin da!{/if}

Vergleichen der Variable mit einem String:
{if $VARIABLENNAME eq "hallo"}Ausgabe: wir sind gleich!{/if}

Etwas in der Ausgabe ersetzen, z.B. Buttons von ‘.jpg’ auf ‘.png’ umstellen:
{$VARIABLENNAME:replace:".jpg":".png"}
Oder auch ganz gut, Cursor “Hand” beim Druckbutton, ist leider falsch in dem XT-Release, soll ‘pointer’ heißen:
{$PRODUCTS_PRINT|replace:"cursor:hand":"cursor:pointer"}
Config-Datei laden (muss als erstes in der html-Datei sein):
{config_load file="$language/lang_$language.conf" section="SECTIONNAME"}
Section sind in der Sprachdatei “lang/SPRACHE/SPRACHE.php” sieht so aus:
[SECTIONNAME]
Variable = 'Wert'

Benutzung von Config-Daten:
{#Variable#}
Übrigens geht auch:
{#Variable#|replace:"alt":"neu"}

Meine Empfehlung: Eigene Smarty-Modifier (also so wie ‘replace’). Wie man die einbaut, wird hier sehr gut erklärt:
http://www.gunnart.de/tipps-und-tricks/smarty-modifier-fuer-xtcommerce-mehr-uebersicht-bei-der-template-programmierung/

Gelesen? Dann geht’s weiter:

Ein Button-Modifier ist für eigene Templates nützlich, um Vorschriften von XT über Format und Größe der Buttons zu überschreiben.
<?php
function smarty_modifier_btn($input) {
$ret = $input;
$ret = str_replace(".gif", ".png", $ret);
$ret = str_replace('width="120"', '', $ret);
return $ret;
}
?>

Die zugehörige Datei muss “modifier.btn.php” heißen (wo? erst den Beitrag von Gunnart lesen!)
Einsetzen kann man bei allen Buttons:
{$module_data.PRODUCTS_BUTTON_BUY_NOW|btn}

Wenn jemand ein Bild aus dem Template extern laden will, z.B. aus der E-Mail:
{php} echo HTTP_SERVER."/templates/".CURRENT_TEMPLATE."/img/deinBild.jpg"; {/php}

Das war’s fürs Erste.

So kann ein HTML-Template geladen und angezeigt werden:
$smarty->display(CURRENT_TEMPLATE.'/boxes/box_meineboxodermodul.html');

Und nun ein kleines Beispiel. Wir erstellen ein Smarty-Objekt und laden ein HTML-Template (Datei als .php im Root-Verzeichnis abspeichern):
<?php
include ('includes/application_top.php');
$smarty = new Smarty();
$smarty->assign('meinevariable', 12345);
$smarty->caching = 0;
$smarty->display(CURRENT_TEMPLATE.'/test.html');
?>

Der Inhalt der html-Datei wäre z.B.:
Die Variable hat den Wert <b>{$meinevariable}</b>

Wenn man im Template ist, also in der html-Datei, kann man auch weiterhin auf smarty zugreifen, z.B. neue Variable setzen:
{php} $this->assign("error",$_REQUEST['error']); {/php}

Und ganz unauffällig kommt etwas Werbung..

2 Responses to “Smarty Grundlagen”

  1. tarlo Says:

    Welche “smarties” kämen dafür in Frage: ich hätte gerne in einer product_listing_xx.html ein Eingabefeld für Bestellmenge und eine Variante des Jetzt kaufen-Buttons, der diesen Wert direkt in den Warenkorb befördert, die Warenkorb-Box aktualisiert, ohne in die Warenkorblistenansicht zu wechseln. Es sollten so mehrfache Bestellungen von einer Seite aus möglich werden. Bin für Anregungen dankbar - viele, viele, bunte smarties…. Gruss Tarlo

  2. IWEG Datacom » Blog Archive » Smarty (und xt:commerce) Says:

    […] http://www.waaza.eu/07/02/2008/smarty-grundlagen/ beschreibt die Basics. Also wirklich so eine Art Cheat-Sheet für Smarty […]

Leave a Reply

WP Theme & Icons by N.Design Studio
Internetservice Köln
Entries RSS Comments RSS Anmelden