Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : semneo 08 Apr 2015, 10:27:23
-
Buon giorno a tutti,
avrei bisogno di una dritta...
situazione: Joomla 3.4.1 Virtuemart 3.0.6.2
sto cercando di assegnare una classe alla categoria di un prodotto e fin qui con il cod
<div class="r<?php echo JRequest::getInt('virtuemart_category_id'); ?>"> dove r+id categoria sarà poi la mia classe nel css.
il problema mi si presenta quando un prodotto appartiene a due o più categorie.
Il cod precedente si ferma alla prima categoria che trova ma a me interessa che vengano estrapolati gli id anche delle altre categorie di appartenenza ma non so come fare...
Qualche anima pia che mi da una dritta?
Grazie mille e buona giornata.
Sem
-
devi usare l'id di prodotto e recuperare le associazioni presenti nella tabella #__virtuemart_product_categories, in questo modo puoi avere l'elenco di tutte le categorie cui il prodotto è associato.
ma sei poi sicuro che ti interessi aggiungere classi a manetta? da come esponi il problema mi pare che ti sia più utile una classe sul prodotto/gruppo di prodotti che non sulla singola classe: magari valuta questa strada
-
Grazie mille
Marco giusto?
volevo associare una classe alla categoria in quanto alla categoria ho legato uno sconto specifico, quindi il prodotto viene incluso nella categoria e in automatico mi applica uno sconto (posso lavorare su centinaia di articoli contemporaneamente) con la classe applico un badge/etichetta.
Opero già dopo l'assegnazione dell'id prodotto, ed infatti con quel codice trovo l'id della prima categoria a cui il prodotto è associato, che resta proprio nella tabella da te indicata solo che in quella tabella c'è anche l'id della seconda categoria di appartenenza ed è proprio quel dato che non riesco ad estrapolare.
Soluzioni?
Approfitto ulteriormente della tua preparazione e gentilezza:
come posso fare per mostrare nel frontend il prezzo di costo ( non il base ) ??
Grazie
Sem
-
marco, giusto.
il come te lo ho detto sopra: devi fare una query sulla tabella indicata usando l'id di prodotto per recuperare gli id di categoria. ovviamente la variabile che contiene l'id del prodotto varia a seconda della view in cui sei, ma la query è comunque sempre la stessa. una volta recuperato il recordset in un array fai un loop:
la funzione potrebbe essere (non ho testato il codice e potrebbe esserci qualche errorino):
function productCategories($idProduct) {
$db = JFactory::getDbo();
$q = 'SELECT `virtuemart_category_id` FROM `#__virtuemart_product_categories` WHERE `virtuemart_product_id` = ' . $db->quote((int)$idProduct);
$db->setQuery($q);
return $db->loadColumn();
}
costo base? usa print_r con l'oggetto prodotto per vedere qual è il prezzo che vuoi stampare.
ciao,
marco
-
Ciao Marco,
le indicazioni sono molto chiare, forse è il mio php ad essere un po limitato...
dovrei inserire la funzione nel file products.php e nel default del productdetails, ma in entrambi i casi non riesco ad individuare la dichiarazione della variabile id prodotto, fondamentale allo scopo....
inoltre domanda (magari è una castroneria):
dopo la connessione al dbase non va inserito la creazione dell'oggeto $q
$db->getQuery(true);
In merito invece al discorso del prezzo, ciò che mi serve si trova nella tabella virtuemart_product_prices alla voce product_prices il cliente ha inserito erroneamente il prezzo al pubblico e ora mi tocca visualizzare quello come prezzo senza sconto.
Scusa la poca dimestichezza con il codice ma raramente mi addentro tanto nei componenti.
Grazie mille per l'interesse comunque.
Sem
-
forse sarebbe meglio inserire le path complete per capire di quali file stai parlando...
se per "default del productdetails" posso intuire che tu stia parlando della view, a quale file tu ti riferisca con "products.php" mi è ignoto.
per come la vedo io due sono i punti di intervento:
- \components\com_virtuemart\views\category\tmpl\default.php
- \components\com_virtuemart\views\productdetails\tmpl\ default.php
e che l'intervento sia da intendersi sugli overrride degli stessi lo do per scontato.
il problema è che la variabile da cui ricavare il codice prodotto dipende dalla versione di VM e dal template... spiacente, ma un poco di php bisogna proprio masticarlo :P di norma hai $qualcosa->virtuemart_product_id, ovviamente NON cercare $qualcosa...
inoltre domanda (magari è una castroneria):
ahhh come osi dubitare delle mie parole ?!
(ok, scusa: oggi sono in modalità cazzeggio ;D ;D ;D )
setQuery accetta, come argomento, tanto un oggetto quanto una stringa: se usi una stringa non hai bisogno di istanziare la classe... se istanzi la classe sei più 'pulito' ma il codice diventa difficile per i neofiti.
ciao
-
Sei troppo un grande.. ;D ;D
hai perfettamente ragione... come diciamo giù al nord : ogni ofelè al ga el so mestè...
dunque per le versioni in uso joomla è alla 3.4.1 e vm alla 3.0.6.2,
il template l'ho implementato io partendo da una base fatta con il componente commerciale template creator
i file a cui mi riferisco
com_virtuemart\sublayouts\products.php
e
com_virtuemart\productdetails\default.php
ovviamente la funzione viene inserita nei rispettivi override.
mi piacerebbe proprio masticare un po più php... :-\ è nella mia lunghissima lista di cose da approfondire...
Grazie ancora..
Sem
-
sì, sì, ma proprio giù, perché su al nord (almeno a milano) se dis: "Offelee, fa el tò mestee" :P :P
di commerciale qui non si parla :-X
-
è un zona di bassa provincia la mia che ci vuoi fare... :P :P
so esattamente che il commerciale e off limits :-X :-X
la mia voleva essere solo un'informazione per darti una visione completa della situazione..
comunque la funzione si riferisce a vm e in questo caso non cerco nulla in merito al template...
-
Ciao Marco, ciao raga, qualcuno riesce a darmi una mano sono bloccato e non riesco ad uscirne... ???
Grazie mille...
Sem
-
ti ho scritto sopra come fare e ti ho scritto anche la funzione per recuperare il dati dal db, più di così non saprei che fare.
ma visto che parliamo di ecommerce e quindi di attività delicate: se proprio non lo sai fare, non farlo, che se fai qualche pasticcio...
-
Ciao a tutti.
Ho risolto... chi la dura... la dura... ;)
Se può interessare a qualcuno di seguito la soluzione:
Premesso l'utilizzo delle versioni joomla 3.4.1 e vm alla 3.0.6.2 il mio scopo era inserire delle etichette/label attraverso una classe css, basandomi sull'appartenenza o meno di un prodotto ad una data categoria.
Per fare ciò sono intervenuto su due file ( ovviamente in override )
com_virtuemart\sublayouts\products.php e com_virtuemart\productdetails\default.php e sul file css vm-ltr-site.css
nel primo ho inserito un div con queste caratteristiche:<div class="r_<?php
if(in_array(109, $product->categories)) {
echo 'sale';}
?>">
(il valore 109 è l'id della categoria a cui ho voluto assegnare la classe )
nel secondo ho inserito un div con queste caratteristiche:<div class="p_<?php
if(in_array(109, $this->product->categories)) {
echo 'sale';}
?>">[/code}(stesso discorso)
e aggiungendo il seguente codice nel file css[code]
.r_sale{background: url(/pretor/images/label.png) 35px 0px no-repeat; width: 170px; height: 85px; margin-top: -50px; z-index:100; position: relative;}
.p_sale{background: url(/pretor/images/label.png) 35px 0px no-repeat; width: 170px; height: 85px; margin-top: -50px; z-index:100; position: relative;}
(ovviamente i parametri vanno bene per il mio template, possono comodamente essere personalizzati )
[/code]
Se può interessare anche la soluzione per l'inserimento del prezzo di costo :
$PREZZO = $product->prices['costPrice'];
poi uno ci fa un po quello che vuole. ;D ;D
E tutto funziona... :)
Saluti.
Sem