Joomla.it Forum

Componenti per Joomla! => Gestione e-commerce => : elenix 30 Apr 2009, 14:49:59

: Carrello virtuemart; index.php e template assegnati
: elenix 30 Apr 2009, 14:49:59
Ciao a tutti, ho un problema:
per motivi grafici uso due template, uno per la home page ed uno per il resto della navigazione.
Durante la navigazione nel carrello di virtuemart, però, virtuemart punta per due volte alla index.php. In questi due momenti mi si carica il template assegnato alla home page e non quello assegnato al resto della navigazione.
Come posso evitare questo spiacevole inconveniente?


esempio: clicco su cassa

/index.php?page=checkout.index&option=com_virtuemart&Itemid=16&redirected=1&Itemid=16

clicco su 'successivo' (metodo dispedizione)

/index.php

clicco su successivo (metodo di pagamento)

index.php?page=checkout.index&payment_method_id=4&ship_to_info_id=498518bbeb5595f40c905d0d291236be&shipping_rate_id=standard_shipping%257CPoste%2BItaliane%257CPacco%2BOrdinario%257C8.00%257C3&checkout_stage=4&option=com_virtuemart&Itemid=16
: Re:Carrello virtuemart; index.php e template assegnati
: danyjack 25 May 2009, 13:38:15
Ciao, ho anch'io lo stesso problema...e non so come risolvere. Anche cercando in giro...nulla...Tu nel frattempo hai trovato una soluzione?
: Re:Carrello virtuemart; index.php e template assegnati
: Stoned 26 May 2009, 12:13:30
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.
: Re:Carrello virtuemart; index.php e template assegnati
: elenix 26 May 2009, 12:33:37
Oggi provo e poi ti dico :)
Grazie :)
: Re:Carrello virtuemart; index.php e template assegnati
: danyjack 26 May 2009, 15:55:45
Appena riesco provo, per il momento mille grazie! ;)
: Re:Carrello virtuemart; index.php e template assegnati
: KioSirio 11 Nov 2009, 20:53:16
Ciao.
Anche io ho lo stesso problema sul mio VM 1.1.4!
Chi ha provato la soluzione sopra proposta che esiti ha avuto?
Dove ha modificato?
Ciao.
KioSirio
: Re:Carrello virtuemart; index.php e template assegnati
: mrkintaro 28 Nov 2009, 12:29:14
Il fatto è che funziona solo con AJAX attivo. se lo disattivo torna tutto come prima.
Sapete aiutarmi?
: Re:Carrello virtuemart; index.php e template assegnati
: ivaniiritano 27 Jan 2010, 13:03:40
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.

Io ho un problema simile:
Ho assegnato dei menù solomente alla home del sito ma si visualizzano anche quando cancello/aggiorno quantità elementi dal carrello, dopo aver aggiunto un prodotto nel carrello e anche nella fase di checkout.

Come posso risolvere?? ho provato come hai spiegato ma non funziona il redirect rimanda sempre alla home del sito e quindi mi visualizza quel menù che nn vorrei.

grazie
: Re:Carrello virtuemart; index.php e template assegnati
: MB82 27 Mar 2010, 10:37:19
Ho seguito le indicazioni di Stoned, ho modificato i file:

/administrator/components/com_virtuemart/html/basket.php
/administrator/components/com_virtuemart/html/checkout.index.php

Ora sia il carrello che il checkout funzionano...
MA mi rimane un problema!
OVVERO: quando l'acquirente modifica il proprio account e clicca su "salva", oppure inserisce un nuovo indirizzo di spedizione diverso da quello di fatturazione e lo salva... vengo reindirizzato sempre a index.php , con conseguente perdita del template assegnato!
Specifico che nell'ecommerce ho impostato "nessuna registrazione" per poter effettuare acquisti.

Qualcuno sa dirmi per favore dove devo mettere le mani?!
: Re:Carrello virtuemart; index.php e template assegnati
: mmleoni 28 Mar 2010, 21:39:06
ciao stoned,
penso che sia un piccolo bug nel render dell'application, in effetti la pagina viene individuata correttamente, se no apparirebbe la home page; option e Itemid vengono passati, anche se joomla sembra usarli scorrettamente per scegliere il template.

ho scritto un piccolo plugin che se individua un post a virtuemart forza joomla a inizializzare il template.

