Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : stsnow 28 Jun 2014, 16:21:43
-
Ciao a tutti,
ho provato ad aggiungere la visualizzazione della percentuale sconto sull'immagine prodotto in category view, usando il codice:
<?php printf("%02.1f%%", 100 * $this->product->prices['discountAmount'] / $this->product->prices['basePriceWithTax']); ?>
postato qui: http://forum.joomla.it/index.php?topic=238419.0 (http://forum.joomla.it/index.php?topic=238419.0)
Effettivamente, una percentuale appare, il probleme è che il valore è sempre zero!
Cioè qualsiasi sia il prezzo del prodotto e l'importo dello sconto, appare su ogni immagine una cosa del tipo:
-0%
Come posso risolvere? Grazie.
-
aggiungerei cil nome del componente
era nel titolo
-
Sì, avevo già scritto nel titolo "VM2". Adesso attendo che qualche esperto possa aiutarmi :)
-
in category? allora, probabilmente ma non necessariamente, il codice dovrebbe essere:
<?php printf("%02.1f%%", 100 * $product->prices['discountAmount'] / $product->prices['basePriceWithTax']); ?>
devi vedere come si chiama la variabile tramite la quale viene iterato l'array products ($this->products) presente nella classe della view, di norma, con molta fantasia, è $product
ciao,
marco
-
Grazie per la risposta, inserendo il codice che hai scritto tu mi da sempre 0.0%
-
allora bisogna vedere il codice della view...
comunque sicura che che ci sia lo sconto su quei prodotti?
perché il risultato sia zero deve essere discountAmount==0, ovviamente se non hai nascosto la visualizzazione degli errori.
ciao
-
Questa è la parte di codice in default_showprices.php
<?php
$discont = $this->product->prices['discountAmount'];
$discont = abs($discont);
//print_r($this->product);
//if (!empty($this->product->prices['salesPrice'])) {
//echo "<strong>" . JText::_ ('COM_VIRTUEMART_CART_PRICE') . "</strong></br>";
//}
//print_r($product->prices);
if ($this->showBasePrice) {
echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices);
if (round($this->product->prices['basePrice'],$this->currency->_priceConfig['basePriceVariant'][1]) != $this->product->prices['basePriceVariant']) {
echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIAN T', $this->product->prices);
}
}
echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices);
if ($discont > 0){
if (round($this->product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1]) != $this->product->prices['salesPrice'] && $this->product->prices['basePriceWithTax'] >0) {
echo '<span class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTA X', $this->product->prices) . "</span>";
}
}
if (round($this->product->prices['discountAmount'] != 0 )) {
$discount_percent = round(($this->product->prices['basePriceWithTax'] - $this->product->prices['salesPrice']) * 100 / $this->product->prices['basePriceWithTax']);
?> </br>
- <?php echo '<span class="percent" >' . $discount_percent . "</span>"; ?>%
-
scusa, ma a parte il non sense di alcune linee di codice, non mi pare la view di una categoria, mi quadra molto poco quel $this->product.
comunque potresti metterci qualcosa come:
<pre><?php print_r($this->product->prices); ?></pre>
per verificare se e quali prezzi sono definiti, e capire su quale valori agire per ottenere la percentuale.
ciao,
marco
-
Infatti il codice che ho postato non è la view della categoria, è quella della pagina di dettaglio prodotto...
-
ho provato ad aggiungere la visualizzazione della percentuale sconto sull'immagine prodotto in category view,
che mi serve quel codice allora, a parte perdere tempo?
-
Il codice delle view product details, cioè quello che ho postato, mostra correttamente la percentuale di sconto, per quello te l'ho inviato.
Non volevo farti perdere tempo, scusa. Adesso devo postarti quello di category/default.php?
-
penso sarebbe più utile...
-
Ecco la parte di codice interessata, vorrei aggiungere la percentuale di sconto dopo DR_SALE
<div class="discount"><?php echo JText::_('DR_SALE');?></div>
<?php
//print_r($product->prices);
if ($discont > 0) {
echo $this->currency->createPriceDiv('basePriceWithTax','',$product->prices);
}
echo $this->currency->createPriceDiv('salesPrice','',$product->prices);
//echo $this->currency->createPriceDiv('discountAmount','COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT',$product->prices);
//echo $this->currency->createPriceDiv('salesPrice','COM_VIRTUEMART_PRODUCT_SALESPRICE',$product->prices);
//echo $this->currency->createPriceDiv('priceWithoutTax','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX',$product->prices);
//echo $this->currency->createPriceDiv('variantModification','COM_VIRTUEMART_PRODUCT_VARIANT_MOD',$product->prices);
//echo $this->currency->createPriceDiv('basePriceWithTax','COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX',$product->prices);
//echo $this->currency->createPriceDiv('discountedPriceWithoutTax','COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE',$product->prices);
//echo $this->currency->createPriceDiv('salesPriceWithDiscount','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT',$product->prices);
//echo $this->currency->createPriceDiv('taxAmount','COM_VIRTUEMART_PRODUCT_TAX_AMOUNT',$product->prices);
?>
</div>
-
copiando dal codice sopra, direi:
<?php echo round(($product->prices['basePriceWithTax'] - $product->prices['salesPrice']) * 100 / $product->prices['basePriceWithTax']); ?>%
anche se, a questo punto, non capisco perché il primo codice non funzionava... magari vecchia versione di VM e non tutti gli indici definiti.
-
Perfetto! Funziona!!!!!! Grazie mille, sei un genio :D
-
Adesso, però, se voglio vedere la percentuale sconto anche in homepage, quale file devo modificare? Perché con la configurazione attuale la percentuale sconto appare, giustamente, solo in category view.
-
default_products.php nella view virtuemart.
-
Ho inserito il codice che mi hai dato anche in default_product.php ma in questo caso non appare proprio nulla in homapaga (dove ci sono i prodotti).
-
che cosa intendi per homepage? la 'prima pagina' di virtuemart, giusto?
nel pacchetto originale il file da modificare è quello indicato, ma bisogna vedere se il template usa la medesima convenzione o meno.
-
Ho risolto, grazie mille!