Модуль импорта товаров из MS Excel (*.xls) в E-Commerce

Аватар пользователя Vladimir_VVV Vladimir_VVV 4 января 2008 в 5:15

Предлагаю вашему вниманию простой модуль импорта товаров из таблицы MS Excel в E-Commerce.
Модуль импортирует данные из обычного формата MS Excel *.xls (не *.xml и не *.csv) в базу Drupal как ноды типа "product" с ценой и прикрепляет их к термину таксономии, созданому из записи в файле *.xls в которой нет цены.

Модуль написан “на заказ” с ограничением по срокам, поэтому код не совсем оптимален и плохо документирован.
Доработку делать не буду так как он соответствует требованиям тз.
На вопросы с удовольствием отвечу.

Зависимости модуля: E-Commerce и Таксономия.
Работа с модулем:
Сначала настраиваем е-commerce и создаем отдельный словарь для хранения брендов (в моём случае, а может быть типы товаров или что-то ещё)
Потом заходим на страницу http://somehost/admin/settings/decor_import и указываем поле в таблице для названия товара, и поле для цены (стандартный прайс из 1С).
Далее количество записей при предпросмотре (это ещё не импорт а предпросмотр для проверки верности таблицы) установить желательно 20-50.
“Количество записей для обработки” это число обработанных записей за один шаг импорта , сильно увлекаться не стоит, а то хостер отрубит процесс импорта по тайм-лимиту( у меня стоит 500).
Словарь брендов – понятно вроде.
Тип материала – это подтип в системе e-commerce то есть тип всегда “product” а подтип к примеру может быть “generic”.
Фильтр вроде тоже должно быть понятно.
Всё! Настройка закончена.
Далее заходим на страницу http://somehost/decor_import и импортируем что-то куда-то.

Во вложении сам модуль, и пример прайс листа(чтоб было всё понятно что откуда)
----------------------------------
З.Ы.
за русский не ругайте - не знаю букафф

ВложениеРазмер
Иконка пакета Test_Import.xls_.zip2.76 КБ
Иконка пакета decor_import.zip20.35 КБ

Комментарии

Аватар пользователя VladSavitsky VladSavitsky 4 января 2008 в 13:35

Спасибо. А почему нужно было делать модуль вручную?
Не было готового модуля или были особые требования у заказчиков?
Вы не думали выложить этот модуль на .орг?

Аватар пользователя Vladimir_VVV Vladimir_VVV 4 января 2008 в 16:22

Вручную потому что не нашел подходящего (даже приближенно подходящего).
А насчет *.org в этом модуле я не регекспил входние данные названий и брендов товаров, что не соответствует стандарту кодинга drupal. Ну и ещё много чего не совсем по-стандарту. Тоесть модуль безопасен для личного использования, а если дать право импортировать плохому человеку, то возможны варианты xss.

Аватар пользователя Гость Гость (не проверено) 6 января 2008 в 16:59

А у меня при загрузке прайса после нажатия на кнопку Дальше вылазит "Невозможно отобразить страницу" и ссылка
http://localhost/decor_import/xl_upload
Не подскажете где что подправить надо?

Аватар пользователя Vladimir_VVV Vladimir_VVV 7 января 2008 в 0:09

ерор лог бы...
я так понял во время загрузки на сервак прайса...
А файловая система указана в настройках?(модуль не пользуется средствами upload, в силу рарных проблем с совместимостью в опере, но загружает файл туда-же куда и upload)

Аватар пользователя Гость Гость (не проверено) 7 января 2008 в 14:49

>А файловая система указана в настройках?
А это где?

Сразу оговорюсь что с друпалом только начинаю знакомство.
Так вот, если оставить так как у вас сейчас сделано, то
он будет пытаться загрузить страницу http://localhost/decor_import/xl_upload которой естественно нет на сервере.
Я тупо дописал в скрипте во всех form action
вместо "

Аватар пользователя Гость Гость (не проверено) 7 января 2008 в 14:53

Вместо action="/decor_import/xl_upload"
action="/mysite/index.php?q=decor_import/xl_upload" тогда работает

Аватар пользователя Vladimir_VVV Vladimir_VVV 7 января 2008 в 23:58

да сорри ...делал только под режим "чистые ссылки", проверку не вводил так как пользуюсь Russian installer который сам включает "чистые ссылки".
Если есть "мод реврайт" то можно включить чистые ссылки в
http://some-site/?q=admin/settings/clean-urls

А также нет проверки на "basedir" - т. е. сайт размещён в корне.

Аватар пользователя run run 8 января 2008 в 10:52

Спасибо за модуль, и спасибо что предупредили о безопасности.

Аватар пользователя Гость Гость (не проверено) 8 января 2008 в 13:40

У меня в странице настроек на отображается список "Тип материала для хранения продуктов" Не знаю правильно ли сделал, но исправляется если вместо
$tmp_type_list[$i]=$value->name;
поставить
$tmp_type_list[$i]=$value;

Аватар пользователя Гость Гость (не проверено) 8 января 2008 в 13:42

И еще один вопрос. Почему то после загрузки цены отсутствуют. Что может быть?

Аватар пользователя Vladimir_VVV Vladimir_VVV 8 января 2008 в 19:26

тип материала нужно создать в екомерц или выбрать из его списка, это не тип материала от друпал
Вероятно екомерц не настроен.
product_get_ptypes() даёт массив обектов типа продуктов екомерц
$value является (должно быть) объектом, по print_r($value); выводится как объект
и при настроеном екомерц в объект ноды добавится цена
PS
екомерц на котором сайт работает 5.x-4.0-alpha6

Аватар пользователя Гость Гость (не проверено) 8 января 2008 в 22:07

>екомерц на котором сайт работает 5.x-4.0-alpha6
Теперь все ясно. Да на этом работает, а вот на ecommerce-5.x-3.4 уже нет.

Аватар пользователя Vladimir_VVV Vladimir_VVV 9 января 2008 в 7:14

Нет в екомерце стандартизированого апи поэтому все его модули по версиям раскиданы,
чтоб поправить модуль нужно поковырять екомерц на придмет ценыв ноде через print_r()

Аватар пользователя brash brash 9 января 2008 в 9:18

Подскажите в E-Commerce можно создать сначала группу товаров (с картинками?) а потом уже списки товаров?

к примеру - услуги а затем подгруппы и только потом чтобы выводились список товаров.
И группа другая к примеру - обувь - затем 1)ботинки 2) Сапоги 3) Унты и уже потом список товара в каждой поддгрупе
В E-Commerce есть возможность выставить счет вместо наложного платежа?
А если кпримеру бронируеш номер можно посавить возможность брони на указанный период?

Аватар пользователя Vladimir_VVV Vladimir_VVV 12 января 2008 в 11:06

Памяти 16Мб очень мало. У меня при "стандартном"(для меня) наборе модулей менее 19 Мб всегда "белый экран смерти", а так всегда от 24 до 32мб.

Аватар пользователя allexx allexx 12 января 2008 в 15:16

Тут дело наверно не в памяти.
У меня были включены: Autolocale,Taxonomy Menu,Views UI,Cart,Tangible Product
Модуль decor_import отключен. И все работало.
Потом я отключил все вышеперечисленные модули и включил decor_import. Как результат белый экран.