Rabatte in Prozent anzeigen

  • Hallo in die Runde, ich habe folgendes Anliegen:
    auf der Seite sollen Rabatte auf Produkte nur angezeigt werden, wenn ein Mitglied einer bestimmten Shoppergruppe, der auch Preise angezeigt werden sollen, angemeldet ist. Den Usern „anonym“ - also „Nicht angemeldeten“ sollen weder Preise noch die Rabatte angezeigt werden. Es geht und die Ansicht im Frontend. die soll wie folgt aussehen:
    Grundpreis: 10,- Euro (duchgestrichen)
    Rabatt: 10%
    Rabattbetrag: 1,- Euro
    Netto-VK: 9,-


    Ich denke der Käufer interessiert sich mehr für den prozentualen Rabatt als für den in Euro.


    Der link zur Seite: www.fiebiger.de/katalog/index.php
    Joomla!: 2.5.9
    Virtuemart: 2.0.20b
    Das Dumme ist, dass ich die Seite mit den obigen Code so nicht live stellen kann, da sonst jeder das sieht was er nicht sehen soll. Ich teste das immer local (XAMPP). Ich versuche daher das Problem bestmöglich darzustellen:



    Folgender Lösungsansatz:
    in MYTEMPLATE\html\com_virtuemart\category\default.ph p wurde direkt über „echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);“ folgendes eingefügt:

    Code
    1. {
    2. $discount = $product->prices['discountAmount'];
    3. $discountprice = $product->prices['basePrice'];
    4. $total = ($discount * 100) / $discountprice;
    5. $discountAmount = JText::sprintf ('COM_VIRTUEMART_PRODUCT_DISCOUNT', $this->product->prices);
    6. echo "<div class='discountpercent'>".$discountAmount.round($total)."%</div>";
    7. }


    Der Rabatt wird wunderbar angezeigt allerdings auch, wenn man nicht angemeldet ist. Das soll ja so nicht sein. Also habe ich versucht eine zusätzliche Abfrage -direkt davor (vor"{")- einzubauen.
    Füge ich direkt davor zusätzlich die Anweisung if ($this->showBasePrice) ein, so wird immer ein Rabatt angezeigt, auch wenn er 0 beträgt! Klar immer wenn der Basispreis angezeigt wird; daher neuer Versuch mit "if (!empty($this->product->prices['discountAmount']))". Diese Abfrage zeigt jedoch den Rabatt immer, auch wenn man nicht angemeldet ist!


    Analog dazu das Problem in der MYTEMPLATE\html\com_virtuemart\default_showprices. php!
    Um, bei vorhandensein eines Rabattes, den alten Preis durchgestrichen und rot zu bekommen wird folgendes eingefügt:

    PHP
    1. <div class="old-price">
    2. <?php
    3. if(!empty($this->product->prices['discountAmount'])) {
    4. echo $this->currency->createPriceDiv('basePrice','COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices);
    5. }
    6. ?>
    7. </div>


    Geht prima!


    Dann kommt der Rabatt in Prozent! Direkt über "echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);" folgendes rein:

    Code
    1. if(!empty($this->product->prices['discountAmount'])) {
    2. $discount = $this->product->prices['discountAmount'];
    3. $discountprice = $this->product->prices['basePrice'];
    4. $total = ($discount * 100) / $discountprice;
    5. $discountAmount = JText::sprintf ('COM_VIRTUEMART_PRODUCT_DISCOUNT', $this->product->prices);
    6. if ($this->show_prices){echo "<div class='discountpercent'>".$discountAmount.round($total)."%</div>";}
    7. }


    Auch hier wird der Rabatt in Prozent angezeigt, allerdings auch, wenn man nicht angemeldet ist. Genau das soll nicht sein! Nicht angemeldete (zumeist Endverbraucher) sollen lediglich die Produkte – quasi als Katalog – ansehen können. Angemeldete (Wiederverkäufer) sollen Preise und eventuelle Rabatte sehen können.
    Mögliche Kriterien waren - aus meiner Sicht:


    if (!empty($this->product->prices['discountAmount']))
    oder
    if ($this->show_prices == '1')
    oder
    if ($this->showBasePrice)
    Aber keine führte so recht zum Erfolg. Eine sinnvolle Kombination aus zweien hatte auch nicht den gewünschten Erfolg.
    Irgendwie steh ich voll auf dem Schlauch - da ist ein Knoten in meinem Hirn!


    Wäre toll, wenn mir jemand einen Schubs geben könnte.


    Solltet Ihr noch weiter Infos benötigen oder sollte ich was vergessen haben, sagt bitte bescheid.
    Ich hatte es schon ine einem anderen Forum, doch bis jetzt brachte es nicht den gewünschten Erfolg - Vielleicht hab ich hier mehr Glück.
    Grüße in die Runde
    Wagges

  • Ich glaube ich bin selbst drauf gekommen. Bis jetzt scheint es zu funktionieren.


    Die Lösung scheint folgende zu sein:


    in der Datei MYTEMPLATE\html\com_virtuemart\category\default.php


    Dort direkt unter "echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);"


    und in MYTEMPLATE\html\com_virtuemart\default_showprices. php


    Dort direkt unter "echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices);"


    Dann noch in der css-Datei, den folgenden Eintrag um den alten Preis (Grundpreis ohne Rabatt) durchstreichen und rot:
    .old-price {
    text-decoration: line-through;
    color: #cc0000;}
    und
    .discountpercent{
    text-decoration: none;
    color: #cc0000;}


    Abschließend in der Sprachdatei ((joomla – administration – Sprachen – override) einen Override erstellen:
    COM_VIRTUEMART_PRODUCT_DISCOUNT = „Rabatt: „ für Deutsch und für englisch COM_VIRTUEMART_PRODUCT_DISCOUNT = „Discount: „


    Dann sieht es so in der Kategorieübersicht aus:
    Normalpreis: 9,45 €(durchgestrichen)
    Rabattbetrag: 4,73 €
    Rabatt: 50%
    Netto-Verkaufspreis: 4,73 €


    Und in der Detailansicht sieht es genauso aus! Bei den entsprechenden Einstellungen sieht nun der angemeldete User das obige Ergebnis und der nicht-angemeldete sieht nichts! So wollte ich es!
    Bis jetzt scheint es zu funktionieren. Ich werde noch ein wenig testen und dann berichten.


    Grüsse Wagges

  • So jetzt habe ich noch ein wenig getestet und es sieht gut aus. Jeder sieht das was er sehen soll.
    Wahrscheinlich hätte ich noch warten sollen und mehr nachdenken sollen, bevor ich gepostet habe - schließlich habe ich ja doch gelöst (obwohl ich es nicht mehr gedacht hätte).
    Ich hoffe es hilft dem Ein oder Anderen.


    Grüße