Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : conti1 19 Mar 2017, 02:46:45
-
ciao
sono passato dalla 3.0.18 funzionante alla 3.0.19 e qui viene il bello
ho un banale campo personalizzato di tipo stringa settaggi i soliti non e che cè ne siano molti.
sia nella scheda prodotto che nel dettaglio non varia il prezzo
esempio banale
prodotto padre
camicia cotone manica corta costo 25, e fin qui tutto funziona
aggiungo un campo personalizzato
camicia cotone manica corta costo 0 "prende il prezzo del padre"
camicia cotone manica lunga costo 10 "25+10=35"
in vm 3.0.18 il prezzo variava
in vm3.0.19 nulla e come se non ci fosse il l'aggiunta del prezzo .
ora spulciando il codice , ora non so se è un errore voluto oppure c'è qualcosa d' altro che non funzioni metto il code cosi capite
components/com_virtuemart/assets/js/vmprices.js
alla riga 12
in pratica togliendo il controllo ! che dice fero quando e falso o viceversa si rimette a funzionare
originale
while(!container.hasClass('product-container') && !container.hasClass('product-field-display') && runs<=maxruns){
container = container.parent();
runs++;
}
if(runs>maxruns){
console.log('setproducttype: Could not find parent container product-container nor product-field-display');
return false;
}
modificato
while(container.hasClass('product-container') && !container.hasClass('product-field-display') && runs<=maxruns){
container = container.parent();
runs++;
}
if(runs>maxruns){
console.log('setproducttype: Could not find parent container product-container nor product-field-display');
return false;
}
qualche soluzione migliore
-
hasClass è un metodo jQuery. Sempre interessante jQuery.
Sembra che la nuova versione abbia già tutti i blocchi html interessanti con la classe 'product-container' impostata dal php (hai già controllato?), così la tua correzione ha bisogno solo di ricercare quelli che non hanno anche la classe 'product-field-display'.
Beh, funziona. Ok allora. :)
Volendo fare una finezza potresti modificare il messaggio in console.log più o meno in questo modo: 'setproducttype: Can not find parent container product-container with product-field-display absent'.
Ciao!
-
ops
sempre nelle due righe postate gurdandolo bene c'è if
allora originale
var runs= 0, maxruns = 20;
var container = form;
while(!container.hasClass('product-container') && !container.hasClass('product-field-display') && runs<=maxruns){
container = container.parent();
runs++;
}
if(runs>maxruns){
console.log('setproducttype: Could not find parent container product-container nor product-field-display');
return false;
} return false;
}
runs<=maxruns chiede
Vera se il valore di sinistra è minore o uguale a quello di destra
e nel if dice maggiore di 0 interviene if e non fa caricare i prezzi o sbaglio
ora modificando
(runs>maxruns) in (runs<maxruns)
var runs= 0, maxruns = 20;
var container = form;
while(!container.hasClass('product-container') && !container.hasClass('product-field-display') && runs<=maxruns){
container = container.parent();
runs++;
}
if(runs<maxruns){
console.log('setproducttype: Could not find parent container product-container nor product-field-display');
return false;
} return false;
}
torna a funzionare lasciando invariato il controllo !
-
torna a funzionare lasciando invariato il controllo !
Certo! Tutto il blocco ritorna sempre false però, è così che lo vuoi, immagino.
Ciao!
-
non e proppio cosi che tutto il blocco ritorna sempre false , se if interviene
if(runs>maxruns){
lui aspetta runs maggiore del maxruns x cui potrebbe anche ritornara false ma l'if interviene
ho sbaglio io a interpretare il code
per cui va messo minore
if(runs<maxruns){
ps: anche la versione 3.2.0 appena uscita stesso bug ma solo io ho questo problema?
la versione 3.0.18 era funzionante xche tutto il blocco che c'è ora era mancante.
-
La logica del tuo codice è una cosa tua. Ognuno ha i suoi gusti su come si adoperano i contatori (runs) e quando tutto funziona ed è leggibile per me va più che bene. ;)
Mi riferivo solo alla forma, cioè tu hai
- un blocco while() che esegue una operazione e aggiorna il contatore.
- un test di esame del contatore if() che opzionalmente invia un msg a console.log e ritorna false.
- un ulteriore ritorno di false alla fine se il test del contatore non esegue nessuna operazione.
- una } che dev'essere stata aperta in un punto più in alto del codice.
Per quello dicevo che ritorna sempre false.
Ciao!
-
con la 3.20 nel dettaglio ora funziona e passa anche nel carello che prima non funzionava non era solo un ponto di vista del code.
nel prodotto non varia ma nel carello arriva il prezzo giusto , in questo punto possiamo discure all'infinito del funzionamento che sia giusto o meno dal mio punto di vista variando il prodotto dovrebbe cambiare il prezzo visivamente , olmeno ora con la nuova versione funziona il caricamento nel carello.
ora sappiamo che si può far variare il prezzo anche nel prodotto lasciamo il tutto come di default di vm visto che ora funziona, e lasciamo la parola al cliente se vedere o meno la variabile funzionante anche nel prodotto.