2012 03-27 developers e-commercedag presentatie1 magento
-
Upload
combell-group -
Category
Technology
-
view
480 -
download
1
description
Transcript of 2012 03-27 developers e-commercedag presentatie1 magento
Het maximum uit uw Magento
installatiePresentatie door:
Jasper De CraeckerPHPro Consultant
Onderwerpen
• Over Magento
• Magento ecosysteem
• Magento applicatie structuur
• Magento Modules
• Magento Themes
• Handige tools & weetjes
• Performance & schaalbaarheid
• Magento in de toekomst
• Conclusie
Magento
• eCommerce pakket gebaseerd op open-source technologiëen
• PHP
• MySQL
• Zend Framework
• APC, MemCached, Apache, Nginx, …
• Overgenomen door eBay in zomer 2011
• De term “Magento” is volgens Google Trends populairder dan “eCommerce”
• Open source: Magento Community (ongeveer 1 stable release per kwartaal)
• Commercieel: Magento Enterprise
• Meer geavanceerde functionaliteiten “out of the box”
• Support + SLA’s
Key features van Magento
• Multi-channel platform
• Desktops.voorbeeld.be & Laptops.voorbeeld.be
• Specifieke look & feel, Ogone account, product cataloog, klanten bestand, taal, …
• Zeer geavanceerde product cataloog (ook gebruikt als PIM)
• Virtueel oneindig aantal product attributen
• Gelaagde navigatie (layered navigation)
• Multi-language/multi-currency support
• Gestandaardiseerd order beheer/flow
• Geavanceerde analytics en rapportering
Magento ecosysteem
• Magento Community
• Gratis open-source versie van Magento
• Magento Enterprise
• Uitgebreide versie van Magento, license model vanaf $14,420 per server
• Magento Connect
• 5000+ gratis en betalende modules
• Magento Go
• Cloud-based Magento oplossing voor starters
• Magento University
• On-demand training, instructor-led training, certification
• Magento Certified Developer Certification
• Magento Certified Developer + Certification
Applicatie structuur
• Magento is gebaseerd op het Model – View – Controller design pattern
• app/code & app/skin Belangrijkste applicatie mappen
• app/etc/local.xml Systeem/applicatie configuratie
• Elke specifieke functionaliteit binnen Magento is als module geïmplementeerd
• Configuratie bestanden worden steeds in XML formaat gedefinïeerd
• Controllers
• Models
• Setup scripts
• Blocks
• Config files
• Kracht van Magento:
• Elke klasse kan uitgebreid worden, alles kan overschreven worden
Magento Modules
• Modules bestaan in de meeste gevallen uit 2 mappen op de Magento root:
• app/* (alle .php/.xml files)
• skin/* (alle front-end gerelateerde files)
• Module naamgeving bestaat steeds uit “Packagename_Modulename”
• De standaard structuur van een module:
• Magento Connect Packages
• Gebruikt om modules te verdelen,gebaseerd op PEAR packages
Opgelet: Uppercase/lowercase?
XML configuratie bestanden
• 5 verschillende types
• Adminhtml.xml
• Gebruikt voor de Magento back-end opbouw
• Api.xml
• Overschrijven van de interne Magento API
• Wsdl.xml
• Functionaliteit toevoegen aan de Magento webservices
• System.xml
• Module configuratie parameters, via Admin > System > Configuration
• Config.xml
• Altijd vereist, samenvoeging van bovenstaande XML bestanden is mogelijk (interessant voor kleinere modules)
XML configuratie voorbeeld
Configuratie XML reference sheet:www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml
PHPro Magento modules
• PHPro Translate module
• Vertaal elke interface string in Magento
• http://www.magentocommerce.com/magento-connect/phpro-translate-tool-4037.html
• CHILI Connector for Magento
• Web2print in Magento, integratie met CHILI Publisher
• http://www.phpro.be/portfolio/detail/chili-connector-magento
• PHPro PromoSet module
• Verkoop X producten samen aan prijs Y
• In ontwikkeling
• Bpost shipping module
• Integratie met de Bpost shipping manager service
• http://www.magentocommerce.com/magento-connect/bpost-shipping-manager.html
• VASCO MyDIGIPASS integratie module
• In ontwikkeling
Magento Themes
• Magento wordt beschikbaar gemaakt met 2 “productie klare” look & feels
• Standard Modern
• De back-end administratie look & feel wordt zelden of nooit gewijzigd
Back-end
Magento Themes aanpassen
• De instap drempel voor Magento theming is relatief hoog
• De layout is steeds gebaseerd op een van de volgende kolom layouts:
• 1-column
• 2-columns left/right
• 3-columns
• Print/blank/popup
• Via XML worden deze layouts opgevuld (met blocks, al dan niet op basis van .phtml files)<customer_account_login translate="label">
<label>Customer Account Login Form</label>
<!-- Mage_Customer
<remove name="right"/>
<remove name="left"/>
<reference name="root”>
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content”>
<block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>
</reference>
</customer_account_login>
Development Tools
• Wiz tool
• Command-line interface voor Magento
• Developer Toolbar
• Template file hinting tijdens front-end development/theming
• AOE_Scheduler
• Cronjob dispatching/debugging via het interne cron systeem van Magento
• Inchoo_Developer
• FirePHP logging vanuit Magento
• Magento Core debugging features
Wiz Tool
• Command-line tool voor Magento
• Features
• Create/list admin users
• List Magento installation version
• Dispatch events
• Create extensions
• Beheren van Magento core features
• Cache
• Indexer
• Compiler
• Config settings
• Installeer dit op een productie omgeving om makkelijk cache te clearen, indexes te vernieuwen, etc… bij het deployen
• Online: https://github.com/nvahalik/Wiz
Tools – MW_DeveloperToolbar
• Must-have toolbar voor Magento developers
• Key features
• Voegt een “sticky” developer toolbar toe op elke pagina
• Templating hints in/uitschakelen, cache, store code urls, SEO rewrites, etc..
• Installation keymagento-community/HM_DeveloperToolbar
Tools – AOE_Scheduler
• Bekijk welke cronjobs op de achtergrond draaien, binnenkort zullen starten, of plan zelf een cronjob handmatig in op een bepaald ogenblik
• Belangrijkste functionalteiten
• Weergeven van geplande cronjobs
• Schedule one-time cronjobs
• Annuleer geplande cronjobs
• Online: http://www.magentocommerce.com/magento-connect/aoe-scheduler.html
Tools – Inchoo_Developer
• FirePHP voor Magento, Firefox + Firebug vereistMaakt het analyseren van var_dumps mogelijk met Firebug
• Key feature
• Writing debug data to Firebug (FirePHP) instead of html output
• Basic usage:Mage::helper('firephp')->send('Lorem ipsum sit amet ..'); Mage::helper('firephp')->debug(Mage::getModel('catalog/product')->load(54));
• Installation keymagento-community/Inchoo_Developer
Magento Core Debug features
• Basic developer setup
• SetEnv MAGE_IS_DEVELOPER_MODE “yes”
• Mage::getIsDeveloperMode()Use this when creating modules with large amounts of debugging/logging code
• Inspecting variable contents
• Veel Magento objecten zijn enorm groot en gedeeltelijk recursief
• Var_dump van de _data array voor alle data binnen een model
• Var_dump van de _items array voor alle items binnen een Magento Collection
Magento Core Debug features
• Profiling
• Enable profiling in the back-end
• Also modify index.php to enable output to the front-end:
• Exception.log, System.log
• Enable exception and system log on development and staging(Admin > System > Configuration > Developer > Log Settings)
Magento Core Debug features
• Mage::log()
• Basis gebruik:Mage::log(“Your Log Message”);
• Schrijft log berichten naar var/log/system.log, gebruik tail –f system.log2011-06-08T10:35:04+00:00 DEBUG (7): Your log message
• Mage::log() naar andere log bestanden
• Basis gebruikMage::log(“Your Log Message”, Zend_Log::INFO, “your_log_file.log”);
• Mage::log(“Product stack trace: “.print_r($product, true));
• Use cases voor geavanceerder gebruik:
• Schrijf elke synchronisatie job met een extern systeem naar een ander bestand
• Gebruik de 2de log type parameter om een prioriteit mee te gevenZend_Log::Log, Info, Warn, Error, Trace, Exception, …
Magento Core Debug features
• Modules uitschakelen (in geval van nood)
• Optie 1: Disable block output
• Mogelijk vanaf de administratie back-end(admin > system > configuration > Disable Modules Output)
• Dit zal enkel de block output uitschakelen! (html printing)
• Optie 2: Module volledig uitschakelen via XML
• Verander de Package_Module.xml file in de /app/etc/modules map
• Verander <active>false</active>
• Deze module wordt vanaf nu genegeerd door Magento( handig wanneer een module een fout veroorzaakt waardoor de installatie niet meer werkt! ;-) )
Performance & schaalbaarheid
• Standaard server vereisten van Magento zijn relatief hoog
• PHP memory_limit: 256MB (bij voorkeur 512MB)
• CPU capaciteit is in de meeste gevallen geen probleem
• Ga voor een VPS/Dedicated server/Cloud hosting omgeving
• Voornaamste redenen van hoge systeem vereisten:
• Veel & grote XML configuratie bestanden (vooral bij 1ste request & installatie)
• EAV model vereist veel “onderhoud” (indexering, flat tables, etc…)
• Groot aantal PHP includes (héél groot!)
• Disk I/O is een grote bottle-neck
• (caching is standaard gebaseerd op het file-systeem)
Performance – Quick wins
• Koop een goed hostingpakket aan ;-)
• Installeer APC voor opcode caching
• Magento Compiler inschakelen (gemiddeld 25-50% performance winst)
• CSS/JS merging + Gzip compressie inschakelen
• Schakel Magento “flat catalogs” in
• Gebruik een CDN/proxy voor static file hosting
• Sla cache/session files op in een virtueel file systeem (bijvoorbeeld met tmpfs)<cache> <backend>apc</backend> <prefix>MAGE_</prefix></cache>
• Basis MySQL configuratie tuning
• Innodb_buffer_pool_size, Innodb_thread_concurrency, query_cache_size, query_cache_limit, …
Performance – Going (PH)Pro ;-)
• Load balancer met n-applicatie servers
• Sessies opslaan in de database
• Caching lokaal op elke server
• Configureer een MySQL cluster voor aparte read/write connecties
• Gebruik Memcache voor session storage
• Aparte server voor cron/admin taken
• Full page caching
• Dynamische content geladen met AJAX (shoppingcart)
• Geen caching op HTTPS toegelaten (shopping cart pagina naar HTTPS gezet)
• Laadtijden < 1 second ()
Magento in de toekomst
• Huidige versie: Magento Community 1.7.0-beta
• New Layered Navigation price bucket algorithm
• Added captcha functionality
• Implemented different base prices for customer groups (B2B!)
• Added auto generation of coupon codes
• Backup and Rollback functionality
• VAT ID Validation added
• Implemented DHL for Europe
• Magento Enterprise 1.12
• Customer segmentation for visitors
• Customer segments and rule-based product relations
• Base and special prices by customer groups
• Create and Manage named Wish lists Public and Private Lists
• HTML5 Mobile theme
• Facebook Open Graph 2.0 Integration
Magento 2 in de toekomst
• Algemeen
• Eerste Magento 2 Alpha release in December 2011
• Herschreven view systeem
• Volledig gebruik van PHP5.3 en namespaces
• Zend Framework 2 wordt momenteel niet gebruikt
• Webservices voor elke module
• Doorgedreven modulair systeem (geen verborgen dependencies)
• Minder steile “learning curve”
• Alpha release beschikbaar op Github:https://github.com/magento/magento2
• Meer informatie in verband met Magento 2:https://wiki.magento.com/display/MAGE2PROJECT/
Conclusie
• Voordelen van Magento als e-commerce platform
• Veelzijdig en zeer configureerbaar (met multi-channel als belangrijkste troef)
• Groot aantal gratis/low cost modules aangeboden via Magento Connect
• Indien goed geconfigureerd en opgezet een zeer betrouwbaar platform
• Magento Certified Developers maken de keuze en zoektocht naar een betrouwbare implementatie partner makkelijker
• Mogelijke pitfalls
• Performance is soms een probleem, afhankelijk van bezoekers, aantal producten, types van producten/complexiteit,…(dit is ondertussen wel al een zeer goed gedocumenteerd en aan te pakken probleem door ervaring)
• Leercurve van Magento is steil, vooral op vlak van maatwerk en theming
Algemeen: Bij een e-commerce project komt steeds meer kijken dan het installeren en uitrollen van een software pakket!
Tot slot
Vragen? :-)
Volg ons op Twitter:
@PHProtweets
Kom ook onze presentaties op E-shop Expo bekijken op donderdag:
Starten met e-commerce: Denk aan alle facetten - Pieter Caluwaerts
Thuiszorgwinkel.be, Magento op z’n best geïntegreerd - Kevin Hereman
PHPro Magento blogs:
http://www.phpro.be/blog/