Как стать автором
Обновить
0.2
Рейтинг

Magento *

Система управления интернет-магазинами

Сначала показывать
Порог рейтинга

О Dependency Injection в Magento 2

CMS *Разработка веб-сайтов *PHP *Разработка под e-commerce *Magento *
Tutorial

В этой статье поговорим об инъекции (внедрении) зависимостей в Magento 2. Как ее использовать и для чего она нужна.

Итак, внедрение зависимостей — это паттерн проектирования предназначенный для того, чтобы предоставлять какому-либо объекту зависимости, необходимые для его работы. Это более совершенная альтернатива наследованию, позволяющая уменьшить связанность классов и компонентов между собой.

В основе этого подхода лежит принцип Dependency Inversion (инверсия зависимостей) из принципов SOLID, который предполагает использование абстракций вместо конкретных классов, где детали реализации должны зависеть от абстракций, а абстракции не должны зависеть от деталей реализации.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 883
Комментарии 0

Новости

Структура модуля Magento 2

CMS *PHP *Разработка под e-commerce *Управление e-commerce *Magento *
Из песочницы

В данной статье мы рассмотрим структуру модуля Magento 2. Посмотрим из чего она состоит, разберем какие бывают конфигурационные файлы и для чего они нужны. В будущем оставлю ссылки на статьи, где каждая упомянутая тут тема будет рассмотрена в деталях.

Читать далее
Рейтинг 0
Просмотры 1.8K
Комментарии 0

Magento 2. Добавление картинок в динамический массив

PHP *Разработка под e-commerce *Magento *
Из песочницы

Приветствую вас, хабравчане! Немного набравшись смелости решил написать свою первую статью, точнее поделиться небольшим опытом, в интересной как мне показалось теме, а именно как в динамический массив в конфиге, добавить загрузчик файлов.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 1.4K
Комментарии 4

Magento 2 UI Components. Часть 3: модификация

Блог компании Россельхозбанк Разработка под e-commerce *Magento *
Tutorial

Привет! Меня зовут Павел и я Magento 2 бэкенд-разработчик. В прошлых частях саги о Magento 2 UI Components мы получили общие сведения о UI-компонентах, а также рассмотрели наиболее важные аспекты их конфигурации. Сегодня подробно коснемся некоторых вопросов модификации UI компонентов под свои нужды: изменение внешнего вида, поведения клиентской части, поведения серверной части и пр. Погнали!

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 3.1K
Комментарии 0

Magento 2: минимальная инсталляция и зависимости — исследование

PHP *Magento *

Я занимаюсь back-end / full-stack разработкой на Magento 2 уже 3.5 года. Все эти годы у меня никак не хватает сил и времени перетащить один свой старый (но всё еще довольно популярный) проект с убогого Web-CMS uWeb на что-то более-менее толковое, поддерживаемое и расширяемое. Идей было много - писать с нуля на Symfony, изучать Drupal и делать на нем, привлекать React JS... Но всё это требует значительных временных затрат и от этих идей приходилось отказываться.

И вот недавно мне в голову пришла другая идея: а что если использовать Magento 2 как каркас для моего кастомного проекта?..

Читать
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 5.5K
Комментарии 13

Magento 2 UI Components. Часть 2: конфигурация

Блог компании Россельхозбанк PHP *Разработка под e-commerce *Magento *
Tutorial

Привет! Меня зовут Павел и я Magento 2 бэкенд-разработчик. В прошлой части саги о Magento 2 UI Components мы получили общие сведения о UI-компонентах, их разнообразии, строении и технологиях, лежащих в основе. Сегодня подробно коснемся их конфигурации: значения по умолчанию, XML-конфигурации, выражения в значениях конфигурации, замена шаблонов и JS-компонентов и пр. Погнали!

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 4.5K
Комментарии 4

PHP-SPX простой профайлер трейсер для PHP

Высокая производительность *Разработка веб-сайтов *PHP *Magento *
Работая с различными PHP проектами часто приходится дебажить приложение чтобы найти и исправить ошибку. Во многих случаях вполне хватает xDebug, однако он не подходит для всех задач. Иногда нужно понять почему та или иная страница долго загружается, что съедает так много памяти или просто как работает большой и запутанный код.
php-spx logo webmageic
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 7.5K
Комментарии 3

Magento 2 UI Components. Часть 1: общее устройство

Блог компании Россельхозбанк Разработка под e-commerce *Magento *
Tutorial

Привет! Меня зовут Павел и я Magento 2 бэкенд-разработчик. Если спросить у любого практикующего M2 разработчика, какие аспекты М2 вызывают наиболее сильную боль, — уверен, что с большим отрывом будут лидировать UI компоненты (Ui Components). Это тот самый случай, когда их все используют, но немногие знают, как в действительности они устроены и как они работают. Сложившаяся ситуация отчасти вызвана достаточно скудным описанием устройства компонентов в документации, особенно если принять во внимание сложность и некоторую неочевидность устройства компонентов. Сегодня мы начнем цикл статей про M2 Ui Components, чтобы полностью закрыть данную тему. Хотя на хабре уже есть превосходные статьи, которые рассматривают тему Ui Components с того или иного ракурса, системно ее на Хабре не раскрывал еще никто. В общем, иди за мной Нео, и я покажу тебе, насколько глубока кроличья нора. Погнали!

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 5.9K
Комментарии 6

