Gratis extensie: eigen lay-out voor lege winkelwagen

mrt
25
2011

Overal binnen Magento bestaat de mogelijkheid om aandacht te vragen voor verschillende acties of bepaalde producten door middel van banners, cross-sells en up-sells. Toch is er nog een pagina die door Magento niet benut wordt: de lege winkelwagen-pagina. In dit artikel laten we zien hoe we ook deze pagina kunnen optimaliseren voor maximaal rendement.

Iedereen die wel eens met Magento heeft gewerkt kent vast de lege winkelwagen: een kale lay-out bestaande uit één kolom met een regel tekst en een link naar de home-pagina. Een gemiddelde klant zal deze pagina niet vaak tegenkomen, maar een klant met artikelen in zijn of haar winkelwagen die te lang inactief is geweest op de site zal met een lege winkelwagen komen te zitten. Een interessante plek voor u als webwinkelier om uw klant op weg te helpen naar de producten die u graag verkoopt!

Eén van de mogelijke manieren waarop we de lege winkelwagen-pagina kunnen aanpassen is door middel van het definiëren van een nieuwe ‘layout-handle‘. Deze manier biedt template-ontwikkelaars de flexibiliteit die ze van Magento gewend zijn. Om dit te bewerkstelligen zullen we een simpele doch doeltreffende extensie moeten maken.

Begin met het maken van een lege extensie, alleen de mappen ‘etc’, ‘controllers’ en ‘Model’ zijn benodigd. Om het beoogde resultaat te krijgen moeten we inhaken op het event ‘controller_action_layout_load_before’. Zoals de naam doet vermoeden wordt dit event aangeroepen vóór het laden van de lay-out, de ideale plek om deze nog even te veranderen!

[xml]

<frontend>
<events>
<controller_action_layout_load_before>
<observers>
<emptycartlayout>
<class>emptycartlayout/observer</class>
<method>setEmptyCartLayoutHandle</method>
</emptycartlayout>
</observers>
</controller_action_layout_load_before>
</events>
</frontend>

[/xml]

Door dit toe te voegen aan ‘etc/config.xml’ weet Magento dat ook onze extensie iets wil uitvoeren voordat een layout wordt geladen. De functie ‘setEmptyCartLayoutHandle’ ziet er zo uit:

[php]
public function setEmptyCartLayoutHandle($observer) {
$helperCart = Mage::helper(‘checkout/cart’);

$layout = $observer->getEvent()->getLayout();
$update = $layout->getUpdate();

if (!$helperCart->getItemsCount() && in_array(‘checkout_cart_index’, $update->getHandles())) {
$update->removeHandle(‘checkout_cart_index’)
->addHandle(‘checkout_empty_cart_index’);
}
}
[/php]

Bovenstaande functie verzamelt eerst de benodigde objecten, dit zijn respectievelijk de winkelwagen, de te laden lay-out en de zogenaamde xml-updates die op deze lay-out toegepast worden. Als de winkelwagen leeg is en de layout-handle ‘checkout_cart_index’ bestaat weten we dat we onze aangepaste layout moeten laden, hiervoor verhinderen we dat ‘checkout_cart_index’ toegepast wordt en voegen we onze eigen layout-handle ‘checkout_empty_cart_index’ toe.

U kunt nu de nieuwe layout-handle in uw template gebruiken om de layout van de lege winkelwagen-pagina te veranderen naar een exemplaar met 2 of 3 kolommen, download de extensie hier

Marco de Vries
Marco de Vries is mede-eigenaar van BigBridge en gespecialiseerd in PHP en front-end development. BigBridge bestaat uit een team van Magento e-commerce professionals. Wij geloven in focus en doen waar we goed in zijn: het ontwikkelen en optimaliseren van succesvolle Magento webshops.
Delen van deze site zijn (met toestemming) overgenomen van Magento Inc. en vertaald (meer info).
Home Privacyverklaring Gebruiksvoorwaarden Mage.Town
Schrijf je gratis in als lid van de Magento AssociationInschrijven
+ +