Здравствуйте, уважаемы любители Prestashop.
Сразу хочу отметить, что я не программист, все что написано ниже не претендует на идеальность, но может пригодиться таким же как и я новичкам.
Итак, нам потребуется три программы: NotePad+++, OpenOffice (calc), UMI CMS бесплатная в локальном варианте (скачивается вместе с денвером), в которой есть прекрасный модуль обмена данными.
Инструкция.
Скачиваем UMI CMS коммерческую версию, бесплатная в локальном варианте (скачивается вместе с денвером)
Импорт
Производим выгрузку товара из 1С в папку. Затем из папки 1cbitrix файлы import.xml и offers.xml помещаем в папку files-filesToImport, а папку import_files помещаем в папку images-cms-data. Заходим в модули-> модуль Обмен данными. Импорт: настроить новый импорт, сразу в редактирование типа данных(добавить поле, название – изображение, тип – изображение. Сохранить и выйти) Далее называние нового импорта как хотим, формат данных-Commerce ML 2.0, раздел сайта - каталог товаров, файл данных сначала import.xml (потом offers.xml), в изображении выбираем любую картинку из папки import_files.
Производим импорт сначала в файле данных выставив import.xml(можно зайти в модуль каталог и посмотреть что выгрузилось, цен на товар еще не будет), затем повторный импорт с offers.xml.
Экспорт в CSV
Перед экспортом обязательно зайти в модуль каталог и сделать все категории и подкатегории активными(нажать круглую кнопку включить страницу)
Настроить новый экспорт. Название – любое, формат экспорта – данные в формате CSV, разделы сайта которые будут экспортированы: находим наш каталог, окрываем его список и кликом мышки добавляем по одной все категории. Добавить и выйти. Выполнить экспорт.
Полученный файл CSV открываем Notepad+++ и редактируем в Кодировки-> Преобразовать в UTF-8 без BOM->сохранить
Далее открываем файл в Open Office (ОО)
Для импорта на сайт нам потребуется файл категорий и файл товары и чтобы отделить категории от товаров используем макрос ОО
[hide]
Код:
Sub applyMyCustomFilter
REM Filter one column of the active sheet's used range by 1 regular expression
'calls: getUsedRange
REM Which column index of the used range? (first column has index 0):
Const colID = 0 '< column #6 of the used range
REM if the used range starts in column A (column #0), colID 6 refers to column G
Const sRegex = "^(66)|(67)|(68)|(69)|(70)|(71)|(72)|(73)|(74)|(75)|(76)|(77)|(78)|(79)|(80)|(81)|(82)|(83)|(84)|(85)|(86)|(87)|(88)|(89)|(90)|(91)|(92)|(93)|(94)|(95)|(96)|(97)|(98)|(99)|(100)|(101)|(102)|(103)|(104)|(105)|(106)|(107)|(108)|(109)|(110)|(111)|(112)|(113)|(114)|(115)|(116)|(117)|(118)|(119)|(120)|(121)|(122)|(123)|(124)|(125)|(126)|(127)|(128)|(129)|(130)|(131)|(132)|(133)|(134)|(135)|(136)|(137)|(138)|(139)|(140)|(141)|(142)|(143)|(144)|(145)|(146)|(147)|(148)|(149)|(150)|(151)|(152)|(153)|(154)|(155)|(156)|(157)|(158)|(159)|(160)|(161)|(162)|(163)|(164)|(165)|(166)|(167)|(168)|(169)|(170)|(171)|(172)|(173)|(174)|(175)|(176)|(177)|(178)|(179)|(180)|(160)|(161)|(162)|(163)|(164)|(165)|(166)|(167)|(168)|(169)|(170)|(171)|(172)|(173)|(174)|(175)|(176)|(177)|(178)|(179)|(180)|(181)|(182)|(183)|(184)|(185)|(186)|(187)|(188)|(189)|(190)|(191)|(192)|(193)|(194)|(195)|(196)|(197)|(198)|(199)|(200)|(201)|(187)|(188)|(189)|(190)|(191)|(192)|(193)|(194)|(195)|(196)|(197)|(198)|(199)|(200)|(201)|(202)|(203)|(204)|(205)|(206)|(207)|(208)|(209)|(210)|(211)|(212)|(213)$" '< this is one regex including the ORs as |
cEQ = com.sun.star.sheet.FilterOperator.EQUAL' <some_column> EQUALs <some_regex>
REM one text-criterion
Dim fld as new com.sun.star.sheet.TableFilterField
fld.Field = colID
fld.Operator = cEQ
fld.StringValue = sRegex
REM now for the used range to be filtered:
sh = ThisComponent.CurrentController.getActiveSheet()
rg = getUsedRange(sh)
fd = rg.createFilterDescriptor(True)
REM All the additional filter options. Fill out like a form (True or False)
REM analogue to those in the standard and advanced filter dialogues below [More Options]:
REM Do we have column headers in the first row?
fd.ContainsHeader = True
REM Do we use pattern matching by means of regular expressions?
fd.UseRegularExpressions = True
REM not relevant with text values consisting of digits:
fd.IsCaseSensitive = False
REM means: hide duplicates having the same values in the entire row of the filtered range:
fd.SkipDuplicates = False
REM if true, an OutputPosition as csstable.CellAddress is required
fd.CopyOutputData = False
REM This is only implemented for rows at the moment. Filtering columns is not possible:
REM fd.Orientation = com.sun.star.table.TableOrientation.ROWS
REM Only relevant with CopyOutputData when refreshing db-ranges:
REM False is useful for one-time snapshots copied to OutputPosition
REM fd.SaveOutputPosition = False
REM we use only one of up to 8 criteria:
fd.setFilterFields(Array(fld))
rg.filter(fd)
End Sub
REM one of my frequently used helper functions
Function getUsedRange(oSheet)
Dim oRg
oRg = oSheet.createCursor()
oRg.gotoStartOfUsedArea(False)
oRg.gotoEndOfUsedArea(True)
getUsedRange = oRg
End Function
[/hide]
Инструкция по использованию макроса.
1.Открыть макрос в редакторе
2.в Const colID = 0 (0-первый столбец, 1-второй и т.д.)нам требуется первый столбец
3.В скобках выделены цыфры-это строки наших категорий и подкатегорий(первый раз придется поработать ручками и поправить под свои нужды)
4.Выполнить макрос (останутся только наши категории и подкатегории товаров)
5.Сохраняем файл csv с названием, например, Categorii.csv
6.выделяем все и нажав правой кнопкой мыши на строках, удалить стоки.
7.Снова выделяем уже пустое поле
8.правой кнопкой мыши на сторках-показать(появляется наш список товаров без категорий и подкатегорий)
9.Сохраняем файл ,например, tovari.csv
Есть один нюанс, если товаров много, как у нас более 1000, то экспортировать файлы CSV из денвера можно по категориям и тогда у нас будет несколько файлов категорий что облегчит задачу по загрузке.
Дальше не буду рассказывать как импортировать товар в ИМ, об этом много написано.
PS забыл добавить перед импортом csv не забудьте залить папку с картинками на свой сайт по ftp и в файлах изменить ссылку на картинки, указав полный путь к ним, в ОО это делается просто и быстро ctl+f найти и заменить
Извините за косноязычность, писать статьи не мой удел
Сообщение отредактировано Dulco 05-07-2012 17:38 ...