Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : manuelgaribaldi 26 Mar 2014, 12:00:39
-
Buongiorno, chiedo scusa, ma ho un problema che non riesco a risolvere circa la visualizzazione dei prezzi scontati e non scontati in virtuemart.
In pratica se applico uno sconto a un prodotto o a una categoria, e vado a vedere il prezzi come cliente, viene (GIUSTAMENTE) visualizzato il prezzo netto barrato e il prezzo scontato in rosso e anche l'ammontare dello sconto. Benissimo. Solo che nei prodotti non scontati vedo ugualmente il prezzo barrato e il prezzo in rosso (che hanno ovviamente la solita cifra).
Come posso dire al sistema di visualizzare i prezzi barrati SOLO per i prodotti o categorie che hanno uno sconto?
Ho provato a seguire le istruzioni di questo forum (http://forum.vmitalia.net/index.php?topic=9215.45), ho chiesto aiuto ma non mi hanno mai risposto. Non ci sono riuscito.
Il sito in questione è questo (http://www.magtronic.it) . I prodotti in offerta sono nelle "offerte speciali"
Grazie
M.
-
ma tu guarda chi si rivede...
in realtà non sto parlando di te ma di gamma elettronica che avevo incontrato intanto che lavoravo per un'altra azienda.
manuel, sei di gamma o di altra società?
comunque, il problema è tipicamente causato dagli arrotondamenti o dalla mancata gestione degli sconti nel template.
ad occhio mi pare che tu non stia usando il template di default di VM, ma uno differente, quindi dovrai controllare il codice dell'override in
/templates/[template]/html/com_virtuemart/productdetails/default_showprices.php
nota: il file potrebbe anche essere inglobato in default.php
ciao,
marco
-
Ciao, mi è stato consegnato questo lavoro da Gamma.
Riguardo alla tua risposta, non ho mica capito sai...
Io non saprei dove mettere mano al codice. Praticamente è l'ultima cosa da fare ma non riesco.
-
Ciao, mi è stato consegnato questo lavoro da Gamma.
Riguardo alla tua risposta, non ho mica capito sai...
Io non saprei dove mettere mano al codice. Praticamente è l'ultima cosa da fare ma non riesco.
Il codice del file che hai evidenziato è il seguente:ù
<?php
/**
*
* Show the product details page
*
* @package VirtueMart
* @subpackage
* @author Max Milbers, Valerie Isaksen
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* @version $Id: default_showprices.php 5834 2012-04-09 12:05:33Z Milbo $
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
?>
<div class="product-price" id="productPrice<?php echo $this->product->virtuemart_product_id ?>">
<?php
if ($this->product->product_unit && VmConfig::get('price_show_packaging_pricelabel')) {
echo "<strong>" . JText::_('COM_VIRTUEMART_CART_PRICE_PER_UNIT') . ' (' . $this->product->product_unit . "):</strong>";
} else {
echo "<strong>" . JText::_('COM_VIRTUEMART_CART_PRICE') . "</strong>";
}
if (empty($this->product->prices) and VmConfig::get('askprice', 1)) {
?>
<a class="ask-a-question bold" href="<?php echo $url ?>" ><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ASKPRICE') ?></a>
<?php
}
if ($this->showBasePrice) {
echo $this->currency->createPriceDiv('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices);
echo $this->currency->createPriceDiv('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $this->product->prices);
}
echo $this->currency->createPriceDiv('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices);
echo $this->currency->createPriceDiv('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $this->product->prices);
echo $this->currency->createPriceDiv('discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE', $this->product->prices);
echo $this->currency->createPriceDiv('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $this->product->prices);
echo $this->currency->createPriceDiv('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices);
echo $this->currency->createPriceDiv('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices);
echo $this->currency->createPriceDiv('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices);
echo $this->currency->createPriceDiv('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $this->product->prices);
echo $this->currency->createPriceDiv('unitPrice', 'COM_VIRTUEMART_PRODUCT_UNITPRICE', $this->product->prices);
?>
<>
-
è abbastanza semplice, ma bisogna sapere bene quale effetto vuoi ottenere e sulla base di ciò devi scrivere il codice.
$this->product->prices è un array associativo che contiene tutti i prezzi pre-calcolati. il primo parametro del metodo createPriceDiv indica l'indice dell'array, e da tale indice si ottiene anche l'id del tag html che contiene il prezzo.
ora devi comparare il due valori agli indici basePriceWithTax e salesPrice (oppure valutare se discountAmount != 0) e nel caso aggiungere un tag contenitore in modo da poter aggiungere una classe per decidere se mettere o meno il barrato e/o decidere quali prezzi vuoi mettere.
io aggiungerei la nuova classe al primo div, così non devi aggiungere nessun tag e non corri il rischio di sballare nessun css.
comunque un minimo di php lo devi capire ;)
ciao,
marco
-
Io non so come "pistolettare" in questo caso. Credo serva una istruzione "if" ma di più non so.
Mi spiego bene:
nei dettagli prodotto va visualizzato il prezzo barrato se il prodotto è in sconto (prezzo pieno barrato, prezzo scontato in rosso - che fa già)
Se invece il prezzo del prodotto non è in sconto allora non visualizzare il prezzo barrato.
...a dirlo son parole..a farlo non capisco come muovermi. Di php..non mi intendo
Non voglio la pappa pronta, per carità...di solito mi arrangio ma questa volta è un po' che ci sbatto il naso senza successo.
:'(
-
modifica la classe del primo div in
class="product-price <?php echo ($this->product->prices['discountAmount']?'product-discount':''); ?>"
oppure
class="product-<?php echo ($this->product->prices['discountAmount']?'discount':'price'); ?>"
poi modifica i css. quale delle due dipende da come sono scritti i css che già ci sono.
-
Quali css?
Quello di VM?
Allego screenshot dei css presenti
[allegato eliminato automaticamente dopo un anno]
-
ma questa non è la pappa pronta è la cena servita ed i piatti lavati ;D ;D ;D
e dai, se il problema prima era semplice ora è addirittura banale. hai dichiarato di essere un operatore professionale, o comunque di aver accettato il lavoro, il che ti fa ricadere nel caso di cui sopra: non voglio neanche pensare che tu non sia in grado di risolvere una banalità del genere.
cortesemente...
-
Chiedo scusa...(ovviamente mi sbaglierò), ma modificando il css vaso solo ad intaccare "l'estetica".
Io credo serva un comando nel php del tipo
If "il prodotto non è scontato" mostra solo prezzo pieno e non barrato
If "prodotto è scontato" mostra prezzo intero barrato e prezzo scontato
Non capisco
-
Dunque ho risolto la storia della visualizzazione senza toccare il css. Ho messo un if aggiuntivo. (andare a capire l'if mi ci è voluto un po' ..
Poi nel carrello ho messo che il prezzo dei prodotti deve essere "basePriceWithTax", solo che me lo fa vedere barrato.
Dove posso modificare affinché me lo renda non barrato?
Allego screenshot
[allegato eliminato automaticamente dopo un anno]
-
Dove posso modificare affinché me lo renda non barrato?
quale parte di css non è chiara?
-
In realtà nessuna, ho risolto modificando il css dove indica i prezzi barrati mettendo un bel text decoration none
E poi ho modificato con override lingua: Prezzo in "Prezzo da scontare".
Ovviamente questa dicitura me la visualizza solo quando i prodotti sono in sconto
M.