SlideShare a Scribd company logo
1 of 45
История одной трансформации: как Magento 1
разработчику быстро переориентироваться на Magento 2
Спикер: Анастасия Сухорукова
Кто я?
2
В профессиональном плане:
Инженер-программист
Магистр прикладной математики
PHP программист с 2008 года
Мадженто Лид Девелопер в Magecom
По жизни:
Жена
Мама замечательной девочки
План доклада
3
PHP 4
Использование классов.
• По правде говоря, PHP не является в полной мере объектно-
ориентированным языком, поэтому очень часто можно обойтись и
без использования классов, но иногда они сильно облегчают
жизнь.
• Но не стоит и злоупотреблять ими, так как неоправданно большое
количество используемых классов не только затрудняет
понимание кода программы, но нередко приводит к снижению ее
производительности.
• Автор учебника: Артем Акатов
• Опубликовано: 15.02.2004
4
PHP 5
ООП:
• Клонирование
• Модификаторы доступа private, protected, public
• Интерфейсы
• Абстрактные классы и методы
• Магические методы
• Final
• __autoload()
5
CMS & Frameworks
• Bamboo (Joomla)
• Drupal
• Codeigniter
• Modx
• Wordpress
• etc...
6
MAGENTO
1
7
8
Наше лицо, когда нас попросили
«подверстать»
9
10
Patterns
1) MVC
2) Singleton
3) Observer
4) Fabric
5) Front Controller
6) Registry
11
7) Prototype
8) Object Pool
9) Iterator
10) Lazy loading
11) Service Locator
12) Module
Magento 1 Theme
HTML:
●/app/design/frontend/new_package/new_theme/
/app/design/frontend/new_package/new_theme/layout
/app/design/frontend/new_package/new_theme/template
●CSS&JS:
●/skin/frontend/new_package/new_theme/
●/skin/frontend/new_package/new_theme/css/
/skin/frontend/new_package/new_theme/images/
●Layout:
●/app/design/frontend/new_package/new_theme/layout/local.xml 12
Code Pools
13
Module structure
14
Config files
app/etc/modules/Namespace_Modulename.xml
<?xml version=”1.0”?>
<config>
<modules>
<{CompanyName}_{Module_Name}>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog />
</depends>
</{CompanyName}_{Module_Name}>
</modules>
</config>
15
Module config file
app/code/local/Namespace/Modulename/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<CompanyName_ModuleName>
<version>1.0.0</version>
</CompanyName_ModuleName>
</modules>
16
Module Config file
global
models
blocks
helpers
{module_alias_name}_resource
resources
{module_alias_name}_setup
frontend
routers
events
layout
translate
17
admin
routers
adminhtml
events
layout
translate
crontab
jobs
default
System Module Config file
tabs - General
sections
groups
fields
Mage::getStoreConfig(‘{section}/{group}/{field}’);
Вся информация хранится в таблице core_config_data
18
Menu Config file
config
menu
menu_item_name (ex.: Catalog)
title
sort_order
children
child_menu_item_name (ex. Manage products)
title
action (ex. adminhtml/catalog_product)
sort_order
19
20
Create Block/Model/Helper
<config>
<global>
<model/block/helper>
<class>Namespace_Modulename_{Model/Block/Helper}</class>
</model/block/helper>
</global>
</config>
21
Core modifications
1. Observer
2. Rewrite
3. Add core file to local folder
22
MAGENTO
2
23
24
Что нового?
1) SOLID
2) Уход от связывания модулей
3) Новые паттерны проектирования
4) Новая структура папок
5) Composer из коробки
6) CLI
etc
25
26
Composer
27
• Позволяет использовать сторонние библиотеки, не
присоединяя их к коду
• Компонентная архитектура с хорошо
организованным управлением зависимостями
• Управление зависимостями для избежания
конфликтов между модулями и проблем с
совместимостью
• Версионирование зависимостей
• Семантическое версионирование
• Supports the PHP Framework Interoperability standard
https://getcomposer.org/doc/01-basic-usage.md
S. O. L. I. D.
• Single Responsibility
• Open/Closed Principle
• Liskov Barbara Principle
• Interface Segregation
• Dependency Invertion
28
• <Magento install directory>/app: Рекомендованная
директория для разработки
• Для модулей используем app/code.
• Для темы app/design/frontend.
• Для темы административной части app/design/adminhtml.
• Для переводов app/i18n.
• Библиотеки и код Мадженто находится тут <Magento
install directory>/vendor
29
Структура папок
• Block: содержит PHP классы, view часть MVC.
• Controller: содержит PHP классы, controller часть MVC.
• etc: содержит конфигурационные файлы, как минимум
module.xml
• Model: содержит PHP классы, model часть MVC.
• Setup: содержит классы для создания структуры БД и
наполнения их данными во время установки или
обновления модуля
30
Структура модуля
• Api: содержит PHP классы, используемые API.
• i18n: содержит файлы локализации
• Plugin: содержит файлы плагинов
• view: содержит фронтенд файлы, включающие статические
файлы разметки, шаблоны дизайна, email шаблоны и layout
файлы.
31
Структура модуля
Регистрация модуля
1) registartion.php:
<?php
use MagentoFrameworkComponentComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'CompanyName_ModuleName',
__DIR__);
2) composer.json autoload section:
{
"name": "Company-vendor/name-module",
"autoload": {
"psr-4": { "CompanyNameModuleName": "" },
"files": [ "registration.php" ]
} }
32
module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="CompanyName_ModuleName" setup_version="1.0.0">
<sequence>
<module name="Vendor_ComponentA" />
</sequence>
</module>
</config>
33
composer.json
{
"name": "your-name/module-Company",
"description": "Test component for Magento 2",
"require": {
"php": "~5.5.0|~5.6.0",
},
"suggest": {
"magento/module-webapi": "1.0.0-beta"
},
"type": "magento2-module",
"version": "1.0.0-beta",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"CompanyNameModuleName": ""
}
}
}
34
Enable/Disable Module
• bin/magento module:enable --clear-static-content Component_Name
• bin/magento setup:upgrade
• bin/magento module:disable --clear-static-content Component_Name
35
Customization
1) Preferences
2) Observers
3) Plugins
36
Preferences
di.xml
<preference for="CompanyNameModuleNameModelModelSomeFile"
type="CompanyNameModuleNameModelModelFile" />
37
Observers
namespace MyCompanyMyModule;
use MagentoFrameworkEventObserverInterface;
class MyClass{
private $eventManager;
public function __construct(MagentoFrameworkEventManage $eventManager){
$this->eventManager = $eventManager;
}
public function something(){
$eventData = null;
// Code...
$this->eventManager->dispatch('my_module_event_before');
// More code that sets $eventData...
$this->eventManager->dispatch('my_module_event_after',['myEventData'=>$eventData]);
}
}
38
Observers
namespace MyCompanyMyModuleObserver;
use MagentoFrameworkEventObserverInterface;
class MyObserver implements ObserverInterface
{
public function __construct()
{
//Observer initialization code...
//You can use dependency injection to get any class this observer may need.
}
public function execute(MagentoFrameworkEventObserver $observer)
{
//Observer execution code...
}
} 39
Observers events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="my_module_event_before">
<observer name="myObserverName"
instance="MyCompanyMyModuleObserverMyObserver" />
</event>
<event name="my_module_event_after">
<observer name="myObserverName"
instance="MyCompanyMyModuleObserverAnotherObserver" />
</event>
</config> 40
Plugins
Не могут использоваться с:
● Объектами, инициализированными до MagentoFrameworkInterception
●Final методами
●Final классами
●Классами, которые содержат хотя бы один final метод
●Непубличными методами
●Статическими методами
●Конструкторами
●Виртуальными типами (см. di)
41
Plugins
di.xml
<config>
<type name="{ObservedType}">
<plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" />
</type>
</config>
42
Plugins
<?php
namespace MyModulePlugin;
class ProductPlugin
{
public function beforeSetName(MagentoCatalogModelProduct $subject, $name)
{
return ['(' . $name . ')'];
}
}
43
Plugins
<?php
namespace MyModulePlugin;
class ProductPlugin
{
public function aroundSave(MagentoCatalogModelProduct $subject, callable $proceed)
{
$this->doSmthBeforeProductIsSaved();
$returnValue = $proceed();
if ($returnValue) {
$this->postProductToFacebook();
}
return $returnValue;
}
} 44
Cпасибо за внимание!

