Обмен данными CSV

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 2.9

Для того, чтобы правильно организовать импорт и экспорт посредством модуля Обмен данными используя формат CSV воспользуемся следующими инструкциями.

Создадим необходимый нам Шаблон Данных. (Модули -> Шаблоны Данных -> Раздел сайта -> Объект каталога ->Добавить тип данных) В нашем примере это будет "Обувь", назначение типа уже стоит "Объекты каталога". Создаем в нем Группу, если требуется (Например "Свойства"), и в группе создаем необходимые поля (Например "размер", "высота"). Выставляем им нужные типы.

Заходим в модуль каталог. Выбираем нужный раздел, нажимаем добавить объект. Выбираем ему созданный тип данных. Заполняем основные параметры (Название, поле H1, Псевдостатический адрес, META, теги, Title), нажимаем добавить. Заполняем все остальные интересующие нас поля. Сохраняем.

Заходим в модуль Обмен данными. Вкладка экспорт -> Настроить новый экспорт. Даем название сценарию экспорта, выбираем формат CSV и объект каталога который недавно создали. Нажимаем добавить и выйти. Выполняем экспорт. Полученный файл нельзя переименовывать. Внутри файла мы видим такую таблицу

id name type-id is-active template-id parent-id h1 price publish_status vysota razmer
id Наименование Идентификатор типа Активность Идентификатор шаблона id родительской страницы Поле H1 Цена Статус публикации Высота Размер
native native native native native native string price relation int int
4912 Валенок 131 1 1 36 Валенок 110 Опубликован 30 42
52 Обувь 71 1 1 36 Обувь

Теперь можно разобрать как обновить или добавить новые элементы.

ID - уникальный идентификатор объекта, его оставляем без изменений.
name - название, можно изменить на любое другое значение.
type-id это ID типа данных данных, в нашем случае это были Валенки. Если изменим тип данных, то все последующие поля необходимо будет изменить так же как и у другого типа. Если тип является разделом каталога, то новых полей не потребуется.
is-active - это флаг о активности страницы. Если поставить значение 0, то этой страницы не будет видно на сайте.
template-id - это идентификатор шаблона который будет использоваться для отображения нужной вам страницы.
parent-id - идентификатор родительского элемента. Т.е. в каком разделе находится страница.
h1 - это заголовок страницы.
price - цена объекта.
publish_status - статус публикации.
vysota - поле которое мы добавили в ручную.
razmer - поле которое мы добавили в ручную.


Для того чтобы изменить одну или несколько характеристик у объекта каталога, необходимо поменять нужные нам поля на новое значение. При этом есть некоторые особенности.
Нельзя ставить одинаковый ID и Parent ID, это приведет к тому, что объект станет сам себе родителем и не будет отображаться в структуре. Т.е. просто будет занимать место в Базе Данных не принося никакой пользы. Нельзя менять ID, т.к. если вы измените идентификатор, система определит объект как новый и вместо обновления добавит новый объект, оставив старый как он и был.
Если вы меняете ParentID, то раздел с этим ID должен присутствовать в этом csv файле. Если ParentID вообще не указывать, то файл будет помещен в раздел который будет указан в сценарии импорта. Если в сценарии раздел не указан, то объект будет помещен в каталог минуя все разделы и подразделы. Вносить изменения в поля можно исключительно того типа который объявлен. Например в поле Integer (int) нельзя записывать дробные числа, такие как 3.14.

Итак, на примере Валенка присутствующего в экспорте, составим три таблицы как обновить,как переместить и как создать объект. Указанный parentId (36) это id каталога.

Обновление объекта будет выглядеть примерно так:

id name type-id is-active template-id parent-id h1 price publish_status vysota razmer
id Наименование Идентификатор типа Активность Идентификатор шаблона id родительской страницы Поле H1 Цена Статус публикации Высота Размер
native native native native native native string price relation int int
4912 Новые валенки 131 1 1 36 Валенки 250 Опубликован 24 43

Для перемещения объекта необходимо изменить parentId, обратите внимание что ParentID который вы указываете должен присутствовать как id раздела каталога.

id name type-id is-active template-id parent-id h1 price publish_status vysota razmer
id Наименование Идентификатор типа Активность Идентификатор шаблона id родительской страницы Поле H1 Цена Статус публикации Высота Размер
native native native native native native string price relation int int
4912 Валенок 131 1 1 52 Валенок 110 Опубликован 30 42
52 Обувь 71 1 1 36 Обувь

При создании объекта или раздела каталога измените ID на любой другой. Он не должен совпадать с другими ID и ParentID учавствующими в этом файле.

id name type-id is-active template-id parent-id h1 price publish_status vysota razmer
id Наименование Идентификатор типа Активность Идентификатор шаблона id родительской страницы Поле H1 Цена Статус публикации Высота Размер
native native native native native native string price relation int int
555 Валенок 131 1 1 36 Валенок 110 Опубликован 30 42