SlideShare a Scribd company logo
1 of 44
Join us in Ibiza September 24th – 27th 2012
Magento 2.0:
Prepare yourself for a new way of module development



                                      Ivan Chepurnyi
About Me


 • Devoted to Magento Platform, since May 2007

 • Former Magento Core Team member

 • More than 5 Years of Magento Development
   Experience

 • Technical Director at EcomDev

 • Magento Coach for European developers
Magento 1.x Issues
Non-transparent Module Structure

                                                                             app/design
      app/code
                                                 Layout
                         PHP Classes

                                                              Templates
                 Configuration      Module
                                  Functionality                     Emails

                   Definition
                                                     Translations
                                   Static Data

                                                                             app/locale
    app/etc/modules
                                       skin
Excessive Configurations

 • Info for building
   classes names of
   • Models
   • Blocks
   • Helpers
 • Info about file
   path
   • Layout
   • Translate
Performance


 • Timings for app
   initialization

 • Excessive memory
   usage for building of
   page layout

 • Loading of redundant
   XML configurations for
   each request
Magento 2.0 Module Changes
Module Structure in Magento 2.0

     app/code/<codePool>/<Namespace>/<Module>

             Model
             Helper                 Classes that are used in MVC
                                    application
             Block
             controllers            Configuration files
             etc
                                    Setup Scripts
             sql
             data                   Layouts, Templates, Static Data
             view
                                    Translations
             locale
Refactored Configuration
Changes in Main Configuration


 • Definition of the module in
   app/etc/modules/<Module_Name>.xml moved to
   its etc/config.xml file
 • Added option to specify dependency type
 • Removed class aliases
 • Fieldsets copy rules moved to a separate file
 • Simplified rewrite system
New Modules Bootstrap Logic


 1. Merging only <modules /> nodes from the
    following file paths:
   1.   app/code/pool/Mage/<Module>/etc/config.xml
   2.   app/code/pool/<Namespace>/<Module>/etc/config.xml
   3.   app/etc/modules/<Namespace_ModuleName>.xml
New Modules Bootstrap Logic


 2. Sorting of modules by dependency and checking
    module activity
 3. Merging of the config.xml file from sorted and
    active modules
Dependency Types

 • Hard Dependency (By Default)
 • Soft Dependency


 Snippet:
 <Namespace_Module>
   <depends>
       <Mage_Category type=“soft”/>
       <Mage_Core /> <!– This one is hard dependency 
    </depends>
 </Namespace_Module>
No More Class Aliases

 • A full class name specified in all factory calls
   • Mage::getModel(‘Namespace_Module_Model_Name’);
   • Mage::helper(‘Namespace_Module_Helper_Name’);
   • etc…



 • Now all the factories use the same service locator
Rewrite Is Simplified


  Rewrite is specified for class name instead of
  <models />, <helpers /> and <blocks /> nodes:
  <global>
     <rewrites>
        <ClassName_To_Rewrite>Class_That_Sustitutes</ClassName_To_Rewrite>
     </rewrites>
  </global>
Configuration Changes In Admin Panel

 1. New ACL and authorization system
   • Acl resources now placed at <Module>/etc/adminhtml/acl.xml
   • It is even possible to connect own authentication model

 2. Introduced Menu Builder
   • A separate xml file at <Module>/etc/adminhtml/menu.xml
   • Menu is build by XML instructions: <add />, <update /> and
   <remove />
 3. Added schema for these XML files validation
View Layer Changes
View Structure in Module


 • Layout, templates, module CSS and JS files moved
   from <area>/base/default theme and skin to the
   module directory

 • There is no more template and layout directories
   on view level

 • Module has a view configuration file for defining
   own variables
View Directory

                               Magento Application Area
     view                      (frontend, adminhtml, install)

     <area>                    Layout File that is defined in
                               module config.xml
                layout.xml
                               Template that is specified via
              template.phtml   layout or block construct
                css/file.css
                               Static files that can be
                  file.js      included into HTML markup
                               via layout or template
                image.jpg
View Configuration


 • File is merged from all modules and current
   theme:
   • <Module>/etc/view.xml
   • <theme>/view.xml
 • It has XML scheme for the validation of its content
 • Can be used in feature for Design Editor
View Configuration Example

 In module config or theme:
 <?xml version=“1.0”?>
 <view>
   <vars module=”Namespace_Module”>
     <var name=“items_count”>10</var>
   </vars>
 </view>
 In template or block:
 $this->getVar(‘items_count’, ‘Namespace_Module’);
