Ik had al eens een stukje geschreven over onder de motorkap kijken van Wordpress... Wat eigenlijk kinderspel is in vergelijking met de andere CMS die ik sinds enkele weken van dichtbij aan het bekijken ben. Het is geen blogtool deze keer, maar een e-commerce (e-shop voor de niet-franstaligen) genaamd Magento en gebaseerd op de Zend Engine, heel plezant eenmaal je ermee weg bent eigenlijk.
Ik werk al dik een half jaar met deze e-commerce, het is te zeggen, tussen de andere projecten door (zoiets als een tâche de fond). Maar omdat de vorige oplossing voor het dynamisch 'maskeren' van producten volgens de settings van de klant, niet zo bijster was, ben ik nu dus wat in de 'Magento Core' aan het neuzen om de huidige werking van 'stores', 'categories', 'products' en 'search-engine' aan te passen.
Waarom was de vorige oplossing niet zo bijster? Wel, we hadden wat 'overhead' bij het creëren van een winkel per klant, gezien we max. 2000 klanten per dag moeten kunnen serveren (dit is, btw, leuk om weten voor je begint te werken, niet erna...). Enkele tabellen in de prachtige databank waren plots ietwat te gigantisch geworden en een delete van een store ging niet meer na de creatie van de 30e winkel. Een klein probleempje dus, vooral omdat elke nacht een volledige reset moest gebeuren van alle stores (haal al vast maar een extra geheugenlatje als je toch het plan van 30+ winkels wilt bouwen uit een Magento zonder de Mage Core te 'hacken').
Het idee is vrij eenvoudig, we gaan uiteindelijk maar één winkel hebben waar alle e-commerce klanten zich op kunnen inloggen, bij het inloggen zal de mijn extensie alle verboden producten voor deze klant (komende van een webservice) opslaan in een speciaal gecreëerde tabel. Deze tabel zal dan gebruikt worden om de producten weg te filteren die de klant niet hoort te zien.
Ik zeg 'filteren' omdat het net dat is wat we gaan doen. In Magento zitten een hele hoop filters die net ervoor zorgen dat je per 'winkel' de juiste producten te zien krijgt. En het zijn die filters die we gaan overschrijven in onze extensie om ervoor te zorgen dat hoewel we maar 1 winkel hebben, we toch enkel de producten tonen die de klant mag zien.
Eenmaal je het concept Zend/Magento door hebt, is het fairly simple om dat doel te bereiken. Gewoon wat Overerven van Models (zie Overriding Core Models with a custom module) en we zijn al een heel eind ver. Volgende week de stress-test van de website en maar hopen dat de host van onze virtuele machine het ook uithoudt 
RSS Feed