nel mio caso funziona: il vantaggio è che non obbliga a modificare i file del core di virtuemart e quindi non dà problemi in caso di aggiornamento, dovrebbe risolvere anche il problema di MB82.

fatemi sapere.

ciao,
marco


[allegato vecchio più di un anno eliminato automaticamente]
: Re:Carrello virtuemart; index.php e template assegnati
: maxdrome 01 May 2010, 12:10:21
Ragazzi , leggendo il post pensavo di aver risolto il problema ... ma mentre in locale la modifica funziona perfettamente in remoto quando clicco aggiungi prodotto mi carica il template base (e mi indirizza a indeh.php) poi continuando in cassa tutto torna al template impostato per l'e-commerce , ho provato anche il plug in di mmleoni ma addirittura mi mantiene il template della home per tutto anche per e-commerce ...uso Joomla 1.5 e VM 1.4 ....
Che posso fare d'altro ?
: Re:Carrello virtuemart; index.php e template assegnati
: elgabs 31 Jul 2010, 10:53:31
Ciao a tutti,
intanto grazie mille per aver postato delle soluzioni e dei plugin.

Credo di aver fatto tutti i passaggi che avete suggerito, ma nulla di fatto. Anche a me carica di base per il carrello il template assegnato solo alla home page.

Avete sperimentato altre cose, nel frattempo?

--- POSSIBILE SOLUZIONE ALTERNATIVA?? ------
Nel giro di smanettamenti vari mi è venuta in mente una cosa: ma se si cambiassero tutti gli url con sh404sef o simili, e poi si inserisse nel pannello di configurazione dello shop, alla voce:

"ulteriori Impostazioni Base" > HOMEPAGE> il nuovo indirizzo dello shop (risultante dall'applicazione di sh404)?

è una cosa che ancora non ho tentato, non vorrei impelagarmi in mille altri problemi connessi ai sef..
qualcuno ha provato anche questa strada oppure sto dicendo corbellerie?

Grazie per ogni suggerimento
: Re:Carrello virtuemart; index.php e template assegnati
: elgabs 02 Aug 2010, 12:27:20
Risolto!!! (ai moderatori, non so come si faccia ad assegnare [RISOLTO] al thread..)

Ragazzi, se può interessarvi ieri ho trovato un'utilissima discussione sul forum inglese di virtuemart ed ecco che cosa bisogna fare per risolvere il problema di redirect alla index.php.

Questo, intanto è il link al thread dove hanno risolto il problema (l'autore della soluzione si chiama Pollar)

http://forum.virtuemart.net/index.php?topic=34989.msg170542#msg170542 (http://forum.virtuemart.net/index.php?topic=34989.msg170542#msg170542)

In pratica bisogna:

- aprire il file libraries/joomla/application/application.php
- trovare le stringhe
:
// get the full request URI
$uri = clone(JURI::getInstance());

e aggiungere subito dopo
:
// VM uri fix
if (!$uri->getVar('Itemid') && isset($_REQUEST['Itemid']) || !$uri->getVar('option') && isset($_REQUEST['option'])) {
if (!$uri->getVar('Itemid') && isset($_REQUEST['Itemid'])) {
$uri->_query = ($uri->_query ? '&' : '').'Itemid='.(int)$_REQUEST['Itemid'];
}
if (!$uri->getVar('option') && isset($_REQUEST['option'])) {
$uri->_query = ($uri->_query ? '&' : '').'option='.$_REQUEST['option'];
}
parse_str($uri->_query, $uri->_vars);
}
// end VM uri fix

Fatto ciò a me ha funzionato benissimo! Ho controllato con altri componenti installati (non ne ho moltissimi, ma qualcuno riportava conflitti con Acajoom; io ho acajoom ma non sembra dare problemi di nessun tipo, almeno per ora..)

Buon divertimento!
: Re:Carrello virtuemart; index.php e template assegnati
: korben 02 Sep 2011, 10:27:50
Ciao a tutti cercavo la soluzione al problema segnalato ed ho trovato questo topic.

Ho seguito la soluzione di elgabs e adesso cliccando sul tasto aggiungi sembra funzionare, non funziona sul carrello:
provando infatti da li a modificare le quantità o eliminando l'articolo ritorna sempre alla home del sito.

Avete qualche idea?

Saluti a tutti
: Re:Carrello virtuemart; index.php e template assegnati
: simsar78 20 Jan 2012, 09:58:06
Nessuno sa nulla a rigurado ???