More Related Content

Similar to История одной трансформации: как Magento 1 разработчику быстро переориентироваться на Magento 2. Анастасия Сухорукова

Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAlexander Lisachenko
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.Igor Shkulipa
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPmikhailshurgulaya
 
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPВнедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPAlexander Lisachenko
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Elogic Magento Development
 
Алексей Иванов -- курс по стыку системной и программной инженерий
Алексей Иванов -- курс по стыку системной и программной инженерийАлексей Иванов -- курс по стыку системной и программной инженерий
Алексей Иванов -- курс по стыку системной и программной инженерийAnatoly Levenchuk
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NETMedia Gorod
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Быстрая и безболезненная разработка клиентской части веб-приложений
Быстрая и безболезненная разработка клиентской части веб-приложенийБыстрая и безболезненная разработка клиентской части веб-приложений
Быстрая и безболезненная разработка клиентской части веб-приложенийYaroslav Tkachenko
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
Про курс «Технологии Индустрии 4.0»
Про курс «Технологии Индустрии 4.0» Про курс «Технологии Индустрии 4.0»
Про курс «Технологии Индустрии 4.0» Пупена Александр
 
Ошибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойОшибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойЛеонид Гроховский
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыMikhail Payson
 

Similar to История одной трансформации: как Magento 1 разработчику быстро переориентироваться на Magento 2. Анастасия Сухорукова (20)

Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHP
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPВнедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
Алексей Иванов -- курс по стыку системной и программной инженерий
Алексей Иванов -- курс по стыку системной и программной инженерийАлексей Иванов -- курс по стыку системной и программной инженерий
Алексей Иванов -- курс по стыку системной и программной инженерий
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Быстрая и безболезненная разработка клиентской части веб-приложений
Быстрая и безболезненная разработка клиентской части веб-приложенийБыстрая и безболезненная разработка клиентской части веб-приложений
Быстрая и безболезненная разработка клиентской части веб-приложений
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Про курс «Технологии Индустрии 4.0»
Про курс «Технологии Индустрии 4.0» Про курс «Технологии Индустрии 4.0»
Про курс «Технологии Индустрии 4.0»
 
Ошибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойОшибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений Концевой
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 

More from Magecom UK Limited

Magento Meetup #12. Alex Shkurko.pptx
Magento Meetup #12. Alex Shkurko.pptxMagento Meetup #12. Alex Shkurko.pptx
Magento Meetup #12. Alex Shkurko.pptxMagecom UK Limited
 
Magento Meetup #12 Anastasiia Bondar
Magento Meetup #12 Anastasiia BondarMagento Meetup #12 Anastasiia Bondar
Magento Meetup #12 Anastasiia BondarMagecom UK Limited
 
Magento Meetup #12 Vlad Opukhlyi
Magento Meetup #12 Vlad OpukhlyiMagento Meetup #12 Vlad Opukhlyi
Magento Meetup #12 Vlad OpukhlyiMagecom UK Limited
 
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Magecom UK Limited
 
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 #11Magecom UK Limited
 
Magento enhanced media gallery - Alexander Shkurko
Magento enhanced media gallery - Alexander ShkurkoMagento enhanced media gallery - Alexander Shkurko
Magento enhanced media gallery - Alexander ShkurkoMagecom UK Limited
 
7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад ОпухлыйMagecom UK Limited
 
Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagecom UK Limited
 
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMaking the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMagecom UK Limited
 
From Repositories to Commands - Alexander Shkurko
From Repositories to Commands - Alexander Shkurko From Repositories to Commands - Alexander Shkurko
From Repositories to Commands - Alexander Shkurko Magecom UK Limited
 
Advanced GIT or How to Change the History
Advanced GIT  or How to Change the HistoryAdvanced GIT  or How to Change the History
Advanced GIT or How to Change the HistoryMagecom UK Limited
 
MSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMagecom UK Limited
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community projectMagecom UK Limited
 
Proof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorProof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorMagecom UK Limited
 
Что нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаЧто нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаMagecom UK Limited
 
Magento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagecom UK Limited
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community ProjectsMagecom UK Limited
 
UI components: synergy of backend and frontend
UI components: synergy of backend and frontendUI components: synergy of backend and frontend
UI components: synergy of backend and frontendMagecom UK Limited
 
MSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMagecom UK Limited
 

More from Magecom UK Limited (20)

Magento Meetup #12. Alex Shkurko.pptx
Magento Meetup #12. Alex Shkurko.pptxMagento Meetup #12. Alex Shkurko.pptx
Magento Meetup #12. Alex Shkurko.pptx
 
Magento Meetup #12 Anastasiia Bondar
Magento Meetup #12 Anastasiia BondarMagento Meetup #12 Anastasiia Bondar
Magento Meetup #12 Anastasiia Bondar
 
Magento Meetup #12 Vlad Opukhlyi
Magento Meetup #12 Vlad OpukhlyiMagento Meetup #12 Vlad Opukhlyi
Magento Meetup #12 Vlad Opukhlyi
 
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
 
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
 
Magento enhanced media gallery - Alexander Shkurko
Magento enhanced media gallery - Alexander ShkurkoMagento enhanced media gallery - Alexander Shkurko
Magento enhanced media gallery - Alexander Shkurko
 
7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый
 
Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov Avexey
 
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMaking the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
From Repositories to Commands - Alexander Shkurko
From Repositories to Commands - Alexander Shkurko From Repositories to Commands - Alexander Shkurko
From Repositories to Commands - Alexander Shkurko
 
Advanced GIT or How to Change the History
Advanced GIT  or How to Change the HistoryAdvanced GIT  or How to Change the History
Advanced GIT or How to Change the History
 
MSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложности
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community project
 
Proof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorProof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s Razor
 
Что нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаЧто нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайта
 
Magento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это было
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community Projects
 
UI components: synergy of backend and frontend
UI components: synergy of backend and frontendUI components: synergy of backend and frontend
UI components: synergy of backend and frontend
 
MSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party Systems
 

История одной трансформации: как Magento 1 разработчику быстро переориентироваться на Magento 2. Анастасия Сухорукова