Импорт товаров в Интернет-магазин Ubercart Drupal 7 (Часть 2)

Аватар пользователя userok

Импорт с несколькими картинками и атрибутами

Рады приветствовать всех посетителей сайта it-cat.biz.
С момента опубликования на нашем сайте статьи Импорт товаров в интернет-магазин Ubercart прошло более полугода. И хотя многие просили продолжения, у нас долго не было возможности написать его, и пусть эта статья, первая в 2014 году, исправит эту досадную оплошность:) Большое количество пользователей интересовала возможность загрузки нескольких картинок, а так-же атрибутов, что актуально для большинства интернет-магазинов. Давайте приступим к устранению этих пробелов.

Так как мы уже рассматривали импорт в прошлый раз, то за основу возьмём импортер, созданный в предыдущей статье и немного изменим его для достижения наших целей.

Рисунок 1. Так выглядел наш интернет магазин по завершении импорта, описанного в первой части статьи.

Feeds importers

Чтобы не выдумывать нелепые атрибуты для мыла и стирального порошка (даже в голову ничего не приходит), поступим проще. Просто создадим новую категорию «Одежда для Вас» и загрузим в неё два новых товара: мужскую и женскую футболки, атрибутами которых будут размер и цвет.
Переходим на закладку «Список» (Администрирование->Структура->Таксономия->Интернет-магазин->Список терминов), кликаем ссылку «Добавить термин»:

Рисунок 2. Так выглядел наш интернет магазин по завершении импорта, описанного в первой части статьи.

Feeds importers

Рисунок 3. Новая категория товаров в меню.

Feeds importers

Далее будем действовать последовательно, сначала разберёмся с загрузкой нескольких картинок, а затем с атрибутами.

1) Загрузка нескольких картинок для одного товара.

Приведём строку из csv-файла из предыдущей статьи:

sku|tovar|price|language|user|description|catalog|picture
001|Порошок №1|"200"|ru|userok|Хороший стиральный порошок|Стиральные порошки|http://127.0.0.1/sites/default/files/import/00-common-powder1.jpg

Поле picture является полем с множественным значением, соответственно логично было бы перечислить пути к картинкам через запятую(или другой разделитель) и заключить это в кавычки. Однако используемый нами модуль Ubercart Feed Mappers не понимает такой синтаксис и не умеет работать с множественными значениями полей. Однако эта проблема, как это часто бывает в Drupal, легко и изящно решается с помощью модуля Feeds Tamper. Поэтому смело скачиваем и устанавливаем данный модуль. Подробнее об установке модулей можно прочитать в соответствующей статье.
В группе модуля feeds (Лента) ставим галочки напротив Feds Tamper и Feeds Tamper Admin UI. Сохраняем настройки.

Рисунок 4.

Feeds importers

Модуль Feeds Tamper установлен и активирован, теперь мы сможем настроить импорт множественных значений в любое поле, поддерживающее множественные значения, поле изображение(picture) является именно таким полем. Заходим в «Администрирование->Структура->Feeds importers» и видим что для каждого импортера добавилось действие Tamper (вмешаться, исказить, подделать, -англ.)

Рисунок 5.

Feeds importers

Нажимаем ссылку Tamper для созданного нами(см. первую часть статьи) импортера.

Рисунок 6.

Feeds importers

Находим поле picture->Изображение и нажимаем Add plugin.

Рисунок 7.

Feeds importers

В поле The plugin to add выбираем плагин Explode(обратите внимание на остальные плагины из этого списка — там вы найдёте много полезного, что может пригодиться в дальнейшем), в появившемся ниже поле String separator выбираем разделитель; так как нам необходимо отделять друг от друга url-адреса то нас более чем устроит предложенная по умолчанию запятая. Нажимаем «Добавить».

Рисунок 8.

Feeds importers

Сохраняем изменения. Мы только что сделали всё необходимое для загрузки в Ubercart нескольких изображений. Для того, чтобы это заработало, необходимо, чтобы синтаксис списка загружаемых изображений в поле picture удовлетворял следующему условию: «путь_к_1_картинке, Путь_ко_2_картинке...путь_к_N_картинке». Далее в статье будет приведён образец csv-файла.

2) Загрузка товаров с атрибутами.

Для начала добавим атрибуты и параметры. Переходим в «Администрирование->Магазин->Атрибуты», нажимаем «Добавление атрибута»

Рисунок 9.

Feeds importers

Добавляем атрибут «Размер»

Рисунок 10.

Feeds importers

Нажимаем «Отправить» и попадаем на страницу добавления параметров.
Жмём «Добавить параметр»

Рисунок 11.

Feeds importers

Для атрибута «Размер» добавим только два параметра: XL и XXL.

Рисунок 12.

Feeds importers


Рисунок 13.

Feeds importers

Вновь переходим в «Администрирование->Магазин->Атрибуты» и добавляем атрибут «Цвет»:

Рисунок 14.

Feeds importers

Создадим для этого атрибута три параметра: «Красный», «Синий», «Зелёный».

Рисунок 15. Атрибуты «Синий» и «Зелёный» создаем аналогичным образом.

Feeds importers

В результате на странице атрибутов мы должны увидеть следующее:

Рисунок 16.

