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:
- {
- $discount = $product->prices['discountAmount'];
- $discountprice = $product->prices['basePrice'];
- $total = ($discount * 100) / $discountprice;
- $discountAmount = JText::sprintf ('COM_VIRTUEMART_PRODUCT_DISCOUNT', $this->product->prices);
- echo "<div class='discountpercent'>".$discountAmount.round($total)."%</div>";
- }
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:
Geht prima!
Dann kommt der Rabatt in Prozent! Direkt über "echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);" folgendes rein:
- if(!empty($this->product->prices['discountAmount'])) {
- $discount = $this->product->prices['discountAmount'];
- $discountprice = $this->product->prices['basePrice'];
- $total = ($discount * 100) / $discountprice;
- $discountAmount = JText::sprintf ('COM_VIRTUEMART_PRODUCT_DISCOUNT', $this->product->prices);
- if ($this->show_prices){echo "<div class='discountpercent'>".$discountAmount.round($total)."%</div>";}
- }
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