Seite 1 von 1

neue smarty für product_info

Verfasst: Do 10. Jun 2010, 17:23
von Josef
Hallo,
wie stelle ich es an, dass ich in die product_info.html eine neue Funktion einbringe?
Ich möchte einen barcode aus products_ean generieren.
Es soll also ein script aufgerufen werden, das den barcode generiert.
Die Darstellung möchte ich als smarty verfügbar haben, wie z.B. {$PRODUCTS_MODEL}

Möglich?

Re: neue smarty für product_info

Verfasst: Do 10. Jun 2010, 18:00
von Doc Olson
http://www.smarty.net/manual/de/plugins.php

Im Ordner 'smarty' des Template Ordners eine neue Datei anlegen. Z.B. 'function.barcode.php'. Dann muss die enthaltene Funktion folgendermaßen aufgebaut sein:

Code: Alles auswählen

function smarty_function_barcode($parms, $smarty)
{
   $ean = $parms['ean'];
   // hier folgt der Code zur Generierung des Barcodes

   return $result;
}
$result muss dann das Endergebnis enthalten. Du kannst aber auch innerhalb des Codes z.B. den HTML Tag eines Bildes per echo ausgeben... je nachdem wie der Barcode generiert wird. Würde sich auch empfehlen da einen Cache-Mechanismus einzubauen, sodass die generierte Bild-Datei (ich nehme an, der Barcode wird als Bild generiert) nicht bei jedem Aufruf neu erstellt wird.

Anwendung im Template:

Code: Alles auswählen

{barcode ean=$PRODUCTS_EAN}

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 08:44
von Josef
hallo Doc,
vielen Dank.

Noch ne Frage:
Wie kann ich den barcode mit der "jetzt kaufen" Funktion hinterlegen?

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 09:02
von Doc Olson
Josef hat geschrieben:Wie kann ich den barcode mit der "jetzt kaufen" Funktion hinterlegen?
Sorry, verstehe nicht, was Du meinst.

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 09:09
von Josef
mein Ziel ist einen barcode zu generieren, der gescannt (oder geklickt) werden kann, und der Artikel dann im WK liegt, genau so wie beim Kaufen Button.

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 15:08
von Josef
ok, läuft soweit,
nur ein Problem habe ich, dass ich den Pfad so angeben muss:

Code: Alles auswählen

<?php
  function smarty_function_barcode($parms, $smarty) {
    global $PHP_SELF;
    $barcodephp = 'http://www.domain.de/php-barcode-0.3pl1/barcode.php';
    $ean = $parms['ean'];
    $id = $parms['id'];

    $result = '
      <a href="' . xtc_href_link(basename($PHP_SELF), 'action=buy_now&BUYproducts_id=' . $id . '&' . xtc_get_all_get_params(array ('action')), 'NONSSL') . '">
        <img src="' . $barcodephp . '?code=' . $ean . '&encoding=EAN&scale=1&mode=png" width="108" height="40" alt="Barcode" title="Mit Barcode bestellen" />
      </a>';

    return $result;
  }
?>
Außerdem kann ich den title-tag nicht mit: {$PRODUCTS_NAME} angeben, es wird der Text ausgegeben.

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 15:47
von yogi
Hi,

Du befindest dich ja jetzt in der Smarty-Funktion "barcode", dort kannst Du nciht mit den Template-Variablen arbeiten da diese nicht interpretiert werden.

Am sinnvollsten ist es den Title-Text ebenfalls an die Funktion zu übergeben (im Template) und diesen dann so wie $ean und $id aus $parms zu nehmen.

Code: Alles auswählen

{barcode ean=$PRODUCTS_EAN id=$PRODUCTS_ID title="$PRODUCTS_NAME"}

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 16:02
von Doc Olson
yogi hat geschrieben:Hi,

Du befindest dich ja jetzt in der Smarty-Funktion "barcode", dort kannst Du nciht mit den Template-Variablen arbeiten da diese nicht interpretiert werden.

Am sinnvollsten ist es den Title-Text ebenfalls an die Funktion zu übergeben (im Template) und diesen dann so wie $ean und $id aus $parms zu nehmen.

Code: Alles auswählen

{barcode ean=$PRODUCTS_EAN id=$PRODUCTS_ID title="$PRODUCTS_NAME"}
Besser:

Code: Alles auswählen

{barcode ean=$PRODUCTS_EAN id=$PRODUCTS_ID title=$PRODUCTS_NAME}
Ohne Anführungszeichen

Re: neue smarty für product_info

Verfasst: Fr 11. Jun 2010, 16:07
von Josef
danke an Doc und Yogi,

Ich werds mal ausgiebig testen.
ist das eventuell auch eine Erweiterung für den webshop?