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: ANLEITUNG: Prozent & NEW - Flags bei Produkten

    iriedaily

    • Fördermitglied
    • Beiträge: 14
    Hier eine Möglichkeit wie man bei seinen Produktbilden eine Flag setzen kann, ob der Artikel neu ist oder um wie viel Prozent dieser reduziert wurde:

    Für Shopversion 1.05 (Für 1.06 hängt am Ende des Beitrags eine neue Anleitung):

    dazu in der "/includes/classes/product.php" vor "return array ('PRODUCTS_NAME' =>...." (ca. Zeile 415) das hier einfügen/ergänzen:

    Code: PHP  [Auswählen]
    if ($array['products_date_added'] != '0000-00-00 00:00:00' && MAX_DISPLAY_NEW_PRODUCTS_DAYS != '0') {
        $date_new_products = date("Y-m-d", mktime(1, 1, 1, date("m"), date("d") - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date("Y")));

        if ($date_new_products." 00:00:00"> $array['products_date_added']) {
            $product_isnew = ''; //Produkt ist alt
        } else {
            $product_isnew = '1'; //Produkt ist neu
        }
    }

    in das Konstrukt "return array ('PRODUCTS_NAME' =>...." das hier eingfügen:

    Code: PHP  [Auswählen]
    'PRODUCTS_OLDNEW'=>$product_isnew,
    'PRODUCTS_PRICE_P' => $products_price['percent'],

    In Datei "/includes/classes/xtcPrice.php" suchen:

    Code: PHP  [Auswählen]
            function xtcFormatSpecial($pID, $sPrice, $pPrice, $format, $vpeStatus = 0) {
                    if ($format) {
    //BOF - Dokuman - 2009-06-03 - show 'ab' / 'from' for the lowest price, not for the highest!
                            //$price = '<span class="productOldPrice">'.INSTEAD.$this->xtcFormat($pPrice, $format).'</span><br />'.ONLY.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format);
                            //BOF - vr - 2009-12-11 avoid div / 0 if product price is 0
                            if (!isset($pPrice) || $pPrice == 0)
                              $discount = 0;
                            else
                              $discount = ($pPrice - $sPrice) / $pPrice * 100;
                            $price = '<span class="productOldPrice"><small>'.INSTEAD.'</small><del>'.$this->xtcFormat($pPrice, $format).'</del></span><br />'.ONLY.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format).'<br /><small>'.YOU_SAVE.round($discount).' % /'.$this->xtcFormat($pPrice-$sPrice, $format).'</small>';
                            //BOF - vr - 2009-12-11 avoid div / 0 if product price is 0
    //EOF - Dokuman - 2009-06-03 - show 'ab' / 'from' for the lowest price, not for the highest!
                            if ($vpeStatus == 0) {
                                    return $price;
                            } else {
                                    return array ('formated' => $price, 'plain' => $sPrice);
                            }
                    } else {
                            return round($sPrice, $this->currencies[$this->actualCurr]['decimal_places']);
                    }
            }

    und ersetzen mit:

    Code: PHP  [Auswählen]
    function xtcFormatSpecial($pID, $sPrice, $pPrice, $format, $vpeStatus = 0) {
            if ($format) {
                if (!isset($pPrice) || $pPrice == 0)
                  $discount = 0;
                else
                  $discount = ($pPrice - $sPrice) / $pPrice * 100;
                        $price = '<span class="productOldPrice"><small>'.$this->xtcFormat($pPrice, $format).'</small></span><br/>'.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format);
                        $price_perc = round($discount);
                if ($vpeStatus == 0) {
                    return $price;
                } else {
                    return array ('formated' => $price, 'plain' => $sPrice, 'percent' => $price_perc);
                }
            } else {
                return round($sPrice, $this->currencies[$this->actualCurr]['decimal_places']);
            }
        }

    und nun sollte man die neuen Variablen PRODUCTS_OLDNEW & PRODUCTS_PRICE_P in den Templates verwenden können:

    [template]/module/product_listing/....html
    [template]/module/new_products*.html
    [template]/module/specials.html
    [template]/module/cross_selling.html

    an gewünschter Stelle im Template das hier einfügen:

    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_PRICE_P != ''}
        <div class="product_special">{$module_data.PRODUCTS_PRICE_P}</div>
    {/if}
    {if $module_data.PRODUCTS_OLDNEW != '' && $module_data.PRODUCTS_PRICE_P == ''}
        <div class="product_isnew"></div>
    {/if}

    In der "/includes/modules/default.php" in ca. Z. 240 nach dem:

    Code: PHP  [Auswählen]
        $listing_sql = "select DISTINCT p.products_fsk18,
                                      p.products_shippingtime,
                                      p.products_model,

    mal das einfügen:

    Code: PHP  [Auswählen]
                                      p.products_date_added,

    in der ca.  Z. 309 nach:

    Code: PHP  [Auswählen]
        $listing_sql = "select p.products_fsk18,
                                p.products_shippingtime,
                                p.products_model,

    das einfügen:

    Code: PHP  [Auswählen]
                                      p.products_date_added,

    in der Z.388 nach:

    Code: PHP  [Auswählen]
        $listing_sql = "select p.products_fsk18,
                                      p.products_shippingtime,

    das einfügen:

    Code: PHP  [Auswählen]
                                      p.products_date_added,

    und der Z. 466 nach:

    Code: PHP  [Auswählen]
        $listing_sql = "select p.products_fsk18,
                                      p.products_shippingtime,
                                      p.products_model,

    das einfügen:

    Code: PHP  [Auswählen]
                                      p.products_date_added,

    Zusätzlich müssen noch die entsprechenden CSS-Classes ("product_special", "product_isnew") eingerichtet werden damit ein entsprechendes Bild über das Produktbild gelegt wird. Anbei noch ein Screenshot wie es ausschauen kann...

      [ Für Gäste sind keine Dateianhänge sichtbar ]

    [EDIT GTB 20.05.2011: Code formatiert.]
    [EDIT Tomcraft 09.06.2011: Code erweitert.]
    [EDIT franky_n 10.12.2011: Code erweitert.]
    [EDIT franky_n 11.12.2011: Code erweitert.]
    [EDIT Tomcraft 26.02.2013: Anleitung für Shopversion 1.06 ergänzt, danke an ralph_84.]
    [EDIT Tomcraft 19.12.2013: Anleitung für Shopversion 1.06 aktualisiert, danke an ralph_84.]
    [EDIT Tomcraft 19.12.2013: Fehler in Anleitung für Shopversion 1.06 korrigiert.]

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

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.156
    • Geschlecht:
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #1 am: 20. Mai 2011, 10:14:14
    Riiiiichtig cool! :B

    Vielen Dank! :thx:

    Grüße

    Torsten

    Thomas

    • Fördermitglied
    • Beiträge: 1.587
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #2 am: 20. Mai 2011, 10:14:49
    Hi,

    schonmal danke für deine Mühe!

    [...]
    Zusätzlich müssen noch die entsprechenden CSS-Classes ("product_special", "product_isnew") eingerichtet werden damit ein entsprechendes Bild über das Produktbild gelegt wird. [...]

    Was bedeutet das im Dummilatein für mich?

    Gruß

    kostnermo

    • Frisch an Board
    • Beiträge: 54
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #3 am: 20. Mai 2011, 10:57:59
    danach hab ich schon ewig gesucht! Danke dafür.

    Gruß

    Patrick

    iriedaily

    • Fördermitglied
    • Beiträge: 14
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #4 am: 20. Mai 2011, 11:17:24
    @Thomas: In dem Template werden ja je nachdem ob der Artikel neu ist oder Reduziert wurde ein <div>-Block eingeblendet. Vereinfacht könnte man das ganze auch folgendermaßen ins Template setzen:

    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_PRICE_P != ''}
        Reduziert um {$module_data.PRODUCTS_PRICE_P}%
    {/if}
    {if $module_data.PRODUCTS_OLDNEW != '' && $module_data.PRODUCTS_PRICE_P == ''}
        Artikel ist Neu
    {/if}
    In meinem Screenshot habe ich das über CSS-Klassen (<div class="product_special">...</div> und <div class="product_isnew"></div>) erledigt, bei der unterschiedliche Bilder als Hintergrundbild hinterlegt sind.

    Markus

    • modified Team
    • Beiträge: 1.359
    • Geschlecht:
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #5 am: 20. Mai 2011, 11:24:52
    Hi ..

    das ist echt mal eine coole Sache ... danke ;-)

    Markus

    Overclocked

    • Fördermitglied
    • Beiträge: 151
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #6 am: 08. Juni 2011, 09:23:29
    Funktioniert das Modul nur bei der Version 1.05 ? Ich bekomme es in der 1.03 nicht zum laufen,  :crazy: obwohl genau der Anleitung gefolgt, erscheint einfach nix. :(

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #7 am: 08. Juni 2011, 20:16:47
    Wahrscheinlich fehlt das CSS.
    Evtl. kann man es noch zur Verfügung stellen, damit das Paket komplett ist.

    Ansonsten sehr gute Sache. Meine Stimme hast du, dass man das übernehmen könnte, macht sich richtig gut.

     :thx:

    kaisa

    • Schreiberling
    • Beiträge: 366
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #8 am: 08. Juni 2011, 23:37:47
    Eine ganz tolle Sache und sehr sinnvoll. Sollte unbedingt in die modified eCommerce Shopsoftware übernommen werden. :)

    Overclocked

    • Fördermitglied
    • Beiträge: 151
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #9 am: 09. Juni 2011, 06:42:11
    Wahrscheinlich fehlt das CSS.
    Evtl. kann man es noch zur Verfügung stellen, damit das Paket komplett ist.

    Ansonsten sehr gute Sache. Meine Stimme hast du, dass man das übernehmen könnte, macht sich richtig gut.

     :thx:

    Leider liegt es nicht daran, denn das funktioniert auch nicht:

    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_PRICE_P != ''}
        Reduziert um {$module_data.PRODUCTS_PRICE_P}%
    {/if}
    {if $module_data.PRODUCTS_OLDNEW != '' && $module_data.PRODUCTS_PRICE_P == ''}
        Artikel ist Neu
    {/if}
    Gruss Chris

    iriedaily

    • Fördermitglied
    • Beiträge: 14
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #10 am: 09. Juni 2011, 06:49:02
    Hallo Chris,

    hast du das ganze in den Templates auch innerhalb der Schleife drin?:

    Code: PHP  [Auswählen]
    {foreach name=aussen item=module_data from=$module_content}
    ...
    {/foreach}
    Gruß
    Martin

    Overclocked

    • Fördermitglied
    • Beiträge: 151
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #11 am: 09. Juni 2011, 08:35:06
    Auch das ist der Fall  :?

    Code: PHP  [Auswählen]
    ...
              {foreach name=aussen item=module_data from=$module_content}
            <div class="{cycle values='leftitem,rightitem'}">

                                            <br /><center><a href="{$module_data.PRODUCTS_LINK}" title="{$module_data.PRODUCTS_NAME}">{if $module_data.PRODUCTS_IMAGE}<img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.PRODUCTS_NAME}" />{else}<img src="images/product_images/thumbnail_images/noimage.jpg" alt="{$module_data.PRODUCTS_NAME}" />{/if}</a></center>

                    <div class="right">
                            <div class="prdname"><a href="{$module_data.PRODUCTS_LINK}" title="{$module_data.PRODUCTS_NAME}">{$module_data.PRODUCTS_NAME}</a></div><br />
                            <div class="outer">
                            <div class="shippingtimelisting">
                                    {$module_data.PRODUCTS_PRICE}</div>
                                    <div class="shippingtimelisting">{$module_data.PRODUCTS_TAX_INFO}
                                    {$module_data.PRODUCTS_SHIPPING_LINK}
                                    {*{if $module_data.PRODUCTS_SHIPPING_NAME}<br />{#text_shippingtime#}{$module_data.PRODUCTS_SHIPPING_NAME}{/if}*}
                                    {if $module_data.PRODUCTS_VPE}<p>{$module_data.PRODUCTS_VPE}</p>{/if}
    {if $module_data.PRODUCTS_PRICE_P != ''}
        Reduziert um {$module_data.PRODUCTS_PRICE_P}%
    {/if}
    {if $module_data.PRODUCTS_OLDNEW != '' && $module_data.PRODUCTS_PRICE_P == ''}
        Artikel ist Neu
    {/if}
                            </div>
    ...
     
    Und die product.php

    Code: PHP  [Auswählen]
    ...
                            $shipping_status_name = $main->getShippingStatusName($array['products_shippingtime']);
                            $shipping_status_image = $main->getShippingStatusImage($array['products_shippingtime']);

    if ($array['products_date_added'] != '0000-00-00 00:00:00' && MAX_DISPLAY_NEW_PRODUCTS_DAYS != '0') {
        $date_new_products = date("Y-m-d", mktime(1, 1, 1, date("m"), date("d") - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date("Y")));

        if ($date_new_products." 00:00:00"> $array['products_date_added']) {
            $product_isnew = ''; //Produkt ist alt
        } else {
            $product_isnew = '1'; //Produkt ist neu
        }
    }

                                    $p_array = array ('PRODUCTS_NAME' => $array['products_name'],
                                    'COUNT'=>$array['ID'],
                                    'PRODUCTS_ID'=>$array['products_id'],
                                    'PRODUCTS_MODEL'=>$array['products_model'],
                                    'PRODUCTS_VPE' => $this->getVPEtext($array, $products_price['plain']),
                                    'PRODUCTS_OLDNEW'=>$product_isnew,
                                    'PRODUCTS_PRICE_P' => $products_price['percent'],
                                    'PRODUCTS_FAKTEN' => $array['products_fakten'],
                            'PRODUCTS_FAKTENEINS' => $array['products_fakteneins'],
                            'PRODUCTS_FAKTENZWEI' => $array['products_faktenzwei'],
    ...
     
    Keine Ahnung was das ist. Vielleicht magst Du selbst mal nachschauen? Lass ich mir auch was kosten, ist ein super tolles Modul.  :panic:

    iriedaily

    • Fördermitglied
    • Beiträge: 14
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #12 am: 09. Juni 2011, 09:27:11
    @speedy: das Problem ist, ich habe das Erscheinungsbild der Artikelübersicht so umgekrämpelt, dass meine CSS-Klasse für das modified eCommerce Shopsoftware Standardtemplate nichts bringen würde. Hier ist sie trotzdem.

    Code: CSS  [Auswählen]
    .product_isnew {
        background: url("img/[NEW_FLAG].png") no-repeat transparent;
        height: 43px;
        margin-left: 121px;
        margin-top: -7px;
        position: absolute;
        width: 43px;
    }
    .product_special {
        background: url("img/[SPECIAL_FLAG].png") no-repeat transparent;
        color: #FFFFFF;
        font-size: 13px;
        font-weight: bold;
        height: 43px;
        line-height: 17px;
        margin-left: 121px;
        margin-top: -7px;
        padding-left: 15px;
        padding-top: 0;
        position: absolute;
        width: 33px;
    }

    @Overclocked: so wie es ausschaut hast du eigentlich alles richtig gemacht. Hast du schon den Template-Cache & den Browser-Cache geleert?

    Evtl. liegt es auch an dem Array weil bei mir fängt das in der "/includes/classes/product.php" so an:

    Code: PHP  [Auswählen]
    ...
                    return array ('PRODUCTS_NAME' => $array['products_name'],
                                    'COUNT'=>$array['ID'],
                                    'PRODUCTS_ID'=>$array['products_id'],
                                    'PRODUCTS_MODEL'=>$array['products_model'],
                                    'PRODUCTS_OLDNEW'=>$product_isnew,
    ...

    Overclocked

    • Fördermitglied
    • Beiträge: 151
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #13 am: 09. Juni 2011, 10:27:13
    Cache gelöscht, mit

    Code: PHP  [Auswählen]
    return array ('PRODUCTS_NAME' => $array['products_name'],

    versucht... nix  :no-sad:

    iriedaily

    • Fördermitglied
    • Beiträge: 14
    ANLEITUNG: Prozent & NEW - Flags bei Produkten
    Antwort #14 am: 09. Juni 2011, 10:51:17
    mir ist gerade aufgefallen, dass noch folgende Datei bzw. die Funktion "xtcFormatSpecial" angepasst werden muss:

    "/includes/classes/xtcPrice.php" (ca. Zeile 399)

    Code: PHP  [Auswählen]
    function xtcFormatSpecial($pID, $sPrice, $pPrice, $format, $vpeStatus = 0) {
                    if ($format) {
                            if (!isset($pPrice) || $pPrice == 0)
                              $discount = 0;
                            else
                              $discount = ($pPrice - $sPrice) / $pPrice * 100;
                                            $price = '<span class="productOldPrice"><small>'.$this->xtcFormat($pPrice, $format).'</small></span><br/>'.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format);
                                            $price_perc = round($discount);
                            if ($vpeStatus == 0) {
                                    return $price;
                            } else {
                                    return array ('formated' => $price, 'plain' => $sPrice, 'percent' => $price_perc);
                            }
                    } else {
                            return round($sPrice, $this->currencies[$this->actualCurr]['decimal_places']);
                    }
            }

    damit sollte zumindest die %-Zahl erscheinen. Warum die NEW-Berechnung bei dir nicht hinhaut kann ich nicht sagen. Evtl. gab's von 1.03 zu 1.05 zu viele Unterschiede...

    [EDIT Tomcraft 09.06.2011: Code in Beitrag 1 ergänzt.]

    22 Antworten
    7201 Aufrufe
    31. Mai 2017, 08:35:59 von Juan Carlos Silverio Gomez
    2 Antworten
    2492 Aufrufe
    08. Juni 2018, 22:22:31 von Shorty
    5 Antworten
    4956 Aufrufe
    15. März 2012, 14:23:53 von Buggyboy
    7 Antworten
    4379 Aufrufe
    15. Juni 2013, 23:06:34 von Marcel G.
               
    anything