Back to top

Autore Topic: [RISOLTO] classe categorie virtuemart  (Letto 5607 volte)

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
[RISOLTO] classe categorie virtuemart
« il: 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
« Ultima modifica: 15 Apr 2015, 18:41:46 da semneo »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #1 il: 08 Apr 2015, 17:38:31 »
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


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #2 il: 08 Apr 2015, 18:10:58 »
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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #3 il: 08 Apr 2015, 21:10:55 »
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):

Codice: [Seleziona]
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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #4 il: 10 Apr 2015, 11:38:04 »
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
Codice: [Seleziona]
$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
« Ultima modifica: 10 Apr 2015, 11:39:42 da semneo »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #5 il: 10 Apr 2015, 15:31:29 »
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


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #6 il: 10 Apr 2015, 17:00:54 »
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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #7 il: 10 Apr 2015, 17:29:06 »
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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #8 il: 10 Apr 2015, 17:54:28 »
è 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...

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #9 il: 13 Apr 2015, 20:55:59 »
Ciao Marco, ciao raga, qualcuno riesce a darmi una mano sono bloccato e non riesco ad uscirne...   ???
Grazie mille...
Sem

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #10 il: 14 Apr 2015, 08:49:30 »
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...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline semneo

  • Nuovo arrivato
  • *
  • Post: 28
    • Mostra profilo
Re:classe categorie virtuemart
« Risposta #11 il: 15 Apr 2015, 18:37:28 »
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:
Codice: [Seleziona]
<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:
Codice: [Seleziona]
<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
« Ultima modifica: 15 Apr 2015, 18:41:16 da semneo »

 



Web Design Bolzano Kreatif