Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Pfad vom Originalbild in product info

    itsme

    • Mitglied
    • Beiträge: 137
    Pfad vom Originalbild in product info
    am: 22. Oktober 2011, 08:41:17
    Ich möchte mir ein kleines php Script in die "product_info" einbauen welches einen Teil der Exif Daten ausliest. Das klappt im Test auch ganz gut allerdings fehlt mir eine Variable für das aktuelle Bild in Originalgröße. Und geht das überhaupt mir dem Smarty Zeugs innerhalb der Variablen ?

    Hier der betreffende Teil des Codes.

    Code: PHP  [Auswählen]
    {php}
    $bild="http://www.xxxvvvlll.de/shop/images/product_images/original_images/4633_0.jpg";
    ...
    {/php}

    Ein Versuch war das hier:

    Code: PHP  [Auswählen]
    $bild="{$PRODUCTS_IMAGE|replace:"info_images":"original_images"}";

    aber ohne Erfolg. :-)

    Linkback: https://www.modified-shop.org/forum/index.php?topic=16193.0

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #1 am: 22. Oktober 2011, 12:54:52
    Code: PHP  [Auswählen]
    $bild=$this->get_template_vars('PRODUCTS_IMAGE');

    funktioniert zwar, allerdings wird dabei das Bild aus "info_images" verwendet und nicht das benötigte aus "original_images". :-(

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Pfad vom Originalbild in product_info
    Antwort #2 am: 22. Oktober 2011, 16:36:39
    Hallo itsme,

    eine Frage hätte ich da noch:
    Warum ermittelst Du die Größe der Original Datei nicht in der Datei: "/includes/modules/product_info.php" und übergibst den Wert dann schön formatiert an das Template mit:

    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_IMAGE_SIZE', ...);

    PS: Bitte demnächst für Quellcode den PHP Button nutzen. Müsstest Du aber wissen bist ja schon was länger dabei! :)

    Viele Grüße

    Franky

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #3 am: 22. Oktober 2011, 16:53:06
    Hi Franky, die Größe der Datei interessiert mich doch gar nicht :-)

    Ich möchte einen bestimmten Teil der Exif Daten auslesen und das geht nur im Original Bild, die mit GDLib verkleinerten verlieren den für mich wichtigen Teil (Make, Model, FNumber, FocalLength usw..).

    PHP Button benutze ich nächstes Mal...

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Pfad vom Originalbild in product_info
    Antwort #4 am: 22. Oktober 2011, 17:08:40
    Hallo itsme,

    öhm dann habe ich dieses hier:

    [...] Das klappt im Test auch ganz gut allerdings fehlt mir eine Variable für das aktuelle Bild in Originalgröße. [...]

    wohl anders verstanden als Du es gemeint hast.

    Trotzdem ist es doch egal was Du ausliest! Wenn Du die EXIF Daten so aufbereitest:

    Code: PHP  [Auswählen]
        $info_smarty->assign('PRODUCTS_IMAGE_EXIF', HIER DIE FORMATIERTEN EXIF DATEN REIN);

    bist Du doch schon fertig... :)

    Im Template gibst Du dann an:

    Code: PHP  [Auswählen]
    {if $PRODUCTS_IMAGE_EXIF}{$PRODUCTS_IMAGE_EXIF}{/if}

    Viele Grüße

    Franky

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #5 am: 22. Oktober 2011, 17:40:13
    [...]
    Trotzdem ist es doch egal was Du ausliest! Wenn Du die EXIF Daten so aufbereitest:

    Code: PHP  [Auswählen]
       $info_smarty->assign('PRODUCTS_IMAGE_EXIF', HIER DIE FORMATIERTEN EXIF DATEN REIN);
    [...]

    Also ich denke ich hab's immer noch nicht richtig rübergebracht. Mit deinem Code weise ich der Smarty Variablen PRODUCTS_IMAGE_EXIF einen Wert zu, oder ?

    Ich zeig dir mal den Code den ich jetzt in der "product_info_v1.html" drin habe.

    Nach:

    Code: PHP  [Auswählen]
    <div style="clear:both;"></div><br />
    {/if}

    habe ich eingefügt:

    Code: PHP  [Auswählen]
    <h1 id="artikelheader">Exif Test</h1><br />
    {php}

    $bild=$this->get_template_vars('PRODUCTS_IMAGE');

    $exifdata=exif_read_data($bild,"",true,false);

    if($exifdata["IFD0"])
    {
    print "Kamera Hersteller: {$exifdata["IFD0"]["Make"]}<br />";
    print "Modell: {$exifdata["IFD0"]["Model"]}<br />";
    }

    if($exifdata["FILE"])
    {
    print "Dateiname: {$exifdata["FILE"]["FileName"]}<br />";
    print "Dateigröße: ".number_format($exifdata["FILE"]["FileSize"]/1024, 0, ',', '.')." kb<br />";
    }
    {/php}<br />

    Wenn ein Bild Exif Daten hat dann werden sie auch korrekt angezeigt. "PRODUCTS_IMAGE" nutzt aber den Pfad "info_images". Alles was ich brauche ist der korrekte Pfad in Smarty zu "original_images".

    Das hier habe ich in einem Beitrag gefunden...

    Code: PHP  [Auswählen]
    {$PRODUCTS_IMAGE|replace:"info_images":"original_images"}

    funktioniert zwar auch aber eben nicht innerhalb einer php Variablen, oder ich mach was falsch...

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Pfad vom Originalbild in product_info
    Antwort #6 am: 22. Oktober 2011, 17:48:51
    Hallo itsme,

    nö ich habe Dich schon richtig verstanden... ;)

    Was spricht dagegen php und Template zu trennen? (Was ja eigentlich richtig ist...)

    Ich zeig Dir mal den Code den ich meine: ;)

    Das in die "/includes/modules/products_info.php":

    Code: PHP  [Auswählen]
    $bild = DIR_WS_ORIGINAL_IMAGES.$product->data['products_image'];
    $exifdata=exif_read_data($bild,"",true,false);
    $exif_template_data = "";

    if($exifdata["IFD0"]) {
      $exif_template_data .= "Kamera Hersteller: ".$exifdata["IFD0"]["Make"]."<br />";
      $exif_template_data .= "Modell: ".$exifdata["IFD0"]["Model"]."<br />";
    }

    if($exifdata["FILE"]) {
      $exif_template_data .= "Dateiname: ".$exifdata["FILE"]["FileName"]."<br />";
      $exif_template_data .= "Dateigröße: ".number_format($exifdata["FILE"]["FileSize"]/1024, 0, ',', '.')." kb<br />";
    }

    $info_smarty->assign('PRODUCTS_IMAGE_EXIF', $exif_template_data);

    Dann im Template:

    Code: PHP  [Auswählen]
    {if $PRODUCTS_IMAGE_EXIF}{$PRODUCTS_IMAGE_EXIF}{/if}

    Schwer ne? ;)

    Und das war auch der Grund warum ich Dich falsch verstanden habe:
    In den EXIF Infos gibt es auch die Info zur Originalgröße in px für das Originalbild...

    EDIT: Habe gerade noch mal kurz einen Schreibfehler verbessert.
    "DIR_WS_INFO_IMAGES" musste natürlich "DIR_WS_ORIGINAL_IMAGES" heissen...

    Viele Grüße

    Franky

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #7 am: 22. Oktober 2011, 20:56:12
    [...]
    Schwer ne? ;)
    [...]

    öhmmmm, ja, schon...

    Geht aber nicht. Die Stelle wo etwas stehen soll bleibt leer.

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Pfad vom Originalbild in product_info
    Antwort #8 am: 22. Oktober 2011, 21:09:32
    Hallo itsme,

    dann solltest Du mal vor dem:

    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_IMAGE_EXIF', $exif_template_data);

    mal ausgeben lassen ob der Pfad zu dem Bild und die Daten dort ankommen:

    Code: PHP  [Auswählen]
    echo $bild;
    echo $exif_template_data;

    Und der Quelltext oben sollten am Besten so im Bereich Z. 133 nach dem:

    Code: PHP  [Auswählen]
                    $info_smarty->assign('PRODUCTS_IMAGE', $image);

    eingefügt werden.

    Denn: "Geht aber nicht." hilft hier keinem weiter! ;)

    Kannst auch noch mal anstatt dem:

    Code: PHP  [Auswählen]
    $bild = DIR_WS_ORIGINAL_IMAGES.$product->data['products_image'];

    das probieren:

    Code: PHP  [Auswählen]
    $bild = $product->productImage($product->data['products_image'], 'original');

    Viele Grüße

    Franky

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #9 am: 22. Oktober 2011, 21:23:46
    [...]
    Und der Quelltext oben sollten am Besten so im Bereich Z. 133 nach dem:

    Code: PHP  [Auswählen]
                    $info_smarty->assign('PRODUCTS_IMAGE', $image);
    eingefügt werden.
    [...]

    Ist bei mir zwar Zeile 186 aber genau das war's :-)
    Perfekt, so soll's aussehen. Jetzt muß ich den Hersteller nicht mehr als Kameramodell missbrauchen. Danke dir.

    itsme

    • Mitglied
    • Beiträge: 137
    Re: Pfad vom Originalbild in product_info
    Antwort #10 am: 23. Oktober 2011, 13:41:33
    So, das wären momentan die letzten Änderungen in der "/includes/modules/products_info.php".

    Falls das tatsächlich noch jemand anderes braucht: :-)

    Code: PHP  [Auswählen]
    //BOF - 2011-10-23 - Exif

    $bild = DIR_WS_ORIGINAL_IMAGES.$product->data['products_image'];
    $exifdata=exif_read_data($bild,"",true,false);
    $exif_template_data = "";
         
    if($exifdata["IFD0"]) {
    $exif_template_data .= "Kamera Hersteller: ".$exifdata["IFD0"]["Make"]."<br />";
    $exif_template_data .= "Modell: ".$exifdata["IFD0"]["Model"]."<hr />";
    }
    /*
    if($exifdata["FILE"]) {
    $exif_template_data .= "Dateiname: ".$exifdata["FILE"]["FileName"]."<br />";
    $exif_template_data .= "Dateigröße: ".number_format($exifdata["FILE"]["FileSize"]/1024, 0, ',', '.')." kb<hr />";
    }
    */

    if($exifdata["EXIF"])
    {
    $exif_template_data .= "Aufnahmedatum / Uhrzeit: ".$exifdata["EXIF"]["DateTimeOriginal"]."<br />";
    /*
    $exif_template_data .= "Breite: ".$exifdata["EXIF"]["ExifImageWidth"]." px<br />";
    $exif_template_data .= "H&ouml;he: ".$exifdata["EXIF"]["ExifImageLength"]." px<br />";
    */

    $exif_template_data .= "ISO: ".$exifdata["EXIF"]["ISOSpeedRatings"]."<br />";
    $exif_template_data .= "Blende: ".$exifdata["EXIF"]["FNumber"]."<br />";
    /* $exif_template_data .= "Brennweite: ".$exifdata["EXIF"]["FocalLength"]." mm<br />"; */
    $exif_template_data .= "Brennweite: ".$exifdata["EXIF"]["FocalLengthIn35mmFilm"]." mm<br />";
    $exif_template_data .= "Belichtungsdauer: ".$exifdata["EXIF"]["ExposureTime"]."<hr />";


    // Exposure Programm

    if ($exifdata['EXIF']['ExposureProgram'] == '1')
    {
    $exif_template_data .= "ExposureProgram: Manual<br />";
    }

    elseif ($exifdata['EXIF']['ExposureProgram'] == '2')
    {
    $exif_template_data .= "ExposureProgram: Normal Program<br />";
    }

    elseif ($exifdata['EXIF']['ExposureProgram'] == '3')
    {
    $exif_template_data .= "ExposureProgram: Aperture Priority<br />";
    }

    elseif ($exifdata['EXIF']['ExposureProgram'] == '4')
    {
    $exif_template_data .= "ExposureProgram: Shutter Priority<br />";
    }

    // Contrast

    if ($exifdata['EXIF']['Contrast'] == '0')
    {
    $exif_template_data .= "Contrast: Normal<br />";
    }

    elseif ($exifdata['EXIF']['Contrast'] == '1')
    {
    $exif_template_data .= "Contrast: Soft<br />";
    }

    elseif ($exifdata['EXIF']['Contrast'] == '2')
    {
    $exif_template_data .= "Contrast: Hard<br />";
    }

    // Saturation

    if ($exifdata['EXIF']['Saturation'] == '0')
    {
    $exif_template_data .= "Saturation: Normal<br />";
    }

    elseif ($exifdata['EXIF']['Saturation'] == '1')
    {
    $exif_template_data .= "Saturation: Low<br />";
    }

    elseif ($exifdata['EXIF']['Saturation'] == '2')
    {
    $exif_template_data .= "Saturation: High<br />";
    }

    // Sharpness

    if ($exifdata['EXIF']['Sharpness'] == '0')
    {
    $exif_template_data .= "Sharpness: Normal<br />";
    }

    elseif ($exifdata['EXIF']['Sharpness'] == '1')
    {
    $exif_template_data .= "Sharpness: Soft<br />";
    }

    elseif ($exifdata['EXIF']['Sharpness'] == '2')
    {
    $exif_template_data .= "Sharpness: Hard<br />";
    }

    // ColorSpace

    if ($exifdata['EXIF']['ColorSpace'] == '1')
    {
    $exif_template_data .= "ColorSpace: sRGB<br />";
    }

    // MeteringMode

    if ($exifdata['EXIF']['MeteringMode'] == '1')
    {
    $exif_template_data .= "MeteringMode: Average<br />";
    }

    elseif ($exifdata['EXIF']['MeteringMode'] == '2')
    {
    $exif_template_data .= "MeteringMode: CenterWeightedAverage<br />";
    }

    elseif ($exifdata['EXIF']['MeteringMode'] == '3')
    {
    $exif_template_data .= "MeteringMode: Spot<br />";
    }

    elseif ($exifdata['EXIF']['MeteringMode'] == '4')
    {
    $exif_template_data .= "MeteringMode: MultiSpot<br />";
    }

    elseif ($exifdata['EXIF']['MeteringMode'] == '5')
    {
    $exif_template_data .= "MeteringMode: Pattern<br />";
    }

    elseif ($exifdata['EXIF']['MeteringMode'] == '6')
    {
    $exif_template_data .= "MeteringMode: Partial<br />";
    }

    $exif_template_data .= "Flash: ".$exifdata["EXIF"]["Flash"]."<br />";
    }

    $info_smarty->assign('PRODUCTS_IMAGE_EXIF', $exif_template_data);

    //EOF - 2011-10-23 - Exif

    Kleine Unschönheiten gibt es noch aber da weiß ich noch keine Lösung.

    Bei Blende und Belichtungsdauer wird der Wert mit / angegeben. Warum das nicht direkt mit 5 bzw. 250 angegeben wird kann ich mir nicht erklären.

    Blende: 50/10
    Brennweite: 300 mm
    Belichtungsdauer: 10/2500
    2 Antworten
    2123 Aufrufe
    22. September 2010, 10:21:52 von jogol
    6 Antworten
    2106 Aufrufe
    05. November 2019, 10:36:43 von swolfram [templatix]
    2 Antworten
    2744 Aufrufe
    28. Oktober 2014, 14:15:52 von Frankenstein
    5 Antworten
    421 Aufrufe
    23. Februar 2024, 12:43:19 von awids
               
    anything