[mod] Verder winkelen vanuit shoppingcart
Posted: Tue Aug 02, 2011 3:50 am
Standaard als je in OC naar je shoppingcart gaat staat er onderin een knop "verder winkelen". Ik vindt het zelf niet praktisch dat deze je naar de homepage teruggestuurd en niet naar bijv. de laatste pagina waar je producten hebt bekeken. Om dit wel mogelijk te maken heb ik de volgende oplossing:
Stap 1
Voeg de volgende functie toe aan de Controller class in de core. (engine/controller.php)
protected function getcurrenturl() {
$url = 'http://' .$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
return htmlentities(strip_tags($url));
}
Deze functie geeft de huidige URL van de pagina terug.
Stap 2
Om de pagina op te slaan die we willen voeg je onderstaande code toe in de de controller van de desbetreffende pagina. Ik heb dit zelf gedaan bij category, manufacturer, search en special. Dit zijn allemaal pagina's waar producten op staan en ik het prettig zou vinden om naar de juiste afdeling en bijv pagina 5 van 20 te kunnen gaan. Voed dus onderstaande code toe in de controller, ik heb m zelf als eertse in de index functie gezet van elke controller.
$this->session->data['last_page'] = $this->getcurrenturl();
Bij elke pagina die je bezoekt waar deze code in de controller staat wordt de huidige waarde overschreven met de nieuwe. Er is dus altijd maar 1 URL beschikbaar. Ik sla de URL op in een sessie zodat het voor een bezoeker mogelijk is om vanuit de cart naar bijv de contactpagina te gaan, terig te keren naar de cart pagina en alsnog verder te winkelen waar hij was gebleven.
Stap 3
Ga naar catalog/controller/checkout/cart.php en vervang dit:
$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';
door dit:
if(isset($this->session->data['last_page'])){
$this->data['continue'] = $this->session->data['last_page'];
}else{
$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';
}
Wat dit doet is controleren of de sessie een waarde heeft. Als dat zo is gebruikt ie deze voor de redirect, zo niet dan wordt je gewoon naar de homepage teruggestuurd.
Hopelijk heeft iemand er wat aan voor een betere user experience.
Stap 1
Voeg de volgende functie toe aan de Controller class in de core. (engine/controller.php)
protected function getcurrenturl() {
$url = 'http://' .$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
return htmlentities(strip_tags($url));
}
Deze functie geeft de huidige URL van de pagina terug.
Stap 2
Om de pagina op te slaan die we willen voeg je onderstaande code toe in de de controller van de desbetreffende pagina. Ik heb dit zelf gedaan bij category, manufacturer, search en special. Dit zijn allemaal pagina's waar producten op staan en ik het prettig zou vinden om naar de juiste afdeling en bijv pagina 5 van 20 te kunnen gaan. Voed dus onderstaande code toe in de controller, ik heb m zelf als eertse in de index functie gezet van elke controller.
$this->session->data['last_page'] = $this->getcurrenturl();
Bij elke pagina die je bezoekt waar deze code in de controller staat wordt de huidige waarde overschreven met de nieuwe. Er is dus altijd maar 1 URL beschikbaar. Ik sla de URL op in een sessie zodat het voor een bezoeker mogelijk is om vanuit de cart naar bijv de contactpagina te gaan, terig te keren naar de cart pagina en alsnog verder te winkelen waar hij was gebleven.
Stap 3
Ga naar catalog/controller/checkout/cart.php en vervang dit:
$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';
door dit:
if(isset($this->session->data['last_page'])){
$this->data['continue'] = $this->session->data['last_page'];
}else{
$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';
}
Wat dit doet is controleren of de sessie een waarde heeft. Als dat zo is gebruikt ie deze voor de redirect, zo niet dan wordt je gewoon naar de homepage teruggestuurd.
Hopelijk heeft iemand er wat aan voor een betere user experience.