Changes in Layout

 • Changes in layout building behavior
 • Hierarchical Layout Handles
 • Containers instead of structural blocks
 • New <move /> layout element
Layout building behavior

  1. Adding layout handles updates
  2. Extracting current handles and processing
     <update handle=“<name>”/> node
  3. Transforming XML structure into array tree and
     sorting blocks within that tree without creating
     the block
  4. Applying scheduled remove and move operations
  5. Building blocks and containers from array tree
Hierarchical Page Handles

 • Realized via attributes for layout handle:
   • type=“page”
   • parent=“handle_name”
 • Helps getting rid of layout duplicates
 • Used to specify which layout handles are pages in
   Design Editor functionality
Example of Page Handle

 <catalog_category_view
     translate="label”
     type="page”
     parent="default”>
    <!– some structure -->
 <catalog_category_view>
 <catalog_category_view_type_layered
     translate="label”
     type="page"
     parent="catalog_category_view”>
    <!– some structure -->
 <catalog_category_view_type_layered>
No more structural blocks


 • Blocks will be refactored to be a final unit of view

 • Containers will replace structural blocks

 • Containers are not objects, they are rendered and
   managed by layout model
Container Element

 <container
    name=“unique_name”              Same as for block
    as=“alias_in_parent” ≈
                                    Container HTML properties
    before=“sibling_name”           (optional)
    after=“sibling_name”
    htmlTag=“div”
    htmlClass=“css-class” ≈
    htmlId=“id-in-html”
    label=“Container Name in Design Editor”>
    <container />
    <block />                       Container Name for Design Editor
 </container>                       functionality
Move Statement

                                       The element that should be moved
 <move
   element=“name”                      Destination element in layout
   destination=“destination.element”
   as=“new_alias”                      Same as for block
   after=”sibling_name”       ≈
   before="sibling_name” />
Themes
Simplified Themes

 • Themes become more simple and flexible
   • Only one configuration field in the admin panel
   • It is possible to create as many inherited themes as you
     need
   • Skin become a style/locale variation on theme level
   • Strict files relation in theme to the module
Theme Definition

 • Every theme is defined by theme.xml in its
   directory
   • app/design/<area>/<package>/<theme>/theme.xml

 • It contains:
   • Requirements for Magento version
   • Fallback information
   • Name of the theme for admin user
Theme Definition

 <design>
     <package code=”package_code”>
         <title>Default</title>
         <theme version="2.0.0.0"
                    code=”theme_code” parent=“theme_code”>
              <title>Default</title>
              <requirements>
                   <magento_version
                           from=”1.0.0.0”
                           to=“1.0.0.0|*"/>
              </requirements>
         </theme>
     </package>
 </design>
Theme Definition


 • package/title – package name, that is visible to
   admin user
 • theme/title – theme name, that is visible to admin
   user
 • package/@code – unique identifier of a package
 • theme/@code – unique identifier of a theme
   within the package
Theme Definition


 • theme/@version – internal version of theme
 • theme/@parent – theme name that the current
   one is inherited
 • magento_version/@from – minimal required
   Magento version for theme
 • magento_version/@to - maximum compatible
   version of Magento for theme (can be a wildcard)
Theme Fallbacks

 Fallback structure for dynamic files looks quite
 simple, but you should consider theme inheritance:
 1. <theme>/<Namespace_Module>/layout.xml
 2. <parent_theme>/<Namespace_Module>/layout.x
    ml
 3. <Module>/view/layout.xml
Skin Fallbacks

  • Static files (JS, CSS, Images) should be placed in theme skin directory
  • Theme can have multiple skins, the default skin is “default”
  • Skin directory allows fallbacks on locale level
    •   <theme>/skin/<skin_code>/<locale_code>/file.js
    •   <theme>/skin/<skin_code>/file.js
    •   <theme>/skin/<skin_code>/<locale_code>/<Namespace_Module>/file.js
    •   <theme>/skin/<skin_code>/<Namespace_Module>/file.js
Localization Inheritance
Localization Inheritance


  It is possible to define inheritance between locales in
  any xml file that is merged for global configuration:
  <global>
      <locale>
           <inheritance>
               <!-- Inheritance of UK Locale from US one -->
               <en_GB>en_US</en_GB>
           </inheritance>
      </locale>
  </global>
