Magento Commerce

Sedan våren 2008 har vi jobbat fokuserat med den öppna e-handelsplattformen Magento Commerce. Vårt första projekt bestod av att etablera en ny webshop för bokförlaget Libris - www.libris.se. Sedan denna lansering har vi jobbat med ett antal mindre butiker och är just nu i full färd med att lansera två större varumärken på denna teknik. Vi är djupt imponerade över Magento och publicerar här löpande våra erfarenheter av arbetet med denna teknik.

Vill du veta mer? Tveka inte att höra av dig så berättar vi mer.

Det planeras ett nytt Bargento i Paris. En gathering med representanter från Varien som kommer och pratar Magentos framtid. Ett utmärkt tillfälle att träffa geeks, partners, upphovsmännen och annat.

Arrangörerna funderar på att göra detta till ett engelskt event så att vi som inte kan franska även har nytta av detta. De har en request på sin sida nu där de ber oss höra av sig om vi vill att det skall bli ett engelskt event. Om de får 100 intresseanmälning så blir det av.

Följ länken och meddela ditt intresse så tycker jag att vi möter upp där nere i slutet av maj!

http://www.bargento.fr/bargento-4/international-event-bargento-4-goes-english-compliant/


I veckan har jag haft förmånen att få lägga händerna på min första installation av Magento Enterprise 1.7 och kunnat göra en rad storskaliga tester. Jag har varit nyfiken på denna version eftersom den har implementerat Page Cache vilket innebär att för de sidor där sessions-objektet ännu inte är aktiverat. D.v.s. kategorisidor, produktsidor och andra delar av sajten går blixtsnabbt så länge man inte använder Recently Viewed Products eller lägger någon produkt i varukorgen. Då slutar Page Cache fungera och prestandan sänks till mer normala nivåer.

Från att hantera 40 requests/sekund klarar Magento Enterprise 1.7 nu av ca 250 anrop per sekund. Denna förändring är avgörande för att påtagligt höja den begränsade prestandan i systemet. I fredags satt jag i en telefonkonferens med en tekniker från Varien och fick veta att man i en framtida version planerar Page Cache, inte bara på alla sidor som saknar sessioner, utan alla template-filer som inte använder sig av sessioner. Det betyder att även om man lägger något i varukorgen så kommer delar av varje sida att alltid ligga under Page Cache. Enligt dem själva i upp till 99% av anropen. Det låter ju onekligen hoppfullt.

Äntligen känns det som att Magento börjar nå en prestandanivå som tillåter tillräckligt storskalig drift. Jag har inte följt planerna för Community Edition på sistone men jag antar att man inte kommer att lägga Page Cache annat än i Enterprise-versionen. Jag har funderat över om det skulle vara möjligt att bygga en egen modul som ger motsvarande funktionalitet i Community Edition. Kanske. Någon som har en idé?


Jag gillar eAccelerator framför PHP’s egna APC-accelerator. Det är skönt att ha kontroll över konfigurationer och jag gillar rapporteringen i status-sidan. Men det finns ett problem med nyare versioner av eAccelerator om man vill köra det samtidigt som Magento. Det bryter inloggningsmöjligheterna på admin och Frontend spökar när man skall visa ut kategorisidor.

Lyckligtvis finns det några skarpa huvuden i forumen som hittat lösningar på detta. Tyvärr kräver den ena lösningen modifikationer i Zends kodbas vilket gör att man måste göra modifikationer som inte går att extenda i local-mappen. Den andra ändringen går dock extenda på sedvanligt vis.

Följ den här tråden så hittar du lösningen. Fungerar bra. Och man kan fortsätta använda eAccelerator. Det här känns som bad behaviour i Magento och inte något fel i eAccelerator.

http://www.magentocommerce.com/boards/viewthread/56007/


En sak som irriterat mig länge är det faktum att Magento använder sig av “Skr” som valutakod för svensk valuta istället för den mer vanliga “SEK” som används i många sammanhang. Det må vara hänt att amerikanarna inte har koll på detta men vad som är mer märkligt är att det är så svårt att ändra denna valutakod.

Anledningen till detta är att Magento förlitar sig på det underliggande ramverket Zend för detta och det är här som dessa konfigurationer hanteras. Om du vill ändra denna inställning i Magento söker du upp filen:

lib/Zend/Locale/Data/root.xml

Ungefär på rad 3050 ligger där den svenska valutakoden som i normalfallet är “Skr”. Man kan enkelt ändra denna genom att byta ut Skr mot t.ex. SEK eller “Kr”


