JustSnowboard.nl Snowboardshop op basis van Magento Wij maken solide webapplicaties op basis van het CakePHP framework Wij beheren en onderhouden Magento E-commerce websites
E-commerce site op basis van Magento voor iPhone hoesjes
Home » Archief » Magento - Aquive Media

Magento order workflow uitgelegd

De Magento workflow kan voor de beginnende webwinkelier nog wel eens verwarrend zijn. Echter zit het toch logisch in elkaar. Het is zo ontworpen een order altijd binnen de workflow past. Er zijn geen uitzonderingen. Als deze er wel zijn dient er een eigen status aangemaakt te worden wat sinds versie 1.5 kan.

De standaard workflow ziet er dan als volgt uit.

Order goed binnengekomen: Gaande (Processing)
Order niet goed binnengekomen of voortijdig (handmatig) afgebroken: Geannuleerd (Canceled)
Order doorgestuurd naar betaalpagina, maar daarna geen feedback meer terug gekregen: Wachtende (Waiting for Payment)

Om een order af te handelen zijn er 2 voorwaarden:

  • Een factuur genereren
  • Een zending aanmaken

Als je aan beide voor waarden voldoet dan is een order: Voltooid

Bij een iDeal betaling wordt een factuur direct aangemaakt nadat het betaald is. Als je een bedrag overgemaakt krijgt op je bankrekening maak je zelf een factuur aan wanneer je het bedrag hebt ontvangen, hiermee registreer je dus handmatig de betaling.

Daarna kan je de zending aanmaken. Je kan ook eerst de zending aanmaken en dan pas de factuur (achteraf betalen). Echter de order zal niet op voltooid gaan wanneer je niet aan beide voorwaarden voldoet. Logisch, want er moet betaald zijn en de order moet verstuurd zijn.

Dan is er nog een status na deze stap dat is een eventuele terugbetaling via een creditmemo. Dit kan je overigens altijd doen nadat er is betaald. Dus ook voordat je een zending verstuurd. Immers een klant kan beslissen af te zien van een order voordat het überhaupt verzonden is. Als je dat doet is een order: Gesloten

Verder kan je bij sommige statussen waarbij het relevant is een order Stopzetten (on hold) zetten. Dit is een soort pauze stand, je kan een order dan weer activeren waardoor het z’n eigen status weer terug krijgt.

Wil je meer weten? We hebben eerder een artikel gepubliceerd waarin de order workflow van Magento schematisch is uitgewerkt.

 



Dymo labelwriter Extension released

Onze eerste Magento Connect Extension is een feit. De Magento Dymo Labelwriter Directprint. Afgelopen tijd zijn we druk bezig geweest met het maken van deze module én om het in Magento Connect te krijgen. Hier zijn allemaal specifieke eisen voor, vandaar dat het wat lang heeft geduurd. Voor webwinkeliers die veel met briefpost hun bestellingen versturen is dit een must have Extension. Knip en plakwerk van adressen is er dan niet meer bij. Het bespaart  erg veel tijd. Voor meer informatie is onze Magento extension store te bekijken.



Magento order status/states workflow diagram

Voor een klant was het de bedoeling om de standaard Magento workflow aan te passen aan zijn specifieke wensen. De eisen waren als volgt. Nieuwe status speciaal voor de leverancier “gereed voor verzending” met een eigen nieuwe transactionele email. En een nieuwe status “factuur geboekt”. Nu is het vanaf versie 1.5 mogelijk om eigen “statussen” toe te voegen. Maar dit is eigenlijk niets meer dan een simpele label die gekoppeld is aan een “state”. Om aan deze statusen nieuwe actie te hangen zoals het versturen van een email is er maatwerk nodig.

Om de wensen in te kunnen passen in de huidige workflow hebben we eerste de huidige workflow in kaart gebracht. Het voordeel is dat het daarna erg makkelijk is aan te wijzen, zowel voor de klant als voor de developers, waar wat gewijzigd moet worden om tot het beoogde resultaat te realiseren. Overigens heb ik eerst nog gezocht naar een uitwerking van een diagram. Deze heb ik niet kunnen vinden. Daarom deel ik mijn versie hier, wellicht dat er iemand wat aan heeft. Overigens is het een concept versie. Dus er kunnen dingen verkeerd of onvolledig zijn.

Wilt u maatwerk aanpassingen aan de workflow van uw Magento webshop? Neem dan contact met ons op.



Magento en A/B Split testen met Google website optimizer

