unodeitanti.com

Modificare Virtuemart

by demo on Jan.29, 2010, under tutto

L’argomento è piaciuto nel forum di VMItalia per cui lo tratto anche in un mio post. Il tip di oggi riguarda VirtueMart ovvero la possibilità di aggiornare il carrello senza che venga mostrara lo spiacevole popup. Nello specifico, quando si clicca sul pulsate “aggiungi” appare questo popup e si può scegliere se andare nel carrello o se continuare l’acquisto nella pagina attuale. Per quello che mi riguarda, è assolutamente scomodo.

Analizzando il codice, ho verificato che il bottone è un semplice submit e la soluzione va quindi ricercata nell’evento onsubmit del tag form. Andando a vedere, si vede come venga richiamata la funzione handleAddToCart. E’ questa la colpevole della creazione del popup. Non so se sia modificabile da amministrazione questo messaggio/popup. Fatto sta che ora vi indicherò il file in cui si trova e più precisamente cosa modificare di questa funzione. L’obiettivo dell’intervento chirurgico, farà si che quando gli utenti cliccheranno su “aggiungi”, aggiorneranno immediatamente la pagina.

C’è da dire un’altra cosa: il template in cui utilizzo il mio VirtueMart, mostra il carrello lateralmente ed è per questo che non voglio che alla pressione del tasto “aggiungi” si vada nel carrello. In questo modo, ad ogni acquisto, si può vedere il carrello aggiornato lateralmente.

Il colpevole di questo popup si trova nel file [sito]/components/com_virtuemart/theme/theme.js

Al suo interno c’è la funzione di cui vi ho parlato: handleAddToCart(); Ricercate “handleAddToCart” per trovarla.

A questo punto analizziamo velocemente il codice di questa funzione:


function handleAddToCart( formId, parameters ) {
formCartAdd = document.getElementById( formId );
var callback = function(responseText) {
updateMiniCarts();
if (document.boxB) {
document.boxB.close();
clearTimeout(timeoutID);
}
document.boxB = new MooPrompt(notice_lbl, responseText, {
buttons: 2,
width:400,
height:150,
overlay: false,
button1: ok_lbl,
button2: cart_title,
onButton2: handleGoToCart
});
setTimeout( 'document.boxB.close()', 3000 );
}

var opt = {
method: 'post',
data: $(formId),
onComplete: callback,
evalScripts: true
}
new Ajax(formCartAdd.action, opt).request();
}

Questo codice, fa si che venga aperto il popup e siccome non lo volevo, ho brutalmente commentato il codice che non mi interessava ottenendo questo risultato:


function handleAddToCart( formId, parameters ) {
formCartAdd = document.getElementById( formId );
var callback = function(responseText) {
updateMiniCarts();
setTimeout( document.location.reload() , 3000 );
}
var opt = {
method: 'post',
data: $(formId),
onComplete: callback,
evalScripts: true
}
new Ajax(formCartAdd.action, opt).request();
}

Come si può vedere, ho eliminato il codice di troppo. Eheheh a dire il veri ho fatto queste modifiche così tanto tempo fa che non sono nemmeno sicuro che siano giuste. Ho postato tutto su vmitalia. C’erano alcuni utenti che aspettavano questo mio post da tempo così ho pensato di farlo anche qui. Spero di aver aiutato qualcuno in giro per la rete.

Condividi questo post sui tuoi social network preferiti:
  • Print this article!
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Twitter
  • Wikio IT
  • Live
  • RSS
  • StumbleUpon
  • Technorati
:

blog comments powered by Disqus

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!