SlideShare une entreprise Scribd logo
1  sur  21
© 2017 Pronko Consulting www.pronkoconsulting.com
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Extending Checkout…
• UI component
• XML
• Layout processor
• Config provider
• Plugin/Interceptor
• Template
• JavaScript Component
• JavaScript Mixin
• Extension Attributes
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Checkout UI Component
define([
'uiComponent'
], function (Component) {
'use strict';
return Component.extend({
defaults: {
template: 'Giftsdirect_Checkout/messages'
}
});
});
<div id="messages" class="messages" data-bind="html: content"></div>
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Checkout UI Component - Declaration
<item name="login-errors" xsi:type="array">
<item name="component" xsi:type=“string">MageTitans/js/view/messages</item>
<item name="displayArea" xsi:type="string">login-messages</item>
</item>
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Checkout Layout XML
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shipping-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAddress" xsi:type="array">
<item name="children" xsi:type="array">
<item name="customer-email" xsi:type="array">
<item name="template" xsi:type="string">email</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
The jsLayout
$jsLayout[‘components’][‘checkout’]['children']
['steps']['children']
[‘shipping-step'][‘children']
['shippingAddress']['children']
[‘customer-email']['template'];
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Layout Processor - Dynamic Changes
namespace MageTitansCheckoutBlock;
use MagentoCheckoutBlockCheckoutLayoutProcessorInterface;
class PromotionalLayoutProcessor implements LayoutProcessorInterface
{
public function process($jsLayout)
{
$jsLayout['components']['checkout']['children']
['promotional']['config']['content'] = $this->provider->get();
return $jsLayout;
}
}
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Adding Layout Processor via di.xml
<type name="MagentoCheckoutBlockOnepage">
<arguments>
<argument name="layoutProcessors" xsi:type="array">
<item name=“promoProcessor" xsi:type="object>PromoLayoutProcessor</item>
</argument>
</arguments>
</type>
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Configuration Provider
namespace MageTitansSubscriptionModel;
use MagentoCheckoutModelConfigProviderInterface;
class ConfigProvider implements ConfigProviderInterface
{
public function getConfig()
{
return [
'subscription' => [
'showOnCheckout' => $this->config->showCheckboxOnCheckout()
]
];
}
}
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Adding Config Provider via di.xml
<type name="MagentoCheckoutModelCompositeConfigProvider">
<arguments>
<argument name="configProviders" xsi:type="array">
<item name="subscription" xsi:type="object">MageTitansConfigProvider</item>
</argument>
</arguments>
</type>
return parseInt(window.checkoutConfig.subscription.showOnCheckout)
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Plugin/Interceptor
namespace MageTitansCheckoutPlugin;
use MagentoCheckoutBlockCheckoutLayoutProcessor;
class AddressLayoutProcessor
{
public function afterProcess(LayoutProcessor $subject, array $jsLayout)
{
// custom validation, templates, config
return $jsLayout;
}
}
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Custom Template
<div class="control">
<input class=“input-text"
type=“password" name=“password" id="customer-password"
data-validate="{required:true, 'validate-password':true}"/>
<!-- ko foreach: getRegion('login-messages') -->
<!-- ko template: getTemplate() --><!-- /ko -->
<!—/ko-->
</div>
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
JavaScript Mixin
return function (emailComponent) {
return wrapper.wrap(emailComponent, function(action, component) {
component.login = function(loginForm) {
// pass message component to Login Action
};
return action(component);
});
};
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
JavaScript Component Extend
define(
[
'Magento_Checkout/js/view/summary/abstract-total'
],
function (Component) {
'use strict';
return Component.extend({
defaults: {
title: 'You Save',
template: 'MageTitans/total-savings'
},
getValue: function() {
return this.getFormattedPrice(9.99);
}
});
}
);
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Answer
• New UI Component definition in the checkout_index_index.xml
• New HTML template with CSS class
• Layout Processor plugin
• Declare plugin in the di.xml
• (optional) more code for billing address
https://magento.stackexchange.com/questions/186805
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
© 2017 Pronko Consulting www.pronkoconsulting.com
youtube.com/maxpronko
© 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
Summary
• UI Component -> flexibility
• Custom feature -> template override
• Optimal implementation -> time
• Extension Attributes -> Custom Storage
• Observable Variables -> track changes
© 2017 Pronko Consulting www.pronkoconsulting.com
THANK YOU!
@max_pronko
www.maxpronko.com

Contenu connexe

Tendances

Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_FinalZepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
Max Pronko
 
2012.sandiego.wordcamp
2012.sandiego.wordcamp2012.sandiego.wordcamp
2012.sandiego.wordcamp
Brandon Dove
 

Tendances (20)

Zepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_FinalZepplin_Pronko_Magento_Festival Hall 1_Final
Zepplin_Pronko_Magento_Festival Hall 1_Final
 
JavaFX – 10 things I love about you
JavaFX – 10 things I love about youJavaFX – 10 things I love about you
JavaFX – 10 things I love about you
 
2012.sandiego.wordcamp
2012.sandiego.wordcamp2012.sandiego.wordcamp
2012.sandiego.wordcamp
 
JavaFX Advanced
JavaFX AdvancedJavaFX Advanced
JavaFX Advanced
 
Magento Performance Toolkit
Magento Performance ToolkitMagento Performance Toolkit
Magento Performance Toolkit
 
Using of TDD practices for Magento
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for Magento
 
Magento Product Types Demystified
Magento Product Types DemystifiedMagento Product Types Demystified
Magento Product Types Demystified
 
Magento NodeJS Microservices — Yegor Shytikov | Magento Meetup Online #11
Magento NodeJS Microservices — Yegor Shytikov | Magento Meetup Online #11Magento NodeJS Microservices — Yegor Shytikov | Magento Meetup Online #11
Magento NodeJS Microservices — Yegor Shytikov | Magento Meetup Online #11
 
Vaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionVaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 edition
 
Web Components for Java Developers
Web Components for Java DevelopersWeb Components for Java Developers
Web Components for Java Developers
 
[FEConf Korea 2017]Angular 컴포넌트 대화법
[FEConf Korea 2017]Angular 컴포넌트 대화법[FEConf Korea 2017]Angular 컴포넌트 대화법
[FEConf Korea 2017]Angular 컴포넌트 대화법
 
GWT integration with Vaadin
GWT integration with VaadinGWT integration with Vaadin
GWT integration with Vaadin
 
Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.js
 
Polymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill LibraryPolymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill Library
 
Voo doodriver training
Voo doodriver trainingVoo doodriver training
Voo doodriver training
 
Odoo - CMS performances optimization
Odoo - CMS performances optimizationOdoo - CMS performances optimization
Odoo - CMS performances optimization
 
Vuex
VuexVuex
Vuex
 
Web components
Web componentsWeb components
Web components
 

Similaire à Checkout Customizations in Magento 2 - MageTitansMCR 2017

TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
Tieturi Oy
 
PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014
cagataycivici
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
Spiffy
 
Polymer
Polymer Polymer
Polymer
jskvara
 

Similaire à Checkout Customizations in Magento 2 - MageTitansMCR 2017 (20)

Magento Presentation Layer
Magento Presentation LayerMagento Presentation Layer
Magento Presentation Layer
 
Magento 2 - hands on MeetMagento Romania 2016
Magento 2 -  hands on MeetMagento Romania 2016Magento 2 -  hands on MeetMagento Romania 2016
Magento 2 - hands on MeetMagento Romania 2016
 
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
 
Checkout in Magento 2 by Max Pronko
Checkout in Magento 2 by Max PronkoCheckout in Magento 2 by Max Pronko
Checkout in Magento 2 by Max Pronko
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
 
Week 8
Week 8Week 8
Week 8
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
 
Java script Advance
Java script   AdvanceJava script   Advance
Java script Advance
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
Java Web Development with Stripes
Java Web Development with StripesJava Web Development with Stripes
Java Web Development with Stripes
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.pptDevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
 
implemetning google analytics - 2011-09-24 Google Devfest Chiangmai
implemetning google analytics - 2011-09-24 Google Devfest Chiangmaiimplemetning google analytics - 2011-09-24 Google Devfest Chiangmai
implemetning google analytics - 2011-09-24 Google Devfest Chiangmai
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
Polymer
Polymer Polymer
Polymer
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Manipulating Magento - Meet Magento Belgium 2017
Manipulating Magento - Meet Magento Belgium 2017Manipulating Magento - Meet Magento Belgium 2017
Manipulating Magento - Meet Magento Belgium 2017
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 

Checkout Customizations in Magento 2 - MageTitansMCR 2017

  • 1. © 2017 Pronko Consulting www.pronkoconsulting.com
  • 2. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
  • 3. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Extending Checkout… • UI component • XML • Layout processor • Config provider • Plugin/Interceptor • Template • JavaScript Component • JavaScript Mixin • Extension Attributes
  • 4. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Checkout UI Component define([ 'uiComponent' ], function (Component) { 'use strict'; return Component.extend({ defaults: { template: 'Giftsdirect_Checkout/messages' } }); }); <div id="messages" class="messages" data-bind="html: content"></div>
  • 5. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Checkout UI Component - Declaration <item name="login-errors" xsi:type="array"> <item name="component" xsi:type=“string">MageTitans/js/view/messages</item> <item name="displayArea" xsi:type="string">login-messages</item> </item>
  • 6. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Checkout Layout XML <referenceBlock name="checkout.root"> <arguments> <argument name="jsLayout" xsi:type="array"> <item name="components" xsi:type="array"> <item name="checkout" xsi:type="array"> <item name="children" xsi:type="array"> <item name="steps" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shipping-step" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shippingAddress" xsi:type="array"> <item name="children" xsi:type="array"> <item name="customer-email" xsi:type="array"> <item name="template" xsi:type="string">email</item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </argument> </arguments> </referenceBlock>
  • 7. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com The jsLayout $jsLayout[‘components’][‘checkout’]['children'] ['steps']['children'] [‘shipping-step'][‘children'] ['shippingAddress']['children'] [‘customer-email']['template'];
  • 8. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Layout Processor - Dynamic Changes namespace MageTitansCheckoutBlock; use MagentoCheckoutBlockCheckoutLayoutProcessorInterface; class PromotionalLayoutProcessor implements LayoutProcessorInterface { public function process($jsLayout) { $jsLayout['components']['checkout']['children'] ['promotional']['config']['content'] = $this->provider->get(); return $jsLayout; } }
  • 9. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Adding Layout Processor via di.xml <type name="MagentoCheckoutBlockOnepage"> <arguments> <argument name="layoutProcessors" xsi:type="array"> <item name=“promoProcessor" xsi:type="object>PromoLayoutProcessor</item> </argument> </arguments> </type>
  • 10. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Configuration Provider namespace MageTitansSubscriptionModel; use MagentoCheckoutModelConfigProviderInterface; class ConfigProvider implements ConfigProviderInterface { public function getConfig() { return [ 'subscription' => [ 'showOnCheckout' => $this->config->showCheckboxOnCheckout() ] ]; } }
  • 11. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Adding Config Provider via di.xml <type name="MagentoCheckoutModelCompositeConfigProvider"> <arguments> <argument name="configProviders" xsi:type="array"> <item name="subscription" xsi:type="object">MageTitansConfigProvider</item> </argument> </arguments> </type> return parseInt(window.checkoutConfig.subscription.showOnCheckout)
  • 12. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Plugin/Interceptor namespace MageTitansCheckoutPlugin; use MagentoCheckoutBlockCheckoutLayoutProcessor; class AddressLayoutProcessor { public function afterProcess(LayoutProcessor $subject, array $jsLayout) { // custom validation, templates, config return $jsLayout; } }
  • 13. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Custom Template <div class="control"> <input class=“input-text" type=“password" name=“password" id="customer-password" data-validate="{required:true, 'validate-password':true}"/> <!-- ko foreach: getRegion('login-messages') --> <!-- ko template: getTemplate() --><!-- /ko --> <!—/ko--> </div>
  • 14. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com JavaScript Mixin return function (emailComponent) { return wrapper.wrap(emailComponent, function(action, component) { component.login = function(loginForm) { // pass message component to Login Action }; return action(component); }); };
  • 15. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com JavaScript Component Extend define( [ 'Magento_Checkout/js/view/summary/abstract-total' ], function (Component) { 'use strict'; return Component.extend({ defaults: { title: 'You Save', template: 'MageTitans/total-savings' }, getValue: function() { return this.getFormattedPrice(9.99); } }); } );
  • 16. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
  • 17. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Answer • New UI Component definition in the checkout_index_index.xml • New HTML template with CSS class • Layout Processor plugin • Declare plugin in the di.xml • (optional) more code for billing address https://magento.stackexchange.com/questions/186805
  • 18. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com
  • 19. © 2017 Pronko Consulting www.pronkoconsulting.com youtube.com/maxpronko
  • 20. © 2016 Magento, Inc.© 2017 Pronko Consulting www.pronkoconsulting.com Summary • UI Component -> flexibility • Custom feature -> template override • Optimal implementation -> time • Extension Attributes -> Custom Storage • Observable Variables -> track changes
  • 21. © 2017 Pronko Consulting www.pronkoconsulting.com THANK YOU! @max_pronko www.maxpronko.com