Developer Stuff
Developer Stuff

  • dev/shell – same as Magento 1 shell directory
  • dev/tests – set of different test suites:
   • integration – tests that require Magento initialization
   • js – Java Script UnitTests
   • unit – test that can be run without Magento
   • performance – load tests
   • static – code analysis tools
Developer Stuff

  • dev/tools – tools for developer
   • migration – a set of tools for migration of Magento 1.x
     module to 2.0
   • classmap – generator of the class map
   • batch_tests – batch test runner
Thank You
Your Questions




                 E-mail: ivan@ecomdev.org

More Related Content

What's hot

Maven plugin guide using Modello Framework
Maven plugin guide using Modello FrameworkMaven plugin guide using Modello Framework
Maven plugin guide using Modello Frameworkfulvio russo
 
How to Develop a Basic Magento Extension Tutorial
How to Develop a Basic Magento Extension TutorialHow to Develop a Basic Magento Extension Tutorial
How to Develop a Basic Magento Extension TutorialHendy Irawan
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2Jim Driscoll
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introductioncherukumilli2
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shintutorialsruby
 
How to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHow to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHendy Irawan
 
How to create a magento controller in magento extension
How to create a magento controller in magento extensionHow to create a magento controller in magento extension
How to create a magento controller in magento extensionHendy Irawan
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.jsIvano Malavolta
 
MVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsMVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsVforce Infotech
 
MVC & SQL_In_1_Hour
MVC & SQL_In_1_HourMVC & SQL_In_1_Hour
MVC & SQL_In_1_HourDilip Patel
 
Empowering users: modifying the admin experience
Empowering users: modifying the admin experienceEmpowering users: modifying the admin experience
Empowering users: modifying the admin experienceBeth Soderberg
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Phpfunkatron
 
Simple module Development in Joomla! 2.5
Simple module Development in Joomla! 2.5Simple module Development in Joomla! 2.5
Simple module Development in Joomla! 2.5Vishwash Gaur
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedStéphane Bégaudeau
 
WordPress plugin #2
WordPress plugin #2WordPress plugin #2
WordPress plugin #2giwoolee
 

What's hot (20)

Maven plugin guide using Modello Framework
Maven plugin guide using Modello FrameworkMaven plugin guide using Modello Framework
Maven plugin guide using Modello Framework
 
Polymer
PolymerPolymer
Polymer
 
How to Develop a Basic Magento Extension Tutorial
How to Develop a Basic Magento Extension TutorialHow to Develop a Basic Magento Extension Tutorial
How to Develop a Basic Magento Extension Tutorial
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2
 
An Introduction to Drupal
An Introduction to DrupalAn Introduction to Drupal
An Introduction to Drupal
 
Alfredo-PUMEX
Alfredo-PUMEXAlfredo-PUMEX
Alfredo-PUMEX
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
 
How to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHow to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento Extension
 
How to create a magento controller in magento extension
How to create a magento controller in magento extensionHow to create a magento controller in magento extension
How to create a magento controller in magento extension
 
Mangento
MangentoMangento
Mangento
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.js
 
MVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsMVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web Applications
 
MVC & SQL_In_1_Hour
MVC & SQL_In_1_HourMVC & SQL_In_1_Hour
MVC & SQL_In_1_Hour
 
Angular JS
Angular JSAngular JS
Angular JS
 
Empowering users: modifying the admin experience
Empowering users: modifying the admin experienceEmpowering users: modifying the admin experience
Empowering users: modifying the admin experience
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Php
 
Simple module Development in Joomla! 2.5
Simple module Development in Joomla! 2.5Simple module Development in Joomla! 2.5
Simple module Development in Joomla! 2.5
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
WordPress plugin #2
WordPress plugin #2WordPress plugin #2
WordPress plugin #2
 

Similar to Magento 2.0: Prepare yourself for a new way of module development

Magento mega menu extension
Magento mega menu extensionMagento mega menu extension
Magento mega menu extensionBun Danny
 
Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Don Cranford
 
Magento 2 View Layer Evolution
Magento 2 View Layer EvolutionMagento 2 View Layer Evolution
Magento 2 View Layer EvolutionSergii Shymko
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityAlfresco Software
 
Magento 2 theming - knowledge sharing session by suman kc
Magento 2 theming - knowledge sharing session by suman kcMagento 2 theming - knowledge sharing session by suman kc
Magento 2 theming - knowledge sharing session by suman kcSuman KC
 
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)Roman Zenner
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPOscar Merida
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015Oro Inc.
 
