Рубрика «magento 2»

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

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

image

Читать полностью »

Magento является e-commerce решением, т.е. больше нацелено на продажу продуктов, чем на сопутствующий продажам складской, логистический или финансовый учёт. Для сопутствующего лучше подходят другие приложения (например, ERP-системы). Поэтому достаточно часто в практике использования Magento возникает задача интеграции магазина с этими другими системами (например, с 1С).

По большому счёту интеграцию можно свести к репликации данных по:

  • каталогу (продукты, категории);
  • инвентарным данным (остатки продуктов на складах и цены);
  • клиентам;
  • заказам;

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

Читать полностью »

Выход версии 2.3.0 приблизил использование PWA на фронте Magento-приложений на расстояние вытянутой руки. И если для фронта видны какие-то подвижки в применяемых технологиях, то с админкой всё гораздо стабильнее — старый добрый лабиринт из различных типов файлов, которые нужно поредактировать, чтобы на UI проявилось что-то полезное, усовершенствовать не планируется. В этой статье я описываю создание собственного рендерера для колонки грида в админке — вещи довольно несложной и, в то же самое время, довольно полезной при правильном применении. Например, рендерер для формирования в гриде заказов ссылки на карточку клиента, оформившего заказ:

image

Читать полностью »

Magento Dare to Share. Осень — сезон Magento митапов - 1

21-го сентября в Киеве состоялся очередной Magento «Dare to Share» Meetup.
Вашему вниманию предлагаются видео докладов прозвучавших в рамках мероприятия, а также анонсы следующих Magento ивентов этой осенью.

  1. Антон Криль, Magento Lead Architect (@AntonKril on Magento Dare to Share. Осень — сезон Magento митапов - 2 ) — Magento 2 directions (Укр.)
  2. Анастасия Сухорукова, Magecom (@a_sukhorukova on Magento Dare to Share. Осень — сезон Magento митапов - 3 ) — Микросервисы для Мagento
  3. Игорь Миняйло, Magento Architect (@iminyaylo on Magento Dare to Share. Осень — сезон Magento митапов - 4 ) — Magento Contribution Day как формат Хакатона
  4. Игорь Сидоренко, Vaimo (@wurkindylkildyl on Magento Dare to Share. Осень — сезон Magento митапов - 5 ) — Динамическое редактирование фронтенда в Magento
  5. Олег Посиняк, Magento Cloud (@OlegPosyniak on Magento Dare to Share. Осень — сезон Magento митапов - 6 ) — Magento Cloud

Тезисы докладов и анонсы следующих ивентов можно прочитать под Катом.
Читать полностью »

image

Обновления Magento 2.1.9, 2.0.16, принесли множество заплаток в том числе от XSS, CSRF, неавторизированные утечки данных, защита от администраторов/операторов магазинов.
Зацепило даже Magento 1.x, 1.9.3.6 и 1.14.3.6 получили обновления.

Для простоты назовем плохого администратора/оператора — Одмин.
Обновление: Добавлено описание того как происходит утечка данных о заказанных товарах.
Читать полностью »

Погружение в ценообразование Magento 2, убираем копейки после скидок - 1
Ценообразование — пожалуй, достоинство в Magento и самая интересная часть системы.
А для владельца магазина — самая важная часть, так как связано с деньгами.
Ранее коллеги рисовали диаграммы, которые еле помещались на Китайской Стене, пытаясь уместить все-все-все этапы расчета. В этой статье попробую изложить только основные этапы расчета, и пример округления скидок в пользу магазина. К счастью, по сравнению с Magento 1, новшества коснулись самых глубин, подход остался неизменным.

Верхушка айсберга

image

Когда клиент меняет содержимое корзины начинается расчет. Скорость расчета зависит от множества действий «на глубине». Начнем погружение с видных мест. попутно увидим события и зависимости типов товаров, методов доставки, ценовых правил корзины и каталога.
Читать полностью »

Система управления складом с использованием CQRS и Event Sourcing. Service Layer - 1

В данной статье будет рассмотрен Service Layer в Magento 2 и сервисы (API интерфейсы) для управления сущностями, которые были описаны в предыдущей статье, посвященной проектированию и выделению доменных сущностей для системы управления складом (Inventory).
Читать полностью »

Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 1

20 Июля в Киевском офисе Magento прошло открытое мероприятие под названием Magento meetup «Dare to Share», которое могли посетить и в котором могли принять участие любые желающие кому интересна платформа Magento 2 и тема электронной коммерции (eCommerce).

В данном отчете публикуются видео докладов прозвучавших на мероприятии, а также принимаются заявки на выступление в следующем ивенте.

  1. Игорь Миняйло, Magento (@iminyaylo on Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 2 ) — Magento Community Engineering
  2. Макс Пронько, The Irish Store (@max_pronko on Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 3) — Автоматизация релизов для Magento 2. Опыт компании The Irish Store
  3. Вячеслав Кравчук, Atwix (@slkra on Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 4) — Story of a Transformation (Укр.)
  4. Андрей Кравец, Gymgrossisten (@Winfle on Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 5) — Dynamic caching of personalised data in Real Life (Укр.)
  5. Александр Козырь, Magecom (@kozyr1av on Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce - 6) — SOLID-ное программирование на Magento 2

Тезисы докладов можно прочитать под Катом

Читать полностью »

image
Итак, после постановки требований описанной в части 1 можно перейти к проектированию системы.

Основная наша задача в проектировании, как это понятно из названия статьи, добиться разделения интерфейсов на Query и Command, чтобы впоследствии разделить бизнес сценарии на те, которые будут читать данные (Query интерфейсы) и на те, которые будут изменять данные (Command интерфейсы). А также обеспечить минимальное время ожидание (latency) на обновление данных, доступных через Query, после того как мы изменили данные через Command.
Читать полностью »

Запрещенные изменения в коде или продолжение истории ремонта одного крана - 1

Данная статья является продолжением ранее опубликованной статьи, которую можно найти здесь.

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

Откладывание рефакторинга на потом ведет к увеличению технического долга и созданию задач (user story) на рефакторинг, которые не имеют business value для product owner-a, а соответственно такие задачи не будут попадать в топ продуктового беклога.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js