Split testen kan erg nuttig zijn. Maar kost ook vaak erg veel moeite en tijd om op te zetten. Magento heeft gelukkig een ingebouwde integratie met Google website optimizer. In deze post leg ik uit hoe je dit aan de kant van Magento kan configureren. Dit is namelijk niet echt heel duidelijk. Allereest moet de “Module” voor GWO aangezet worden. Dit kan via: Systeem > Configuratie > Verkoop > Google API > Google Website Optimizer. Als je dit hebt aangezet zullen er op verschillende locaties in de backend extra tabbladen verschijnen. Deze heten bijvoorbeeld “Categorie zicht optimalisatie” of “Product zicht optimalisatie”.

Als je een test maakt in GWO dan krijg je een aantal codes die je moet gebruiken in de webshop. Normaal gesproken zou je dit allemaal automatisch moeten kunnen installeren. Maar tegenwoordig werkt dat blijkbaar niet meer. Dit moet dus handmatig. Welke code waar thuis hoor was voor mij niet zo duidelijk, maar na wat testen heb ik het uit kunnen vogelen. Op de eerste regel van de code de je krijgt van Google staat een regel commentaar wat je al aardig opweg helpt. De volgende code moet namelijk in de invoer veld van “Controle Script”.

<!-- Google Website Optimizer Control Script -->

Vervolgens heb je twee verschillende code’s die dezelfde eerste regel hebben, dat ziet er zo uit.

  <!-- Google Website Optimizer Tracking Script -->

Ze zijn echter wel verschillend. Er staat namelijk ergens in het midden in hint waarmee je weet waar de codes thuishoren. Het gaat om de volgende twee regels die dus elk in de verschillende stukken code zitten.

_gaq.push(['gwo._trackPageview', '/0123456789/test']);

 

_gaq.push(['gwo._trackPageview', '/0987654321/goal']);

Let op de  woorden “test” en “goal”. Nu kan waarschijnlijk al raden welke waar ze horen. De “test” code moet in het veld van “Volg Script” de “goal” code moet vervolgens in het veld “conversie script”. That’s it.

Nadat je dit hebt gedaan kan je beginnen met testen. En natuurlijk het leukste gedeelte, de resultaten afwachten. Vergeet niet lang genoeg te wachten, dus totdat er een significante winnaar is gekozen door GWO. Als je dit niet doet kan je hele verkeerde resultaten krijgen en kan alles averechts werken.

Is het opzetten van een test nog steeds te lastig? Wij kunnen altijd advies geven of het compleet uit handen nemen. Neem daarvoor vrijblijvend contact met ons op.

Een andere mogelijkheid is om dit met Visual Website Optimizer te doen. Je kan hiermee nog makkelijker testen door gewoon onderdelen aan te klikken en bijvoorbeeld te verplaatsen. Dit werkt erg handig. Binnenkort waarschijnlijk meer hierover.



iPhone bookmark icon toevoegen aan je (Magento) site

E-commerce verplaatst langzaam maar zeker naar mobiele apparaten. Ik denk niet dat ik een bron hoef aan te halen omdat iedereen dit wel zal erkennen. Dit merk ik vooral ook bij mezelf ook omdat ik steeds vaker webshops opzoek op een mobiel device. Met de opkomst van tablets zal dit nog veel meer worden. Op iOS devices zoals op de iPhone en iPad kan je een bookmark maken van een website op je homescreen. Standaard word hiervoor een leeg wit icoontje geplaatst. Om extra op te vallen kan je dit icoontje zelf wijzigen. Dit werkt overigens voor elke website. Hoe je dat doet staat hieronder beschreven.

Stap 1: Maak en PNG bestand van exact 57×57 pixels en noem deze “apple-touch-icon.png”.

Stap 2: Upload het naar de root of een andere directory op de server.

Stap 3: Voeg het volgende element toe in de tag van de website.

<link rel="apple-touch-icon" href="apple-touch-icon.png" />

Om vervolgens te testen hoe dit er uit ziet ga je naar safari en open je de website. Kies vervolgens voor meer opties, en kies voor “Zet in beginscherm”. Er zal nu een bookmark gemaakt worden in de homescreen van je device met het logo die je zelf hebt gemaakt. Je krijgt gratis een Apple glans over je logo. Dat ziet er dan bijvoorbeeld zo uit.



Magento winkelwagen en contact formulier pagina’s beveiligen met SSL