En av de trevligate funktionerna med Magento är så kallades Path Hints som visar ut vilka filer som de olika blocken renderas ifrån. Detta styrs genom administrationsgränsnittets System -> Configuration -> Avancerad -> Developer. Detta är riktigt smidigt men blir ibland ganska jobbigt om sajten man skall göra det på ligger i skarp drift. Man vill ju inte att alla besökare skall se dessa path hints när de surfar runt. Det är det ju bara jag som skall se.

Magento Path Hints

Ofta hanteras detta av att man har två separata sajter att jobba på. En för utveckling och en för skarp drift. Men ibland har man inte den lyxen då vissa kunder inte vill betala för det. Men det finns en annan lösning som är ganska smidigt.

Jag byggde en enkel patch som lägger till ytterligare ett alternativ. Genom att klistra på queryparametern “?showPathHints=true” på vilken sida som helst på sajten så slås “path hints” på för just detta request. Då slipper man gå in och ändra i admin plus att man slipper bekymra andra användare med denna information.

Riktigt smidigt och enkelt. Detta återskapar den funktionaltiet som redan finns i Joomla där man klistrar på tp=1 på any given url på sajten.

Ladda ned patchen här och testa om du vill.


Det mesta i Magento är riktigt bra men vissa delar är märkligt eftersatta. Det som besvärat mig mest är nyhetsbrevet som tenderar att bli olidligt långsamt när man börjar ha några tusen prenumeranter. Problemet uppstår när man har ett eller fler brev i nyhetskön, ju fler totala prenumeranter desto långsammare laddningstid.

Jag har jobbat i två olika webshoppar som haft ca 10 000 medlemmar var där laddningstiden på kösidan för nyhetsbrevet kan bli så mycket som 10 minuter. Om man sedan lägger fler brev i kö ökas tiden proportionellt. Alldeles för lång tid för att det skall gå att jobba med på ett professionellt sätt. Särskillt eftersom man måste gå igenom denna väntan två gånger när man skickar ut ett brev. Först när man lägger det i kö och sedan när man startar kön. Att sedan ladda om kön för att se hur långt det kommit tar sedan lika lång tid varje gång.

Lösningen har hitills varit att antingen tömma kön(direkt via databasen) varje gång(fler nyhetsbrev i kön > längre laddningstid) eller använda ett externt mailsystem som t.ex. Mailchimp eller PHPList. Även om Magento själva rekommenderar att man använder sig av ett extern system så är det många butiksägare som vill ha ett enkelt inbyggt system. så jag bestämde mig för att gräva lite i koden och försöka utröna vad det är som gör det så långsamt. Och efter en stunds letande hittade jag problemet och en ganska enkel lösning.

Jag kom fram till att det som tar mest tid vid laddningarna är märkligt nog att räkna ut hur många i kön som skall ta emot nyhetsbrevet. Tar man bort den kolumnen så laddar sidan på under en sekund istället för 5-10 minuter. Det innebär att denna lösning inte visar hur många som kommer att få ta emot nyhetsbrevet men väl hur många det har skickats till vilket ändå är den viktigaste informationen. Så om du lägger upp den bifogade patchen så kommer ditt nyhetsbrev att rulla på mycket snabbare.

Magento Newsletter Patch

Lycka till!


Jag skrev tidigare om att Varien ville ha våra röster på vad som bör prioriteras högst i nästa version av Magento. Efter ett par veckor av friskt röstande har Varien nu bestämt sig för att ta in följande 5 funktioner/önskemål i utvecklingsarbetet:

  1. Optimera koden (601 röster)
  2. Utförlig dokumentation (283 röster)
  3. Officielt verktyg för migrering från OSCommerce (40 röster)
  4. “Kunder som köpte denna har även köpt…” (26 röster)
  5. Förbättrad sök. Idag fungerar den dåligt på produkter med liknande namn.

Hela listan

Detta är väl helt ok men två väldigt populära funktioner lyser med sin frånvaro:

  1. Redigera order utan att behöva skapa en ny (327 röster)
  2. RMA-stöd (191 röster)

Men attityden att köra med transparenta önskemål så får man lätt en bild över vad andra i utvecklingssfären efterfrågar. Och även om Varien själva inte kommer att bygga alla delar kan det här ju ge oss i utvecklarcommunityn en bild av vad som skulle kunna utgöra en bra grund för nya plugins.

Swedmedia kommer att släppa två intressanta plugins de närmaste 2 veckorna. Vi återkommer om detta.

Picture 2


