Anch'io ho riscontrato lo stesso problema: assegnato un particolare tema allo shop e dando un altro tema al resto del sito, in alcuni "passaggi" di virtuemart si fa riferimento al file index.php (a cui è associato un altro template) e tutto salta.
Un esempio pratico (e rapido da vedere) di questo problema si ha quando nel carrello si aggiorna un prodotto (o si elimina).
Prendiamo, appunto, il carrello (ma l'esempio vale, con le opportune modifiche, anche per gli altri casi, checkpoint compreso)
Dove sta il problema ?
Analizzando il codice html generato da virtuemart si nota come (naturalmente) il carrello sia un form. L'action di questa form viene generata dinamicamente dal sito, ed è proprio in questa fase che si ha il problema: il link a cui mandare il form (che poi sarà quello dove si viene rediretti) viene generato partendo dal file index.php del sito...se questo ha un template assegnato diverso, succede il casino
Come risolvere il problema ?
Prendiamo il file relativo al carrello, ovvero il file
/administrator/components/com_virtuemart/html/basket.php
Con il nostro fidato editor andiamo a cercare la stringa
$action_url
La troveremo più o meno alla riga 133, inserita nella riga di codice che genera, appunto, l'indirizzo dell'action
$action_url = $mm_action_url.basename($_SERVER['PHP_SELF']);
La variabile _SERVER['PHP_SELF'] altro non contiene che l'indirizzo della pagina che ha generato la pagina corrente ed in questo caso, come in tutti quelli che riguardano joomla, restituirà "index.php" nudo e crudo...se all'index semplice (ovvero all'home page) è assegnato un altro template, avremo il nostro problema.
A questo punto si può o aggiungere il resto dei parametri che normalmente vengono passati all'indirizzo che viene generato oppure (cosa che a me è sembrata più pulita) usare la variabile
$_SERVER['REQUEST_URI']
Che restituisce l'indirizzo completo della pagina che è stata generata, comprensivo di parametri (o di url friendly).
La nuova riga diventa dunque
$action_url = $mm_action_url.basename($_SERVER['REQUEST_URI']);
che a me, personalmente, funziona perfettamente
Per il checkout stesso identico discorso (trovate dove viene generata l'action e sostituite)
Spero di esservi stato d'aiuto.