Een standaard SSL installatie voor Magento is redelijk simpel te realiseren. Na installatie en configuratie van de beveiligde verbinding zijn het afreken proces en de klant account pagina’s netjes beveiligd. Nu is het zo dat voor sommige keurmerken het ook vereist is om de winkelwagen en/of contact formulieren ook te beveiligen met SSL. Nu is het erg verleidelijk om dit rechtstreeks in de core aan te passen omdat het in principe maar één regel code is. Maar dit is natuurlijk niet te adviseren want na een core update zullen dit soort wijzigen simpelweg overschreven worden en gaat het dus verloren.

Om een bepaalde pagina via SSL te beveiligen moet de config.xml bestand van de betreffende module aangepast worden. Voor de contact pagina zou dat het volgende betekenen. Deze aanpassing zou moeten zorgen dat de verbinding beveiligd is.

<config>
    <frontend>
	<secure_url>
	  <contacts>/contacts</contacts>
	</secure_url>
    </frontend>
</config>

Voor de shopping cart ziet het er als volgt uit.

<config>
    <frontend>
	<secure_url>
	  <checkout_cart>/checkout/cart</checkout_cart>
	</secure_url>
    </frontend>
</config>

Om het netjes te doen is het beter om dit soort kleine wijzigen onder te brengen in een “project module”. Alle kleine aanpassingen die zo klein zijn dat ze niet een eigen module hebben kunnen hierin ondergebracht worden. Zo wordt de core niet aangepast en de module is eventueel te hergebruiken voor andere projecten.

Maak de twee bestanden aan met de volgende inhoud op de juiste locatie.

<?xml version="1.0"?>
<config>
    <modules>
        <Aquivemedia_Sslpages>
            <active>true</active>
            <codePool>local</codePool>
        </Aquivemedia_Sslpages>
    </modules>
</config> 


<?xml version="1.0"?>
<config>    
    <modules>
        <Aquivemedia_Sslpages>
            <version>0.1.0</version>
        </Aquivemedia_Sslpages>
    </modules>
    <frontend>
	<secure_url>
	    <checkout_cart>/checkout/cart</checkout_cart>
            <contacts>/contact</contacts>
	</secure_url>
    </frontend>
</config>

Om te controleren of Magento de module/bestanden goed ingeladen heeft kan je via de backend naar “Systeem > Configuratie > Geavanceerd” gaan. Als het goed geladen is staat de module in de lijst. Vergeet niet ook de cache te legen.



Handmatig Magento connect modules downloaden

Voor Magento zijn er op Magento Connect heel veel modules te vinden. Deze zijn te installeren via de Magento Connect Manager in de backend van Magento. Het probleem is echter vaak dat alle bestanden beschrijfbaar moeten zijn. In een normale live omgeving wil je dat uit security oogpunt natuurlijk niet. Een oplossing is om het tijdelijk beschrijfbaar te maken, en na de installatie weer terug te zetten. Maar deze methode lijkt me ook niet fool-proof. Daarnaast is er ook SSH toegang nodig op de server wat niet iedereen zal hebben. Een erg goed alternatief wat ik persoonlijk altijd doe is het handmatig downloaden en installeren van een module.

Om een module te downloaden ga je als volgt te werk. Zoek de extensie op in Magento Connect die je wilt downloaden. En haal de “extension key” op. Gebruik niet de extension key knop op de hoofdpagina, maar ga eerst naar het tabblad releases, en pak de nieuwste versie. Deze zou je normaal gesproken gebruiken in de Magento Connect Manager. Gebruik dan de volgende url om de module te downloaden.

http://connect.magentocommerce.com/community/get/[naam_van_de_module].tgz

Vervang [naam_van_de_module] door het deel van de extension key wat achter de slash staat. Dus bij de volgende extension key: magento-community/magento_classic_theme_free-1.4.1.2 zou de url er als volgt uitzien.

http://connect.magentocommerce.com/community/get/magento_classic_theme_free-1.4.1.2.tgz

Plak vervolgens de url in de browser om de module te downloaden. Mocht je er niet uitkomen wat de url betreft laat dan even een reactie achter. Als het wel lukt kan je met Winrar is dit archief vervolgens uit te pakken.

Installatie van een dergelijke module is niet altijd erg straigtforward. In het bestand package.xml staat waar elk bestand hoort te staan. Dit is erg cryptisch en soms zelfs verwarrend. De planning is dat ik hierover later een artikel ga schrijven.



Magento usability en SEO verbetering door categorie titel