May the core be with you - JandBeyond 2014
May the core be with you - JandBeyond 2014May the core be with you - JandBeyond 2014
May the core be with you - JandBeyond 2014Chad Windnagle
 
Mageguru - magento custom module development
Mageguru -  magento custom module development Mageguru -  magento custom module development
Mageguru - magento custom module development Mage Guru
 
Connections customization lite
Connections customization liteConnections customization lite
Connections customization liteSharon James
 
Designing for magento
Designing for magentoDesigning for magento
Designing for magentohainutemicute
 
Magento2 Basics for Frontend Development
Magento2 Basics for Frontend DevelopmentMagento2 Basics for Frontend Development
Magento2 Basics for Frontend DevelopmentKapil Dev Singh
 
Tech talk live share extras extension modules feb 13
Tech talk live   share extras extension modules feb 13Tech talk live   share extras extension modules feb 13
Tech talk live share extras extension modules feb 13Alfresco Software
 
Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9AHM Pervej Kabir
 
Joomla Beginner Template Presentation
Joomla Beginner Template PresentationJoomla Beginner Template Presentation
Joomla Beginner Template Presentationalledia
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_entechbed
 

Similar to Magento 2.0: Prepare yourself for a new way of module development (20)

Magento mega menu extension
Magento mega menu extensionMagento mega menu extension
Magento mega menu extension
 
Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5
 
Magento 2 View Layer Evolution
Magento 2 View Layer EvolutionMagento 2 View Layer Evolution
Magento 2 View Layer Evolution
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share Extensibility
 
Magento 2 theming - knowledge sharing session by suman kc
Magento 2 theming - knowledge sharing session by suman kcMagento 2 theming - knowledge sharing session by suman kc
Magento 2 theming - knowledge sharing session by suman kc
 
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)
Modul-Entwicklung für Magento, OXID eShop und Shopware (2013)
 
Creating a basic joomla
Creating a basic joomlaCreating a basic joomla
Creating a basic joomla
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015
 
May the core be with you - JandBeyond 2014
May the core be with you - JandBeyond 2014May the core be with you - JandBeyond 2014
May the core be with you - JandBeyond 2014
 
Mageguru - magento custom module development
Mageguru -  magento custom module development Mageguru -  magento custom module development
Mageguru - magento custom module development
 
CodeIgniter & MVC
CodeIgniter & MVCCodeIgniter & MVC
CodeIgniter & MVC
 
Connections customization lite
Connections customization liteConnections customization lite
Connections customization lite
 
Designing for magento
Designing for magentoDesigning for magento
Designing for magento
 
Magento2 Basics for Frontend Development
Magento2 Basics for Frontend DevelopmentMagento2 Basics for Frontend Development
Magento2 Basics for Frontend Development
 
Tech talk live share extras extension modules feb 13
Tech talk live   share extras extension modules feb 13Tech talk live   share extras extension modules feb 13
Tech talk live share extras extension modules feb 13
 
Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9Asp.net c# MVC-5 Training-Day-2 of Day-9
Asp.net c# MVC-5 Training-Day-2 of Day-9
 
Joomla Beginner Template Presentation
Joomla Beginner Template PresentationJoomla Beginner Template Presentation
Joomla Beginner Template Presentation
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_en
 

More from Ivan Chepurnyi

Optimizing Magento by Preloading Data
Optimizing Magento by Preloading DataOptimizing Magento by Preloading Data
Optimizing Magento by Preloading DataIvan Chepurnyi
 
How to import 1 million SKUs in under 10 minutes
How to import 1 million SKUs in under 10 minutesHow to import 1 million SKUs in under 10 minutes
How to import 1 million SKUs in under 10 minutesIvan Chepurnyi
 
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceMeet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceIvan Chepurnyi
 
Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!Ivan Chepurnyi
 
Hidden Secrets of Magento Price Rules
Hidden Secrets of Magento Price RulesHidden Secrets of Magento Price Rules
Hidden Secrets of Magento Price RulesIvan Chepurnyi
 
Using of TDD practices for Magento
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for MagentoIvan Chepurnyi
 

More from Ivan Chepurnyi (6)

Optimizing Magento by Preloading Data
Optimizing Magento by Preloading DataOptimizing Magento by Preloading Data
Optimizing Magento by Preloading Data
 