Magento fortsätter med sitt höga tempo och nu har det blivit dags för oss användare/utvecklare att rösta fram de funktioner vi vill se i Community Edition den närmaste framtiden. Magento har lagt upp en sida där man får föreslå funktioner eller rösta fram det man tycker är viktigast. Bra initiativ. Jag lägger mina röster på RMA-stöd och bättre hantering av CMS-sidor/CMS-block.

Logga in och lägg din röst.

http://magento.uservoice.com/pages/24441-magento-community-edition-roadmap


Varien/Magento har varit ganska försiktiga med att lova något när det gäller Roadmaps för Magento. Förståeligt då det kan vara lite osäkert var produkten är på väg. Men igår publicerade man färdplanen för Magento Enterprise för sina partners runt om i världen. Presentationen finns ännu bara på tyska så min Google Translate-tyska kanske inte är den bästa men jag tror ändå att vi kan vara rätt säkra på att följande funktioner kommer under året:

Q3 2009

  • Riktade produkter – Visa utvalda produkter till användare för att öka det genomsnittliga ordervärdet i butiken. Kan handla om anpassade upsells etc.
  • Riktade annonser till kunder baserat på köphistorik. T.ex. annonser baserade på tidigare köp eller produkter i varukorgen.
  • Förbättrad CMS. Detta är välkommet även om CMS-delen aldrig bör bli för stor. Men nu kommer i alla fall en duglig WYSIWYG-editor med uppladdning av bilder och filmer. Förhoppningsvis också en trädnavigation på sidorna. (osäker på översättningen)

Q4 2009

  • RMA (Return Merchandise Authorization) kommer äntligen att byggas in. Något jag frågade Varien om under vårt senaste telefonmöte med dem. Då beskrev man det som en ganska komplex verksamhet då RMA kan fungera på lite olika sätt. Men det känns skönt att man äntligen sätter tänderna i detta och börjar jobba på en standardiserad version.
  • Bättre verktyg för att generera egna rapporter
  • Poängsystem för att belöna trogna kunder.

På det hela taget goda nyheter.


Vi sitter och jobbar i vårt hittills största Magento-projekt som av allt att döma kommer att bli sveriges största när det släpps i augusti. Återkom så skall ni få se en riktigt välgjord Magentosajt. I detta projekt har vi rätt stora ambitioner på att jobba med redaktionellt material och har till slut valt att arbeta med Wordpress mot Magento.

För att göra detta finns 3 st huvudalternativ:

  • Köra en separat Wordpress vid sidan av Magento
  • Köra Lazzymonks Wordpress Extension til Magento
  • Köra Wordpress separat och sedan läsa in header och footer från Magento via HTTP

Det första alternativet har vi valt att välja bort eftersom vi vill slippa underhålla 2 st olika CSS-filer vid sidan av varandra. Man kan visserligen köra en global master-css som används för samtliga sajter men det blir lite rörigt. Det andra alternativet att köra Lazzymonk är frestande eftersom den integrerar sömlöst in i butiken och ligger snyggt och prydligt under samma sökvägar.

Vi har stött på några nackdelar med Wordpress i Magento och de gör att det inte är helt sjlävklart att fortsätta ha Wordpress i Magento. Vi har helt enkelt inte bestämt oss ännu men mycket tyder på att vi kommer att fortsätta med det.

Några nackdelar:

  • Man får inte Wordpress snygg url-rewrites. Något som inte påverkar Google-optimeringen så mycket som folk säger men gör url’erna mindre human-friendly.
  • Sidlänkningarna i Wordpress krockar med produktlistan i Magento. Eftersom båda använder “?p=” i querystring så sabbar Wordpress produktlistan. Detta har vi löst genom att bygga om Wordpress så att den använder “?pi=” istället.
  • Include av Wordpress-filerna i index.php i Magento gör att det inte går att manuellt byta butik genom att använda “Mage::run(’store_view’)”. Detta har vi löst genom att modda 2 rader kod i Magento.
  • Vissa plugins i Wordpress fungerar inte under Magento. Detta hade vi väntat oss och löst genom att läsa in Wordpress-header i Wordpress-flödet.

Ovan nämnda lista har gjort att vi börjat snegla åt det sista alternatviet. Att läsa in header och footer från Magento och visa det runt omkring Wordpress. Något som beskrivs ingående i den här bloggen:

http://activecodeline.com/wordpress-and-magento-integration-one-way-to-go/

Om någon har testat detta får ni gärna dela erfarenheter. Nackdelen är att man måste installera Wordpress utanför Magento(förstås) vilket gör att man i värsta fall får lite fulare url’er i shoppen. Men det kanske man kan leva med. Framför allt eftersom man kan vara helt säker på att det kommer att fungera.

Hur som helst. Det är kul att bygga komplexa webshoppar.