neue smarty für product_info

Du hast ein PHP-Code Problem und benötigst Hilfe bei der Lösung
Antworten
Josef
Beiträge: 41
Registriert: Fr 28. Mai 2010, 17:13

neue smarty für product_info

Beitrag 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?
Doc Olson
Beiträge: 536
Registriert: Mo 10. Mai 2010, 08:54

Re: neue smarty für product_info

Beitrag 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}
Josef
Beiträge: 41
Registriert: Fr 28. Mai 2010, 17:13

Re: neue smarty für product_info

Beitrag von Josef »

hallo Doc,
vielen Dank.

Noch ne Frage:
Wie kann ich den barcode mit der "jetzt kaufen" Funktion hinterlegen?
Doc Olson
Beiträge: 536
Registriert: Mo 10. Mai 2010, 08:54

Re: neue smarty für product_info

Beitrag von Doc Olson »

Josef hat geschrieben:Wie kann ich den barcode mit der "jetzt kaufen" Funktion hinterlegen?
Sorry, verstehe nicht, was Du meinst.
Josef
Beiträge: 41
Registriert: Fr 28. Mai 2010, 17:13

Re: neue smarty für product_info

Beitrag 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.
Josef
Beiträge: 41
Registriert: Fr 28. Mai 2010, 17:13

Re: neue smarty für product_info

Beitrag 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.
yogi
Administrator
Beiträge: 292
Registriert: Do 6. Mai 2010, 14:16
Shop Version: die aktuelle
Wohnort: Köln
Kontaktdaten:

Re: neue smarty für product_info

Beitrag 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"}
Doc Olson
Beiträge: 536
Registriert: Mo 10. Mai 2010, 08:54

Re: neue smarty für product_info

Beitrag 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
Josef
Beiträge: 41
Registriert: Fr 28. Mai 2010, 17:13

Re: neue smarty für product_info

Beitrag von Josef »

danke an Doc und Yogi,

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