Магазин (каталог товаров) admitad на drupal. Настраиваем импорт csv в drupal

Drupal / 21 февраля 2015
/ 1086

Имея кулинарный сайт, я вдруг подумал, а почему бы не подключить к нему что-нибудь вроде каталога товаров всяких там кастрюль, поварешек и прочей кухонной утвари. Авось кто-нибудь что-то и купит. Но сделать это все я решил в своем дизайне и на своих условиях. Так, чтобы не было мучительно больно смотреть на всякое там некрасивое чужое, а с удовольствием смотреть на красивое, ну или не очень красивое, но свое. Вспомнил я, что когда-то, где-то, от кого-то слышал, что admitad вроде как начал толкать товары. С этим сервисом я однажды начинал работать. Было это очень давно, но регистрация у меня осталась. Нельзя сказать, что я был впечатлен, какое к черту, если ничего не заработал. Но, на сайт, я сходил, и действительно, появились товары.

Разобраться в системе оказалось несложно. Есть шаблоны экспорта, есть экспорт в csv, и товары тоже есть.

 

Дело за малым. Включить, подключить, настроить, запустить, получить деньги, потратить. Все просто и выполнимо, возможно за исключением последних двух пунктов. Вообще, я слабо верю в то, что на admitad можно более-менее заработать. Но не об этом речь. Наша задача, создать список товаров на сайте, импортировать в него товары, автоматизировать всю эту работу, а получим мы деньги при этом или нет – дело десятое. Нам нужно научиться импортировать данные на сайт а не деньги в кошелек. Если бы я умел импортировать деньги в кошелек webmoney напрямик, я бы об этом помалкивал, как и те, кто освоил эту специальность. Итак, по порядку.

1. Регистрируемся на admitad.com.

5. Теперь мы можем увидеть, у каких программ есть товары в нужную нам категорию.

У меня были только "Сотмаркет" и "Quelle".

6. Теперь идем в программу по ссылке в любом товаре и подключаем ее к своему сайту. Некоторые программы подключаются сразу, другие после модерации.

7. Далее идем в Товары / Шаблоны экспорта. Создаем свой шаблон.

8. Я выбрал не все поля:

9. Сохраняем шаблон.

10. Возвращаемся в Товары / Обработанные.

11. Опять фильтруем наш список товаров, нажимаем кнопку "Настройка экспорта" в верхней части списка товаров, справа.

12. В открывшемся окне выбираем шаблон и нажимаем кнопку "Сгенерировать".

13. Копируем себе сгенерированную ссылку в блокнот или куда еще. Можно ссылку вставить в браузер, по ней скачается файл csv. Правда, первые пару часов мой файл был почему-то пустой.

14. Закрываем все это хозяйство, и идем на наш drupal сайт.

15. Нам нужен модуль Feeds. Так, как я человек горячий и постоянно работаю с модулем Feeds на других проектах, знаю его довольно неплохо, то я рискнул и поставил версию 7.x-2.0-alpha8+71-dev (это та, которая на красном фоне, Development releases). В этой версии оказалась очень нужная нам функция – удаление тех материалов, которых нет в новом csv файле. Это конечно рискованно, но у меня эта версия работает отлично и пока ничего лишнего не удалила. Еще нам нужен Feeds Tamper. Оба модуля устанавливаем как обычно, включаем.

16. Теперь создаем тип материала для наших товаров на этой странице admin/structure/types. Я свой назвал Товар. Все настройки обычные, в подробности вдаваться не буду.

17. Создаем словарь таксономии "Категория".

18. Создаем поля в типе материала "Товар", точно такие же, какие мы выбрали в п. 8.

Поле id можно вообще не создавать. Я его создал только для контроля, на всякий случай.
В поле категория (ссылка на термин) включаем Количество значений: не ограничено.
Дата обновления – тип Date (Unix timestamp).
Стоимость – десятичное число, чтобы можно было сделать фильтр по цене, я пока не делал.
Поле url, я на всякий случай, сделал "Длинный текст", и в настройках текста – Обработка текста: Простой текст.

19. Создаем Feeds на странице admin/structure/feeds с такими нстройками:

20. Периодический импорт можете включить какой вам больше нравится. Admitad говорит, что они обновляют списки каждые 2 часа. Так часто, я думаю, нам не надо.

 

21. Здесь обращаем внимание на разделитель. Он должен быть такой же, как в п. 7.

 

22. В Node processor выбираем наш тип материала Товар, включаем Update existing Материалы – обновлять материалы при импорте. И новая функция, доступная только в dev версии модуля: Action to take when previously imported Материалы are missing in the feed – что делать, если ранее импортированные материалы отсутствуют в новом файле импорта. Я включил – удалить нафиг (Delete non-existent Материалы). Нет, на самом деле, сначала я включил "Unpublish non-existent nodes", чтобы проверить как оно работает. И на самом деле, через пару дней нашел кучу отключенных товаров. Сейчас я уже включил удалять.

 

Автором материалов я сделал админа и выключил Authorize.

23. Настраиваем соответствия. Слева пишем название колонки из нашего файла csv, справа выбираем поле ноды.

Соответствие id - GUID делаем уникальным.

Именно благодаря этому полю наши материалы смогут обновляться и удаляться за ненадобностью. Если этого не сделать, при каждом новом импорте у вас будут создаваться новые товары, даже если они уже есть.

В соответствии category – Категория (field_category) разрешаем создавать новые термины.

24. Все сохраняем и идем на страницу admin/structure/feeds и в нашем настроенном импорте нажимаем ссылку Tamper.

25. Ищем category -> Категория. Добавляем плагин Explode. Так, как в нашем файле csv категории перечислены через знак / , то нам нужно разделить термины этим знаком, чтобы не полусить один термин типа "Все для дома и дачи/Кухонная посуда и принадлежности".

26. Тоже самое сделаем в picture_orig -> Изображение: URI. В п. 8. я выбрал поле picture_orig вместо picture. Оно больше и качественнее. Но в поле picture_orig могут быть не одна ссылка на изображение, а несколько и разделяются они запятой. Добавляем Explode.

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

27. Все, сохраняем. Уже почти конец нашим мытарствам.

28. Идем на страницу импорта по адресу /import. Выбираем наш импорт - Товары.

29. В поле URL, как вы уже поняли, вставляем ссылку полученную в admitad и нажимаем кнопку "Импорт".

Иногда я получаю ошибку "cURL error (28) Operation timed out after 30001 milliseconds with 0 bytes received for... " – я так понимаю, проблемы с подключением. Однако, обычно все срабатывает на второй раз.

30. После удачного импорта у вас появится куча новых нод типа "Товар". Я все это сделал вьюхами вот так:

 

Если интересно как сделать станицу товаров, страницу товара и рекламный блок с помощью views, пишите в комментариях, распишу подробно.

comments powered by HyperComments