Неочевидные факты о коллекциях в Magento 2

Блог компании Россельхозбанк PHP *Разработка под e-commerce *Magento *
Tutorial

Привет! Меня зовут Павел и я занимаюсь бэкенд разработкой. Сегодня мы рассмотрим коллекции в Magento 2 (далее — M2). Несмотря на кажущуюся простоту реализации и интуитивно понятное назначение, эта сущность таит в себе несколько неочевидных подводных камней, которые влияют на производительность, а иногда и на саму возможность работы кода. 

Сегодня рассмотрим принципы работы коллекций, полезные фишки и лайфхаки их использования, а также оценим влияние разных нюансов на производительность. 

Погнали!

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 3.9K
Комментарии 2

За что я люблю Magento 2

CMS *PHP *Magento *

Знаете, сейчас, в эпоху хороших фреймворков принято презирать всякие %bad CMS Name% и прочие битриксы. И не мудрено, ведь многие CMS как будто созданы не для программистов а для кодеров. Они решают множество нужных и полезных задач, имеют огромные коммьюнити и тысячи плагинов, но когда ты смотришь под капот - медленно седеющие волосы на голове начинают шевелиться в такт "архитектуре".

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 11K
Комментарии 5

Очереди на очереди: Magento 2 + RabbitMQ

Блог компании Россельхозбанк PHP *Разработка под e-commerce *Magento *
Tutorial

Привет! Меня зовут Павел и я Magento 2 бэкенд-разработчик. Когда-то давно, когда я только начинал знакомство с Magento 2 (для краткости буду называть ее M2), мне понадобилось автоматизировать обработку однотипных событий при разработке одного решения. Тогда я удивился, насколько мало информации на русском языке об интеграции очередей в M2. Время идет, а ситуация не меняется: информации об этом на просторах рунета все так же мало. Раскроем эту тему. Для начала кратко поговорим про очереди: что это такое и зачем они нужны, потом рассмотрим интеграцию M2 с популярным менеджером очередей Rabbit MQ (далее по тексту — RMQ), а также напишем простую реализацию работы с очередями в качестве примера. Погнали!

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 5K
Комментарии 4

ObjectManager в Magento 2

PHP *Magento *
Из песочницы

ObjectManager можно назвать одной из основных концепций, которая лежит в основе построения Magento2, и абсолютно новый если брать в сравнении с Magento1. Если мы вспомним Magento1, то там, для создания нужных нам для работы объектов, мы использовали класс Mage, который предоставлял статические методы для создания разных типов объектов — будь то модели, ресурс-модели, хелперы, или для создания объектов, которые мы хотели иметь в едином экземпляре(метод Mage::getSingleton). При создании Magento2 команда разработчиков отказалась от этой идеи и имплементировали принцип инъекции зависимостей и сервис-контрактов(ServiceContracts). Именно это позволило сделать Magento2 такой гибкой, легко кастомизируемой и тестируемой. Так же наличие функционала построенного вокруг ObjectManager’а делает возможным наличие всего функционала кастомизации поведения системы, который мы можем настраивать посредством конфигурационного файла di.xml.


Если смотреть глобально на функционал, который реализует ObjectManager, то можно сказать, что он является некой реализацией DI container, который в мире PHP представлен в виде PSR-11, хотя сам ObjectManager напрямую не реализует Psr\Container\ContainerInterface (и не имеет метода has, наличие которого предполагает Psr\Container\ContainerInterface). Он является централизованным средством для создания и получения объектов. Наличие такого централизованного класса для генерации необходимых объектов несет в себе следующие преимущества.

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2K
Комментарии 0

Как Magento 2 взаимодействует с Vue Storefront

Блог компании Россельхозбанк Разработка под e-commerce *Magento *
Tutorial


Привет! Меня зовут Павел и я занимаюсь бэкенд разработкой. Как уже писал AndreyHabr, многие из наших проектов основаны на стеке Adobe Magento 2 (для краткости далее я буду называть ее M2) в качестве бэкенда и Vue Storefront (VS) в качестве фронтенда.


Я не буду подробно останавливаться на архитектуре стека VS/M2 — мы уже писали об этом ранее. Предлагаю ознакомиться с данной статьей для более полного понимания изложенного ниже.


Сегодня я расскажу о взаимодействии с VS изнутри M2: посмотрим на реализацию индексеров, обсудим особенности их работы, после чего я кратко расскажу как создать свой индексер для кастомной сущности.


Погнали!

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 2.1K
Комментарии 4

Введение во Vue Storefront

Блог компании Россельхозбанк Magento *VueJS *
Перевод