How to import 1 million SKUs in under 10 minutes
How to import 1 million SKUs in under 10 minutesHow to import 1 million SKUs in under 10 minutes
How to import 1 million SKUs in under 10 minutes
 
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceMeet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
 
Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!
 
Hidden Secrets of Magento Price Rules
Hidden Secrets of Magento Price RulesHidden Secrets of Magento Price Rules
Hidden Secrets of Magento Price Rules
 
Using of TDD practices for Magento
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for Magento
 

Recently uploaded

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Magento 2.0: Prepare yourself for a new way of module development

  • 1. Join us in Ibiza September 24th – 27th 2012
  • 2. Magento 2.0: Prepare yourself for a new way of module development Ivan Chepurnyi
  • 3. About Me • Devoted to Magento Platform, since May 2007 • Former Magento Core Team member • More than 5 Years of Magento Development Experience • Technical Director at EcomDev • Magento Coach for European developers
  • 5. Non-transparent Module Structure app/design app/code Layout PHP Classes Templates Configuration Module Functionality Emails Definition Translations Static Data app/locale app/etc/modules skin
  • 6. Excessive Configurations • Info for building classes names of • Models • Blocks • Helpers • Info about file path • Layout • Translate
  • 7. Performance • Timings for app initialization • Excessive memory usage for building of page layout • Loading of redundant XML configurations for each request
  • 9. Module Structure in Magento 2.0 app/code/<codePool>/<Namespace>/<Module> Model Helper Classes that are used in MVC application Block controllers Configuration files etc Setup Scripts sql data Layouts, Templates, Static Data view Translations locale
  • 11. Changes in Main Configuration • Definition of the module in app/etc/modules/<Module_Name>.xml moved to its etc/config.xml file • Added option to specify dependency type • Removed class aliases • Fieldsets copy rules moved to a separate file • Simplified rewrite system
  • 12. New Modules Bootstrap Logic 1. Merging only <modules /> nodes from the following file paths: 1. app/code/pool/Mage/<Module>/etc/config.xml 2. app/code/pool/<Namespace>/<Module>/etc/config.xml 3. app/etc/modules/<Namespace_ModuleName>.xml
  • 13. New Modules Bootstrap Logic 2. Sorting of modules by dependency and checking module activity 3. Merging of the config.xml file from sorted and active modules
  • 14. Dependency Types • Hard Dependency (By Default) • Soft Dependency Snippet: <Namespace_Module> <depends> <Mage_Category type=“soft”/> <Mage_Core /> <!– This one is hard dependency  </depends> </Namespace_Module>
  • 15. No More Class Aliases • A full class name specified in all factory calls • Mage::getModel(‘Namespace_Module_Model_Name’); • Mage::helper(‘Namespace_Module_Helper_Name’); • etc… • Now all the factories use the same service locator
  • 16. Rewrite Is Simplified Rewrite is specified for class name instead of <models />, <helpers /> and <blocks /> nodes: <global> <rewrites> <ClassName_To_Rewrite>Class_That_Sustitutes</ClassName_To_Rewrite> </rewrites> </global>
  • 17. Configuration Changes In Admin Panel 1. New ACL and authorization system • Acl resources now placed at <Module>/etc/adminhtml/acl.xml • It is even possible to connect own authentication model 2. Introduced Menu Builder • A separate xml file at <Module>/etc/adminhtml/menu.xml • Menu is build by XML instructions: <add />, <update /> and <remove /> 3. Added schema for these XML files validation
  • 19. View Structure in Module • Layout, templates, module CSS and JS files moved from <area>/base/default theme and skin to the module directory • There is no more template and layout directories on view level • Module has a view configuration file for defining own variables
  • 20. View Directory Magento Application Area view (frontend, adminhtml, install) <area> Layout File that is defined in module config.xml layout.xml Template that is specified via template.phtml layout or block construct css/file.css Static files that can be file.js included into HTML markup via layout or template image.jpg
  • 21. View Configuration • File is merged from all modules and current theme: • <Module>/etc/view.xml • <theme>/view.xml • It has XML scheme for the validation of its content • Can be used in feature for Design Editor
  • 22. View Configuration Example In module config or theme: <?xml version=“1.0”?> <view> <vars module=”Namespace_Module”> <var name=“items_count”>10</var> </vars> </view> In template or block: $this->getVar(‘items_count’, ‘Namespace_Module’);
  • 23. Changes in Layout • Changes in layout building behavior • Hierarchical Layout Handles • Containers instead of structural blocks • New <move /> layout element
  • 24. Layout building behavior 1. Adding layout handles updates 2. Extracting current handles and processing <update handle=“<name>”/> node 3. Transforming XML structure into array tree and sorting blocks within that tree without creating the block 4. Applying scheduled remove and move operations 5. Building blocks and containers from array tree
  • 25. Hierarchical Page Handles • Realized via attributes for layout handle: • type=“page” • parent=“handle_name” • Helps getting rid of layout duplicates • Used to specify which layout handles are pages in Design Editor functionality
  • 26. Example of Page Handle <catalog_category_view translate="label” type="page” parent="default”> <!– some structure --> <catalog_category_view> <catalog_category_view_type_layered translate="label” type="page" parent="catalog_category_view”> <!– some structure --> <catalog_category_view_type_layered>
  • 27. No more structural blocks • Blocks will be refactored to be a final unit of view • Containers will replace structural blocks • Containers are not objects, they are rendered and managed by layout model
  • 28. Container Element <container name=“unique_name” Same as for block as=“alias_in_parent” ≈ Container HTML properties before=“sibling_name” (optional) after=“sibling_name” htmlTag=“div” htmlClass=“css-class” ≈ htmlId=“id-in-html” label=“Container Name in Design Editor”> <container /> <block /> Container Name for Design Editor </container> functionality
  • 29. Move Statement The element that should be moved <move element=“name” Destination element in layout destination=“destination.element” as=“new_alias” Same as for block after=”sibling_name” ≈ before="sibling_name” />
  • 31. Simplified Themes • Themes become more simple and flexible • Only one configuration field in the admin panel • It is possible to create as many inherited themes as you need • Skin become a style/locale variation on theme level • Strict files relation in theme to the module
  • 32. Theme Definition • Every theme is defined by theme.xml in its directory • app/design/<area>/<package>/<theme>/theme.xml • It contains: • Requirements for Magento version • Fallback information • Name of the theme for admin user
  • 33. Theme Definition <design> <package code=”package_code”> <title>Default</title> <theme version="2.0.0.0" code=”theme_code” parent=“theme_code”> <title>Default</title> <requirements> <magento_version from=”1.0.0.0” to=“1.0.0.0|*"/> </requirements> </theme> </package> </design>
  • 34. Theme Definition • package/title – package name, that is visible to admin user • theme/title – theme name, that is visible to admin user • package/@code – unique identifier of a package • theme/@code – unique identifier of a theme within the package
  • 35. Theme Definition • theme/@version – internal version of theme • theme/@parent – theme name that the current one is inherited • magento_version/@from – minimal required Magento version for theme • magento_version/@to - maximum compatible version of Magento for theme (can be a wildcard)
  • 36. Theme Fallbacks Fallback structure for dynamic files looks quite simple, but you should consider theme inheritance: 1. <theme>/<Namespace_Module>/layout.xml 2. <parent_theme>/<Namespace_Module>/layout.x ml 3. <Module>/view/layout.xml
  • 37. Skin Fallbacks • Static files (JS, CSS, Images) should be placed in theme skin directory • Theme can have multiple skins, the default skin is “default” • Skin directory allows fallbacks on locale level • <theme>/skin/<skin_code>/<locale_code>/file.js • <theme>/skin/<skin_code>/file.js • <theme>/skin/<skin_code>/<locale_code>/<Namespace_Module>/file.js • <theme>/skin/<skin_code>/<Namespace_Module>/file.js
  • 39. Localization Inheritance It is possible to define inheritance between locales in any xml file that is merged for global configuration: <global> <locale> <inheritance> <!-- Inheritance of UK Locale from US one --> <en_GB>en_US</en_GB> </inheritance> </locale> </global>
  • 41. Developer Stuff • dev/shell – same as Magento 1 shell directory • dev/tests – set of different test suites: • integration – tests that require Magento initialization • js – Java Script UnitTests • unit – test that can be run without Magento • performance – load tests • static – code analysis tools
  • 42. Developer Stuff • dev/tools – tools for developer • migration – a set of tools for migration of Magento 1.x module to 2.0 • classmap – generator of the class map • batch_tests – batch test runner
  • 44. Your Questions E-mail: ivan@ecomdev.org