Voor een webshop wat ik beheer en onderhoud moest ik vanuit SEO oogpunt verbeteringen aanbrengen. Ik ben begonnen met het analyseren van de pagina’s en hoe gebruikers hierop komen. Het bleek dat veel bezoekers binnen komen op een subcategorie pagina in de webshop. In de betreffende webshop worden iPhone accessoires aangeboden. Voor elk apparaat is een hoofdcategorie aangemaakt zoals iPhone 3G en iPhone 4. Daaronder hangen dan weer de sub categorieën. Het probleem echter is dat wanneer je via een deeplink binnenkomt op een subcategorie je niet direct kan zien tot welke apparaat de accessoires behoren. De naam van de subcategorie word namelijk ook gebruikt als titel in de H1-tag boven de categorie. Een goede oplossing zou zijn als je deze titel zelf kon ingeven in de backend. Dit is vanuit usibilty maar ook vanuit SEO perspectief een verbetering aangezien je voor bezoekers én zoekmachines duidelijk kan maken wat er op de pagina te vinden is. In deze post geef ik een beschrijving van hoe dit te realiseren is.

Na een zoektocht via Google kwam ik verschillende oplossingen tegen. Je kan zelf de Magento functionaliteit uitbreiden door rechtstreeks de database aan te passen. Maar er zijn betere oplossingen. Op een franse blog kwam ik een oplossing tegen voor het maken van een mini-module. Ik zal voor het gemak de gebruikte namen hetzelfde laten.

Maak de volgende bestanden aan:

app/code/local/Magentix/CategoriesAttributes/etc/config.xml
app/code/local/Magentix/CategoriesAttributes/sql/categoriesattributes_setup/mysql4-install-0.1.0.php
app/etc/modules/Magentix_CategoriesAttributes.xml

De inhoud van config.xml

<?xml version="1.0"?>
<config>
   <modules>
      <Magentix_CategoriesAttributes>
         <version>0.1.0</version>
      </Magentix_CategoriesAttributes>
   </modules>
   <global>
      <resources>
         <categoriesattributes_setup>
            <setup>
               <module>Magentix_CategoriesAttributes</module>
               <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
            </setup>
            <connection>
               <use>core_setup</use>
            </connection>
         </categoriesattributes_setup>
      </resources>
   </global>
</config>

De inhoud vanmysql4-install-0.1.0.php

<?php
 
$installer = $this;
 
$installer->startSetup();
 
$installer->addAttribute('catalog_category', 'category_title', array(
                        'type'              => 'text',
                        'backend'           => '',
                        'frontend'          => '',
                        'label'             => 'Category Title',
                        'input'             => 'text',
                        'class'             => '',
                        'source'            => '',
                        'global'            => 0,
                        'visible'           => 1,
                        'required'          => 0,
                        'user_defined'      => 0,
                        'default'           => '',
                        'searchable'        => 0,
                        'filterable'        => 0,
                        'comparable'        => 0,
                        'visible_on_front'  => 0,
                        'unique'            => 0,
                        'position'          => 1,
                    ));
 
$installer->endSetup();

De inhoud van Magentix_CategoriesAttributes.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Magentix_CategoriesAttributes>
            <active>true</active>
            <codePool>local</codePool>
        </Magentix_CategoriesAttributes>
    </modules>
</config>

Nadat je dit hebt gedaan kan je inloggen in de magento backend, en de cache legen als deze aanstaat. Er zijn nu een aantal records toegevoegd aan de database wat zorgt dat er een nieuwe veld bij gekomen is bij de categorie beheer pagina.

Dit veld kan nu ingevuld worden. Om er ook nog wat aan te hebben moet er natuurlijk ook iets aan de frontend kant iets gebeuren. Open nu het volgende bestand:

/app/design/frontend/default//template/catelog/category/view.phtml

Als deze niet bestaat maak deze dan aan, en haal de inhoud of het bestand zelf van de volgende locatie:

/app/design/frontend/base/default/template/catelog/category/view.phtml

Verwijder de volgende regel:

 <h1><?php echo $_helper->categoryAttribute($_category, $_category->getName(), 'name') ?></h1>

En vervang het door het volgende:

<?php if($_category->getShortDescription()) : ?>
        <h1><?php echo $_category->getShortDescription(); ?></h1>
<?php else: ?>
    	<h1><?php echo $_helper->categoryAttribute($_category, $_category->getName(), 'name') ?></h1>
<?php endif; ?>

Als er niets is ingevoerd in het nieuw aangemaakte veld in de backend veranderd er niets. Als er wel iets ingevuld is verschijnt dit in de H1 tag boven de categorie. Meer duidelijkheid voor de bezoekers en goed voor SEO. Twee vliegen in één klap. Test dit natuurlijk altijd op een test server voordat je het toepast op een productie server.



Archief per maand:

Archief per onderwerp: