Перейти к основному содержанию

Миграция с Ubercart на Drupal Commerce

За последние пять недель провел миграцию двух интернет-магазинов, работающих на Ubercart под управлением устаревающего Drupal 7, на Commerce под управлением Drupal 10. И таки что я имею сказать по этому поводу.

Во-первых, если я настолько поплохею разумом, что еще раз возьмусь за такое, то возьмусь только за суммы, эквивалентные четырехзначным суммам в долларах. Потому что десятый Друпал отличается от седьмого очень многим, практически это уже разные CMS, а не разные версии одной. Но еще хуже дела обстоят с переносом данных в Коммерс из Юберкарта (который не поддерживается современными версиями Drupal).

Во-вторых, хвалёная (разработчиками) миграция с Ubercart на Drupal Commerce 2 либо не работает, либо работает криво. Иных вариантов не дано — сужу не общо, а лишь по собственному опыту. Поэтому заклинаю читателей всеми богами, и старыми и новыми: никаких миграций, только импорт через Feeds! Весь остальной контент да, имеет смысл переносить с помощью Migrate, но не товары Ubercart. Потому что если товар Юберкарта состоит из одной сущности, то товар Коммерса — из трех: вариация товара, собственно товар и отображение товара. И модуль миграции с этим разделением не справляется, как выяснилось: непременно что-нибудь да упустит, а ты потом гадай, что именно и где он упустил.

Да и при импорте с помощью Feeds надо быть настороже: как минимум следует в импортируемом файле (например, CSV) вручную указать, к какому магазину относится товар. Иначе импорт будет неудачным, даже если магазин в настройках Коммерса только один.

В-третьих, луч негодования разработчикам Commerce. Умнички, это ж надо было додуматься полностью спрятать возможность ввода заголовка вариации товара и оставить лишь на неприметной странице опцию «Генерировать заголовок вариации на основе значений атрибутов». И при этом не указать, на что именно влияет наличие там галочки или ее отсутствие.

А то, что заголовок вариации необходим, владелец интернет-магазина выяснит гораздо позже, лишь при оформлении отправки посылки покупателю. У него страница с посылкой просто не сохранится, выдав фатальную ошибку PHP. При этом ошибка сошлется на Shipment, а не на Variation. Однако, как выясняется, ошибка возникает потому, что в таблице базы данных у вариации соответствующего товара нет заголовка, и живи с этим, как хочешь. Очень умно. Что помешало разработчику вставить под той галкой хотя бы крохотное пояснение — остается только предполагать. Я, пользуясь случаем, предполагаю, что помешала инопланетная логика, заметно отличающаяся от человеческой

 

Добавить комментарий