Качественный экспорт с Друпал 6 на 7

Из-за того, что в Друпал 7 есть такой замечательный модуль как Feeds, который умеет абсолютно всё - и загружать картинки по урл, и выставлять соответсвие терминам таксономии по их названиям - что перенос с Друпал 6 а Друпал 7 материала представляет собой, по сути, просто правильное составление запросов в базу, чтобы через phpmyadmin сгенерировать csv-файл. Потом этот csv просто импортируем через Feeds на новый сайт - и дело в шляпе.
Перенос терминов с прикрепленными к ним картинками (использовался модуль taxonomy image)

SELECT term_data.tid, term_data.name, term_data.description, concat( 'http://creative-handmade.com/sites/default/files/fields/catalog-images/', term_image.path ) 
FROM `term_data` 
LEFT JOIN term_image ON term_data.tid = term_image.tid
WHERE 1

Если вы столкнулись с какими-то проблемами при импорте через Feeds, можете использовать вот этот мануал: http://adellefrank.com/blog/how-to-migrate-content-from-drupal6-to-drupa...
Там очень хорошо всё расписано - правда там импортируют через xml, но это даже удобнее, чем через csv.

Экспорт товаров уберкарта - немного более сложная задача, однако и с ней можно справиться.
В 7м Друпале товары теперь разбиты на два вида - сам товар (например, "Мыльная основа 0.5кг" и "Мыльная основа 1кг"), и дисплей товара (например "Мыльная основа"), который может быть связан с несколькими реальными товарами. Это на самом деле в миллион раз логичнее, чем было в Уберкарте, но привыкнуть к этому было сначала довольно тяжело.
Пoэтому делаем два экспорта: один для настоящих товаров (при этом товары из 6го уберкарта будут дублироваться т.к. теперь для одного товара "мыльная основа" надо создать два товара)
А второй экспорт будем делать для дисплеев - кол-во строк в нем уже будет совпадать с количеством товаров в 6м уберкарте.
Итак, настоящие товары:

SELECT n.nid AS articul, n.nid, n.title, p.field_maker_value, t.name, 
ua.name, uao.name, CASE pr.sell_price WHEN 0 THEN upo.price ELSE pr.sell_price END, 'RUB', pstock.stock ,concat( 'http://mylo34.ru/', f.filepath ) 
FROM `content_type_product` p
INNER JOIN node n ON p.nid = n.nid
INNER JOIN uc_products pr ON n.nid = pr.nid
INNER JOIN term_data t ON p.field_chapter_value = t.tid
INNER JOIN node_revisions r ON n.vid = r.vid
LEFT JOIN content_field_image_cache image ON n.nid = image.nid
LEFT JOIN files f ON image.field_image_cache_fid = f.fid
LEFT JOIN uc_product_options upo ON n.nid = upo.nid
LEFT JOIN uc_attribute_options uao ON uao.oid = upo.oid
LEFT JOIN uc_attributes ua ON uao.aid = ua.aid
LEFT JOIN uc_product_stock pstock ON pstock.nid = n.nid
WHERE 1
LIMIT 0, 9999

Хочу отметить, что про создании Feed для импорта этого файла в Друпал 7 вам нужно указать при соответсвии articul -> Артикул товара настройку, чтобы друпал форсированно делал это поле уникальным (иначе буду ошибки при импорте).

to be continued...

Drupal 6, 7

Комментарии

Гость 25.01.2013 - 10:34

Не подскажете где указывается соответствие articul -> Артикул? Никак не могу найти.

Nikita Petrov 12.02.2013 - 14:22

При создании новой Feed там в последней закладке что-то типа "Fields" , или маппинг, не помню точно. Там будет таблица с текстовыми полями - в первом столюце надо заполнить название поля csv, в правом выбрать реальное поле на сайте

propagganda@i.ua 13.08.2016 - 16:08

второй день ищу как перенести картинки с 6 на 7. Не подскажете. Views Data Export не предлагает мне такое поле к переносу, не выдает в списке полей

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