Добрый день, меня зовут Андрей Солдатов, мы в команде Россельхозбанка разрабатываем новые интересные проекты, связанные с сельским хозяйством. В качестве фронтального решения для некоторых из них мы решили использовать интересное open source решение Vue Storefront. В этой статье вы можете ознакомиться с ключевыми возможностями и особенностями этого решения. Статья является переводом статьи из официального блога Vue Storefront, оригинал доступен по ссылке.

Vue Storefront - это достаточно сложное решение с обширными возможностями. Изучение их всех может занять некоторое время. В этой статье я за несколько минут постараюсь объяснить вам его ключевые понятия, чтобы показать все необходимое для начала работы с Vue Storefront.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 7.9K
Комментарии 11

Истории

Magento 2: Advanced Javascript Bundling

CMS *Magento *


Большой размер JavaScript файлов в Magento2 — большая проблема, в этой статье мы попробуем Magento Advanced JavaScript Bundling. Рассмотрим инструменты, настройку и работоспособность.

Основная цель JavaScript-бандлинга состоит в том, чтобы уменьшить количество и размер запрашиваемых ресурсов для каждой страницы.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 2.8K
Комментарии 1

Magento 2: Critical CSS

CMS *Magento *


В этой статье мы рассмотрим, как настроить и включить critical css в Magento 2.

Что ты такое, critical css?


И HTML, и CSS замедляют вывод страницы. HTML-документ нужно обработать для создания модели DOM, без которой на странице не будет контента. CSS-документ необходимо сначала загрузить, а далее обработать (CSS Object Model).

Чтобы ускорить процесс, необходимо упрощать CSS и использовать media-запросы. Так же увеличению производительности способствует critical css.

Как мы уже говорили выше, все стили CSS, загруженные из внешних файлов, рассматриваются как блокирование рендеринга. Это означает, что веб-страница не будет отображаться, пока эти файлы не будут загружены. Используя critical css, мы предоставляем «критический CSS», встроенный в, и делаем загрузку всех остальных стилей асинхронной.

Асинхронная загрузка достигается путем добавления новой директивы preload в атрибут rel

Для поддержки кроссбраузерности rel=«preload» в Magento используется полифилл.

Важная особенность, в «критический css» входит только видимая часть страницы.
Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 3.8K
Комментарии 0

Magento 2: Настройки frontend оптимизации

CMS *Magento *


В этой статье мы рассмотрим какие настройки и инструменты по оптимизации есть в Magento 2.

Версия Magento на момент написания статьи — 2.3.4

Производительность веб-сайта — очень важный аспект как и для поисковой системы (более быстрые сайты поднимаются в выдаче выше, чем медленные), так и для посетителей (медленный и тормозящий ресурс врядли будет обладать большой конверсией). В области e-commerce это особо важно.

Давайте посмотрим, что же может предложить нам Magento 2 «из коробки»:

  1. Настройки кеширования
  2. Настройки JavaScript
  3. Настройки CSS
  4. Настройки изображений


Настройки кеширования


Stores — Configuration — System — Full Page Cache

На выбор предлагается 2 опции: Built-in cache и Varnish cache



Built-in cache — встроенный кеш, Varnish cache — это HTTP ускоритель предназначенный для обслуживания динамических веб-сайтов, и сайтов имеющих API.
Читать дальше →
Рейтинг 0
Просмотры 2K
Комментарии 0

7 ошибок одного Black Friday и как работает Magento Cloud — видео

PHP *DevOps *Magento *
Это доклады с Magento Meetup Kharkiv Online, где разработчики поделились опытом и рассказали, что такое Magento Cloud, чем хорош модуль Enhanced media gallery и как избежать ошибок в инфраструктуре, которые могут положить сайт в самый разгар сезона продаж.

Слайды хорошо видны, поэтому файлы презентаций сюда не добавляю. Если кто хочет поклацать презентации — пишите в комментарии.



Всего голосов 7: ↑7 и ↓0 +7
Просмотры 947
Комментарии 0

Content Security Policy в Magento 2

Magento *
Всем привет!

Наверняка вы, установив Magento 2.3.5 обнаружили в своих браузерных консолях что-то вроде

[Report Only] Refused to load the script '***' because it violates the following Content Security Policy directive: «script-src *». Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.



О том, что делать, расскажу под катом
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 5.1K
Комментарии 3

Как сделать фронтенд в три раза быстрее и когда применять команды вместо репозиториев? Видео

PHP *Magento *

В Харькове прошёл Magento-митап, и на нём прозвучали доклады Робина ван Раана, Александра Шкурко и Максима Грома. В них много полезного. Ловите.


Робин ван Раан рассказал о новейших практиках оптимизации RequireJS. С их помощью фронтенд сайта можно ускорить в 3 раза!



Александр Шкурко рассказал, в каких случаях лучше использовать команды вместо репозиториев в Magento 2. Всё это проиллюстрировано лучшими, на мой взгляд, картинками!



Максим Гром коснулся скользкой темы ныряния в Magento DI. Многим это тоже будет полезно.


Всего голосов 12: ↑7 и ↓5 +2
Просмотры 3.5K
Комментарии 3

Вклад авторов