Feeds importers

Далее нам необходимо отредактировать наш импортер, добавив поля вновь созданныхз атрибутов. Переходим в «Администрирование->Структура->Feeds importers», находим созданный нами ранее импортер «Import into Ubercart», нажимаем «Редактировать» и переходим по ссылке «Соответствие» в группе «Processor».

Рисунок 17.

Feeds importers

На рисунке выше видно, что для каждого созданного нами параметра Ubercart создал по 3 поля: cost, price и weight. Здесь имеется ввиду, что при выборе пользователем определённого параметра может меняться цена выбираемого товара, его стоимость или вес. В нашем примере мы будем оперировать только ценой, которая будет увеличиваться при выборе вещи большего размера. Выбор цвета на цену влиять не будет.

Поэтому создадим 5 новых полей: ucapricexl, ucapricexxl, ucapricered, ucapricegreen, ucapriceblue:

Рисунок 18.

Feeds importers

Теперь рассмотрим правила заполнения этих полей в csv-файле.

1) Если все поля параметров данного атрибута пустые, то атрибут попросту не импортируется, т. е. если у товара не предусмотрен, например, атрибут размер, то оставляем пустыми поля ucapricexl и ucapricexxl.

2) Если заполнены не все поля данного атрибута, то импортируются только заполненные параметры, например, если мы для атрибута «Цвет» оставим пустым поле ucapricered, а заполним только ucapricegreen и ucapriceblue, то импортируется атрибут «Цвет» с параметрами «Зелёный» и «Синий».

3) Поля заполняются цифровыми значениями. Если значение поля параметра атрибута равно «0», то при выборе пользователем этого параметра цена(вес, стоимость) товара будет неизменной, если значение будет отличным от нуля, тогда при выборе пользователем данного параметра цена(вес, стоимость) изменятся на это значение. Поддерживаются отрицательные значения.

Создадим csv-файл следующего содержания:

sku|tovar|price|language|user|description|catalog|picture|ucapricexl|ucapricexxl|ucapricered|ucapricegreen|ucapriceblue

007|Футболка мужская|600|ru|userok|Стильная мужская футболка|Одежда для Вас|"http://127.0.0.1/onlineshop/sites/default/files/import/000-mansshirt-red.jpg,http://127.0.0.1/onlineshop/sites/default/files/import/000-mansshirt-green.jpg"|"-100"|"0"|"0"|"0"|
008|Футболка женская|"800"|ru|userok|Шикарная женская футболка|Одежда для Вас|"http://127.0.0.1/onlineshop/sites/default/files/import/000-womansshirt-red.jpg,http://127.0.0.1/onlineshop/sites/default/files/import/000-womansshirt-green.jpg,http://127.0.0.1/onlineshop/sites/defaul..."|"0"|"100"|"0"|"0"|"0"

Итак в соответствии с тем как мы заполнили поля будем ожидать следующего результата импорта. Загрузим два товара: мужскую и женскую футболки. Мужская футболка будет только двух цветов: красная и зелёная. Женская — трех: красная, зелёная и синяя. Обе футболки будут двух размеров: XL и XXL. При выборе размера XL у мужской футболки её цена уменьшится на 100 рублей, при выборе размера XXL у женской футболки её цена увеличится на 100 рублей.

Замечание: хотя мы загружаем несколько картинок для товара, однако эти картинки не будут привязаны к атрибутам, т. е. если главная картинка товара — футболка красного цвета, при выборе атрибута «Зелёный» картинка на странице товара не поменяется.

Ещё следует обратить внимание на путь для загрузки картинок в нашем примере. Если в первой части статьи путь имел вид: http://127.0.0.1/sites/default/files/pictures/import/00-common-powder1.jpg
То сейчас путь несколько изменился: http://127.0.0.1/onlineshop/sites/default/files/import/000-womansshirt-red.jpg
Это произошло по причине размещения второго сайта на тестовом компьютере, что было описано в статье Apache-несколько сайтов на локальном компьютере . Поэтому пусть Вас не смущает onlineshop в пути, у вас всё равно путь загрузки будет свой.

Пришло время загрузить новые товары с атрибутами и картинками. Переходим на страницу импорта(«Администрирование->Структура->Feeds importers->import») Выбираем созданный нами импортер «Import into Ubercart», в разделе «Файл» выбираем отредактированный csv-файл и нажимаем «Импорт».

Рисунок 19.

Feeds importers

Убеждаемся, что импорт завершён успешно.

Рисунок 20.

Feeds importers

Если всё сделано правильно, то в категории «Одежда для Вас» появятся две наших футболки к несколькими картинками и атрибутами.

Рисунок 21.

Feeds importers

Попробуем добавить в корзину несколько новых позиций, экспериментируя с атрибутами.

Рисунок 22.

Feeds importers

Мы видим, что цена товара меняется в зависимости от выбранного размера одежды, так как и задумывалось. Пока остаётся открытым вопрос как привязать картинку к атрибуту «Цвет», однако несмотря на этот небольшой недостаток с поставленной задачей мы в основном справились. Оставайтесь с нами в этом году.

Скачать статью с DepositFiles

Эта статья опубликована под Creative Commons Attribution ShareAlike лицензией.

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