Научите пожалуйста... как это в автомате делать? Количество около 10 тыс. товаров
Научите пожалуйста... как это в автомате делать? Количество около 10 тыс. товаров
Автоматический импорт в Импере рассчитан под программные комплексы, способные генерировать файлы импорта (csv или xls) в папках, доступных из интернета. Как пример, учетный комплекс Оборот. Другие комплексы, даже если работают на локальном компьютере, также возможно использовать. Главное сделать доступным конечный файл импорта со стороны интернета.
Скажем, есть локальный компьютер, он подключен к интернету и например имеет IP-адрес 1.2.3.4. Предположим, на компьютере установлена некая учетная система, а также веб сервер (на базе AppServ, Denwer или другое), пространство которого размещено допустим в папке C:\WebServer\www.
Теперь пусть учетная система генерирует файл импорта example.csv и сохраняет его в папке C:\WebServer\www\prices. Тогда этот файл станет доступен из интернета по адресу http://1.2.3.4/prices/example.csv.
Остается создать в Импере новый вариант импорта. Заходим в админпанель на страницу импорт -> Варианты импорта. Жмем там ссылку добавить. Попадаем на страницу редактирования нового варианта импорта. Вводим произвольное название варианта, в поле Источник: вводим откуда Импере забирать файл импорта - это указанный выше адрес http://1.2.3.4/prices/example.csv, далее устанавливаем флажок Авто и рядом в выпадающем списке указываем, с какой периодичностью забирать этот файл. Еще ниже задаем мнемонический перечень колонок, из которых состоит забираемый файл.
Таким образом, Импера начнет в автоматическом режиме с заявленной периодичностью выкачивать файл импорта и заносить его строки в базу сайта. Рекомендуется также на странице редактирования варианта импорта почитать блок Справка. Вот что там написано (сразу привожу из новой версии, так как в ней кое-что добавилось по импорту, а выйдет она на днях).
Название. Обычная строка с названием данного варианта импорта. Под этим названием вариант появится в списке на странице вариантов импорта
в админпанели.
URL интерфейса, Пароль. Если необходимо, здесь задается шлюзовый адрес, который выделяется для проведения импорта данных по инициативе
стороннего сайта. То есть внешний ресурс, знающий этот выделенный URL, обращается по нему к данному сайту и передает POST-запросом набор строк,
которые он хотел бы импортировать в базу сайта. В целях безопасности предусмотрен пароль доступа к URL интерфейса. Если он задан, удаленный
импорт сможет провести только ресурс, передавший в запросе аналогичный пароль.
Источник, Авто, Пауза. В общем случае импорт производит администратор в ручном режиме: на странице вариантов импорта нажимает кнопку
старта интересующего варианта, выбирает какой файл взять с локального компьютера и начинается импорт. Система также поддерживает импорт из
удаленного источника, когда указывается URL файла, расположенного на внешнем сайте. В этом случае исключается процедура выбора локального
файла и импорт начинается сразу после нажатия кнопки старта интересующего варианта. В дополнение можно выставить флажок автоматического
запуска импорта и задать, через какое время он повторится. Тогда система периодически станет выкачивать файл из внешнего источника и
импортировать его на сайт.
Формат, Разделитель полей. Существует для указания в каком формате поступают импортируемые данные на сайт и каким символом разделяются
поля внутри одной строки данных. Подразумевается, что сайтом будет получена одна или более строк, причем в каждой из них будет одинаковое
количество полей.
Перед импортом. Дает возможность указать, что необходимо сделать с базой товаров перед началом импорта данных. Если это действие не влечет
за собой очистку базы от товаров, то можно выставить или снять флажки управления перезаписью некоторых полей товаров. Ведь в маркетинговых целях
администратор мог изменить признаки "хит продаж", "акция" и подобные у отдельных товаров, а в момент импорта изменения затрутся, если в импортируемых
данных находятся аналогичные колонки.
Поля. Здесь перечисляются через запятую мнемонические названия полей в том порядке, как они расположены в одной строке импортируемых данных.
По сути это символическое перечисление порядка колонок, ведь в каждом случае данные поступают на сайт в виде воображаемой таблицы, будь она
однострочной или многострочной.
В то время как формат мнемонического описания порядка полей - это простое перечисление через запятую, имеются нюансы в формате отдельного поля.
Во-первых, оно начинается с мнемоники (условного короткого обозначения) - какой собственно вид значений содержится в такой колонке таблицы.
Разрешается с помощью знака плюс склеивать несколько мнемоник для целей копирования значения. Это может быть важно для таблиц с недостаточным
количеством столбцов. Например запись model+metatitle означает, что значение такой колонки таблицы будет попадать в базу сайта как в название
товара, так и копироваться в мета заголовок страницы товара.
Существенный момент: за каждой мнемоникой допускается символ ~ (тильда) - это маркер непринципиальности к изменению значения в данном поле.
Смысл маркера в указании тех полей, на импортируемое содержимое которых не обращать внимание, если такой товар уже есть в базе. Для примера
представим, среди мнемонического описания полей встретилось smallimage~. Это значит, что в момент импорта поле имени файла миниатюры
уже существующего в базе товара не будет обновлено, а при отсутствии товара будет добавлен с импортируемым содержимым поля smallimage. Таким
образом маркер ~ после мнемоники можно трактовать как оставить в этом поле прежнее значение в существующих товарах.
Во-вторых, следом за мнемоникой или их склейкой опционально можно указать произвольное количество команд отклонения или безусловного принятия
обрабатываемой строки. Каждая команда заключается в квадратные скобки и содержит значение, при котором она срабатывает. Сразу за открывающей
квадратной скобкой обязательно ставится знак плюс или минус, чтобы классифицировать команду. Минус означает команду отклонения строки, плюс -
команду безусловного принятия. Например запись brand [-sony ericsson] [-siemens] [-] [+sony] обозначает импорт из таблицы всех строк, где
бренд не Sony Ericsson и не Siemens и не пустая строка, причем строки с брендом Sony импортировать безусловно. То есть команды [+...]
доминируют над командами [-...], позволяя импортировать строку, даже если команды в других частях мнемонического описания порядка полей
сигнализировали отклонить ее.
Еще важно, что только в командах [-...] может использоваться специальный символ звездочка, означающий "все остальные". Например запись
brand [-*] [+sony] [+] обозначает импорт всех строк лишь с брендом Sony или вообще неуказанным, остальные строки будут отклонены.
В-третьих, следом можно опционально указать произвольное количество вариантов замен значения - пары что ищем на что заменяем. Части пар
разделяются двоеточием, сами пары заключаются в квадратные скобки. Специальный символ звездочка в левой части пары означает "все оcтальные".
Например запись brand [сони:Sony] [:Siemens] [неизвестный:] [*:Sony Ericsson] обозначает, что в такой колонке таблицы все бренды Сони заменить
на Sony, не указанные бренды заменить на Siemens, бренды Неизвестный заменить пустой строкой, все остальные заменить на Sony Ericsson.
Таким образом формат отдельного поля в мнемоническом описании порядка полей: МнемоникаИлиИхСклейка КомандыОтклоненияПринятия ВариантыЗамен.
Возможные колонки. Эта таблица содержит список всех распознаваемых системой мнемоник. Для удобства каждая мнемоника сделана кликабельной,
чтобы администратор вместо ручного набора мог просто щелкнуть по мнемонике, тогда она добавится в конец мнемонического описания порядка
полей при условии, что ее там еще нет.
История. Существует в информационных целях и заполняется исключительно системой по мере использования данного варианта импорта. Здесь в хронологическом порядке можно узнать, когда запускался вариант импорта, в каком режиме, с каким результатом.
Для локального компьютера в строке http://1.2.3.4/prices/example.csv можно указать localhost вместо 1.2.3.4 .
Получится: http://localhost/prices/example.csv
Сейчас у меня при импорте выдает ошибку :
Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in Z:\home\localhost\www\Impera-thermolux\objects\Admin.Imports.php on line 1788
При этом ничего не импортируется.
Файл csv, но реально он в формате xls (т.е обычные колонки Экселя). Это Симпла делает такой экспорт. Метку "xls" я указываю.
Что делать?
Кодировка бузит. У меня то же было.Победил через excel методом тыка. Открыл scv, пересохранил в cp1251. Фиг. Сохранил в utf8. Заработало.
Оказывается Эксель (2007) показывает файлы csv визуально как xls. Это сбивает с толку.
Но все Импера равно выдает ошибку: Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in Z:\home\localhost\www\Impera-thermolux\objects\Admin.Imports.php on line 1788
Результат импорта:
Импорт данных завершен успешно.
Результаты по товарам:
Было добавлено товаров: 227
Обновлено товаров: 2
Результаты по видам товара:
Было добавлено видов товара: 227
Обновлено видов товара: 2
Результаты по категориям:
Было добавлено категорий: 1
---------------
Импортировалось без картинок. В файле export.csv с Симплы - адреса картинок указываются без URL.
Если сделать пересохранить в UFT-8 импорт проходит без ошибки, теперь вопрос о полях и картинках - картинки без url - пробовал так
category, category2, pcode, name, annotation, description, price, brand, largeimage, но не очень то получилось
09.05.2012 01:51:29 - РЕЗУЛЬТАТ (все заняло 1 секунд)
КАТЕГОРИИ
добавлено = 28
БРЕНДЫ
добавлено = 6
как правильно указать разделитель ?
Здесь проблема не в указании разделителя. Нужно сделать правку в списке полей - вместо name напишите model:
category, category2, pcode, model, annotation, description, price, brand, largeimage
Об этом глюке - неопознаваемость мнемоники name, которая синонимична мнемонике model - уже сообщали, в следующей версии будет поправлено, а пока используйте мнемонику model.
Что касается предшествующего поста с ошибкой "Detected an incomplete multibyte character in input string ..." (обнаружен дефектный символ во входной строке ...) для кодировки Windows-1251 - нужно смотреть исходный CSV, чтобы узнать, какой именно недопустимый символ попал в CSV при экспорте товаров из Симплы. Так как времени у людей обычно нет с этим разбираться, да и с помощью Excel легко могут сохранить CSV как в кодировке Windows-1251, так и в UTF-8, то проблему просто решают работой с CSV в кодировке UTF-8.
По поводу картинок. В Simpla 1.x большие и малые картинки товаров лежали в папке files/products. Различались окончанием имени файла. Например:
Nokia-E7-blue_large.jpg - основное фото Nokia-E7-blue_small.jpg - миниатюра основного фото Nokia-E7-blue_0.jpg - дополнительное фото 1 Nokia-E7-blue_1.jpg - дополнительное фото 2 и так далее
То есть через подчеркивание в конце имени указывается размер фото, а дополнительные не имеют миниатюр. Кроме этого способа именования файлов, Импера еще поддерживает следующий:
Nokia-E7-blue.jpg - основное фото Nokia-E7-blue.thumb.jpg - миниатюра основного фото Nokia-E7-blue_0.jpg - дополнительное фото 1 Nokia-E7-blue_0.thumb.jpg - миниатюра дополнительного фото 1 Nokia-E7-blue_1.jpg - дополнительное фото 2 Nokia-E7-blue_1.thumb.jpg - миниатюра дополнительного фото 2 и так далее
То есть любое фото может иметь миниатюру, она обозначается приставкой .thumb в конце имени файла. Два эти способа предполагают единый размер фотоматериалов по всему дизайну сайта. Соответственно фотографии масштабируются в нужный размер один раз в момент загрузки через админпанель. Размеры больших фото и миниатюр устанавливаются на странице настроек в админпанели. К примеру, для товаров это находится на странице товары → Товары и далее нажать ссылку настройки.
В Simpla 2.x попробовали другой подход - отказ от единого размера и миниатюр, а размерные модификации генерировать "на лету" отрисовки шаблона (дизайна сайта). В этом есть плюс: требуемый размер фото задается прямо в шаблоне с помощью smarty-модификатора |resize:Ширина:Высота. Оригиналы картинок хранятся в папке files/originals, масштабированные "на лету" помещаются в кеш-папку files/products с таким именованием файлов:
Nokia-E7-blue.800x600.jpg Nokia-E7-blue.320x240.jpg Nokia-E7-blue.211x100.jpg Nokia-E7-blue_0.600x400.jpg Nokia-E7-blue_0.300x200.jpg Nokia-E7-blue_0.200x160.jpg и так далее
В том есть и минусы: кривая реализация данной функции нагрузит сайт, быстрая захламляемость кеш-папки. Если бы сайт каждый день менял дизайн, это оправдает наличие в кеш-папке множество разно масштабных дубликатов. На практике это редкость. Поэтому Импера вплоть до версии 120406 не спешила поддерживать такую функцию динамического масштабирования картинок в Симпле.
Простое решение трудности состоит в переменовании папки files/originals на папку files/products и последующем удалении оттуда файла .htaccess. То есть дать Импере работать с оригинальными фото. Если же принципиально стоит вопрос использовать шаблон, изначально сверстанный под Simpla 2.x, то в него придется внести правки касаемо замены модификатора resize его стилевым родственником. Например в шаблоне есть такой html-код для показа фотоминиатюры товара:
<img src="{$product->image->filename|resize:200:200}">
Заменим его следующим кодом: приказываем работать с файлом миниатюры, а стилем сообщаем браузеру предельные размеры масштабирования.
<img src="{$product->small_image}" style="max-width: 200px; max-height: 200px;">
Когда жы мы точно знаем, что Импера устанавливалась поверх Simpla 2.x и в папке оригинальных фото просто может не быть фотоминиатюр, то идеальнейшая замена состоит в упреждающем использовании модификатора default. То есть работать с файлом миниатюры, но если не задан - с файлом основного (большого) фото.
<img src="{$product->small_image|default:$product->large_image}" style="max-width: 200px;
max-height: 200px;">
Получилась полная каша - category, category2, pcode, model, annotation, description, price, brand, largeimage
Результаты по товарам:
Было добавлено товаров: 49
Неизменившихся товаров: 60
Результаты по видам товара:
Было добавлено видов товара: 49
Неизменившихся видов товара: 60
Результаты по брендам:
Было добавлено брендов: 12
Результаты по категориям:
Было добавлено категорий: 1049
Помогите правильно составить список полей
Если у Вас есть бекап сайта до неудачного импорта, восстановите сайт из него. Это лучший вариант. Если бекапа нет, то попробуйте в админпанели на странице категорий нажать ссылку почистить. Так одним махом удалите из дерева категорий пустые ветви (напротив них стоят красные нули). Остальные кривые ветви - с одним-двумя товарами - придется почистить вручную.
Теперь о импорте. К сожалению, Симпла - движок хоть и простой, но довольно-таки слабый для работы. Результаты его деятельности почти всегда невозможно использовать без "молотка и зубила". Объясню на примере. Рассмотрим скриншот Вашего csv.
Импорт происходит построчно. В каждой строке должна быть информация, как минимум, к какой категории принадлежит данный товар. Сделано так затем, чтобы мы могли отрезать любой блок строк файла, и он продолжал бы безошибочно импортироваться.
Импортируя например строку 5 из Вашего csv, к какой категории и подкатегории движок должен присвоить этот товар? Здесь и начинается путаница, ведь ячейка 1 (категория) и ячейка 2 (подкатегория) в этой строке пустые.
Теперь скриншот правильного csv. Обратите внимание, как в каждой строке заполнены ячейки.
То есть в Вашем csv значения непустых ячеек 1 и 2 должны были быть продублированы вниз на пустые ячейки.
Рекомендую скачать и посмотреть пример XLS-прайса, готового для импорта в Имперу. Нужно открыть его в Excel, удалить первую строчку, сохранить в формате CSV с разделителем полей ; (на всякий случай в архив помещен под именем impera-import-example.xls исходный xls, что показан на картинке, и уже готовый csv-файл с отрезанной первой строкой, его имя соответственно impera-import-example.csv). Останется в админпанели создать вариант импорта и в его список полей прописать мнемониками порядок колонок в этом csv-файле:
productid, pcode, category, category2, brand, model, price, oldprice, quantity, guarantee, annotation, url, metatitle, metakeyword, enabled, smallimage, largeimage, images, hit
Если откроете файл impera-import-example.xls из примера, то увидите, что в первой строке те же самые мнемоники выделены синим цветом.
venji, у меня такая каша с категориями получалась , когда я указывал неправильно разделитель полей (надо ; ) и указать, что файл csv , если это csv.
Была такая же фигня.