magento as a framework - bephpug.de€¦ · magento uses aliases on many places mostly for class...
TRANSCRIPT
![Page 1: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/1.jpg)
MAGENTO AS A FRAMEWORK
WHY WE DO BETTER THEN YOU THINKCreated by / Daniel Fahlke aka Flyingmana @Flyingmana
![Page 2: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/2.jpg)
ABOUT MElove to work on Open Sourcecurrent work involves mostly Magento(PHP e-commerce Framework)know a lot about php, js(only frontend) and csslike to try new things
![Page 3: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/3.jpg)
ABOUT MAGENTOUsually a Shop SystemBuild to be extendablePHP Developers run, if they hear its namegot bought by ebay 2011
![Page 4: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/4.jpg)
ABOUT THE COMMUNITYexperiences a strong growth in number and collaborationhas with FireGento e.V its own association to represent thecommunity and organize eventsdoes regularly hackathons to create new, and improve existingopen source modules
![Page 5: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/5.jpg)
THE ONLINE HACKATHON31st Jan - 1st Feb 2014150 registered attendees~75 contributersgot a positive mention afterwards on an ebay blog:http://blog.ebay.com/for-magento-developers-hack-is-another-word-for-help/
![Page 6: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/6.jpg)
BACK TO MAGENTO
![Page 7: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/7.jpg)
OUR HELLO WORLD░░░░░░░░░░▄▄█▀▀▀▀▀▀▀▀█▄▄░░░░░░░░░░░░░░░▄▄▀▀░░░░░░░░░░░░▀▀▄▄░░░░░░░░░░▄█▀░░░░▄▀░░░░▄░░░░░░░▀█░░░░░░░░██▄▄████░░░░░░▀▄░░░░░░░░█▄░░░░▄████▀███▄▀▄░░░░░░███▄▄▄▄░░█░░░▄█████▄████░██░░░▄███▄▄░▀█▀░░█░▄███████▀▀░█░▄█░▄███▀█████░█░░▀▄█░█▀██▄▄▄▄█▀░█▀█▀██████▀░██▀█░░██░█░▀▀▀▀▀░░░█▀░█░███▀▀░░▄█▀░█░░██░░█▄░░░░▄▄▀░░░█░▀██▄▄▄██▀░░█▄░██░░░░▀█▀▀▀░░░░░░█░░▀▀▀▀░░░░▄█░░██░░░░░░░░░░░░░░░░▀▄░░░░░░▄█▀░░░█░█░░░░░░░░░░░░░░░░▀▀▀▀▀▀▀▄░░░░█░░░█░░░░░░▄▄▄▄▄▄▄░░░░░░░░░░░░░▄▀░░░░▀▄░░░░░▀█▄░░░▀▀██▄░░░░░░░▄▀░░░░░░░▀▄▄░░░░░▀▀▀▀▀░░░░░░░░▄▀░░░░░░░░░░░░▀▀▄▄▄░░░░░░░░▄▄▄▀▀█░░░░░░░░░░░░░░░▄▀▀█████▀▀▀▀░░░░██░░░░░░░░░░░░░█░░░██░░░█▀▀▀▀▀▀▀▀█░░░░
![Page 8: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/8.jpg)
NEED CODE/app/design/frontend/default/default/layout/local.xml
<!--?xml version="1.0"?--><layout version="0.1.0"> <default> <reference name="content"> <block type="core/template" template="cute_face.phtml"> </block></reference> </default></layout>
/app/design/frontend/default/default/template/cute_face.phtml
![Page 9: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/9.jpg)
RESULT
![Page 10: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/10.jpg)
CHANGE CODE/app/design/frontend/default/default/layout/local.xml
<!--?xml version="1.0"?--><layout version="0.1.0"> <default> <reference name="right"> <block type="core/template" template="cute_face.phtml"> </block></reference> </default></layout>
![Page 11: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/11.jpg)
MOVED RESULT
![Page 12: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/12.jpg)
HOW IS THIS POSSIBLE?everything is glued by xmlyou dont programm in xml, you only glue existing thingstogetherdont get stuck by the whole mass of existing xml
![Page 13: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/13.jpg)
DEBUG THE STRUCTURE
![Page 14: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/14.jpg)
DEBUG TOOLS ARE YOUR FRIENDyou would need way to long, to memorize all xmlyou can instant see how/where 3rd party puts code intofrontendsometimes grep and findInPath are also very helpfull
![Page 15: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/15.jpg)
SOME MORE USEFULL EXAMPLESbecause within a short time you will be a full grown magentodeveloper< !-- insert evil laughing here -->
![Page 16: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/16.jpg)
ADD CSS/app/design/frontend/default/default/layout/local.xml
<!--?xml version="1.0"?--><layout version="0.1.0"> <default> <reference name="head"> <action method="addCss"><stylesheet>css/bootstrap.css</stylesheet></action> </reference> </default></layout>
/skin/frontend/default/default/css/bootstrap.css
![Page 17: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/17.jpg)
ADD JAVASCRIPT/app/design/frontend/default/default/layout/local.xml
<!--?xml version="1.0"?--><layout version="0.1.0"> <default> <reference name="head"><action method="addSkinJs"><stylesheet>js/bootstrap.js</stylesheet></action> </reference> </default></layout>
/skin/frontend/default/default/js/bootstrap.js
![Page 18: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/18.jpg)
A FEW NAMING RULESmagento uses aliases on many placesmostly for class resolutionfor example: core/template resolved toMage_Core_Block_Templatefirst part points to module, second to a class
![Page 19: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/19.jpg)
THERE ARE DIFFERENT CONTEXTSBlockHelperModelResource (which is a sub part of Model =>Mage_Core_Model_Resource_Abstract
![Page 20: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/20.jpg)
OWN MODULESuse two parts for modulegetModel('vendor_module/something') =>Vendor_Module_Model_Something
![Page 21: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/21.jpg)
MORE ABOUT ALIASESyou always can use full class names instead of aliasbut alias allows usage by magentos class rewrite system
![Page 22: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/22.jpg)
EXAMPLE OF THE CM_REDISSESSIONMODULE
<config> <modules> <cm_redissession> <version>0.2</version> </cm_redissession> </modules> <global> <models> <core_mysql4> <rewrite> <session>Cm_RedisSession_Model_Session</session> </rewrite> </core_mysql4> </models> </global></config>
core_mysql4 is the outdated version of core_resource, where {core} is the module identifier
![Page 23: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/23.jpg)
DEFINE A CRONJOB<config><crontab> <jobs> <catalog_product_index_price_reindex_all> <schedule> <cron_expr>0 2 * * *</cron_expr> </schedule> <run> <model>catalog/observer::reindexProductPrices</model> </run> </catalog_product_index_price_reindex_all> </jobs></crontab></config>
![Page 24: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/24.jpg)
REGISTER FOR AN EVENT<config><frontend> <events> <customer_login> <observers> <catalog> <type>model</type> <class>catalog/product_compare_item</class> <method>bindCustomerLogin</method> </catalog> </observers> </customer_login> </events></frontend></config>
you can rewrite existing observers thanks to xml.for example make type=disabled
![Page 25: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/25.jpg)
ADD A CONFIG VALUE (WITH DEFAULT)<config><default> <catalog> <navigation> <max_depth>0</max_depth> </navigation> </catalog></default></config>
![Page 26: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/26.jpg)
ADD AN ENTRY IN ADMIN AREA(1)<config><tabs> <catalog translate="label" module="catalog"> <label>Catalog</label> <sort_order>200</sort_order> </catalog></tabs><sections> <catalog translate="label" module="catalog"> <class>separator-top</class> <label>Catalog</label> <tab>catalog</tab> <frontend_type>text</frontend_type> <sort_order>40</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <groups> <navigation translate="label"> <label>Category Top Navigation</label> <frontend_type>text</frontend_type> <sort_order>500</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <max_depth translate="label"> <label>Maximal Depth</label> <frontend_type>text</frontend_type> <sort_order>1</sort_order> <show_in_default>1</show_in_default> </max_depth> </fields> </navigation> </groups> </catalog></sections></config>
![Page 27: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/27.jpg)
ADD AN ENTRY IN ADMIN AREA(2)<config><tabs> <catalog translate="label" module="catalog"> <label>Catalog</label> <sort_order>200</sort_order> </catalog></tabs></config>
![Page 28: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/28.jpg)
ADD AN ENTRY IN ADMIN AREA(3)<config><sections> <catalog translate="label" module="catalog"> <class>separator-top</class> <label>Catalog</label> <tab>catalog</tab> <frontend_type>text</frontend_type> <sort_order>40</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <groups> </groups> </catalog></sections></config>
![Page 29: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/29.jpg)
ADD AN ENTRY IN ADMIN AREA(4)<config><sections> <catalog translate="label" module="catalog"> <groups> <navigation translate="label"> <label>Category Top Navigation</label> <frontend_type>text</frontend_type> <sort_order>500</sort_order><show_in_default>1</show_in_default><show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <max_depth translate="label"> <label>Maximal Depth</label> <frontend_type>text</frontend_type> <sort_order>1</sort_order> <show_in_default>1</show_in_default> </max_depth> </fields> </navigation> </groups> </catalog></sections></config>
![Page 30: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/30.jpg)
AND HERE IS EVEN MORE
![Page 31: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/31.jpg)
WE HAVE PONYS
![Page 32: MAGENTO AS A FRAMEWORK - bephpug.de€¦ · magento uses aliases on many places mostly for class resolution for example: core/template resolved to Mage_Core_Block_Template first part](https://reader034.vdocuments.mx/reader034/viewer/2022051511/60073de708c440469938e568/html5/thumbnails/32.jpg)
THE END