- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
//первый сайт - интернет магазин
//отрывок из функции редактирования, функции добавления, функции удаления товаров, в таблицу "export_catalogue" каждая строка - это "поле товара" и "новое значение поля"
//что-то на подобие лога изменений. Конечно копипаст всех полей товаров.
$this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_rus', '$name_rus'");
$this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_ger', '$name_ger'");
//файл xml_create_catalogue.php, который запускается по крону каждые 5 минут, создаёт xml файлы. Каждый файл содержит в себе изменение одного поля товара
$result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`create` = '0' ORDER BY `id` ASC");
for ($i=0; $i<count($result_export_array); $i++){
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
...
// название fields - не мой коммент
$fields = $doc->createElement('fields');
$fields = $root->appendChild($fields);
// данные element - не мой коммент
$data_fields = $doc->createTextNode($result_export_array[$i]['fields']);
$data_fields = $fields->appendChild($data_fields);
...
//если картинка или файл товара, то файл кодируется в бэйс64 и записывается в ячейку xml
$value_default = $result_export_array[$i]['value'].'photo_data'.base64_encode($contents);
$value_convert = mb_convert_encoding($value_default, "UTF-8", "Windows-1251");
$data_value = $doc->createTextNode($value_convert);
...
//почетка, что файл экспорта создан
$global->update($table = "`export_catalogue`", $fields = "`create` = '1'", $where = "`id` = '".$result_export_array[$i]['id']."'");
}
//файл xml_upload_catalogue.php, крон - 5 минут, копирует созданные xml файлы на фтп второго сайта
$result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`upload` = '0' ORDER BY `id` ASC");
for ($i=0; $i<count($result_export_array); $i++){
... //тут идёт копирование файлов по фтп
//пометка, что файл загружен на второй сайт
$global->update($table = "`export_catalogue`", $fields = "`upload` = '1'", $where = "`id` = '$file_id'");
}
//второй сайт - интернет магазин
//xml_import_catalogue.php по крону, проверяется наличие xml файлов и поля импортируются в каталог
//цикл по списку файлов
foreach ($file_list as $key => $file_name) {
//в таблицу import_catalogue записывается, какие файлы были импортированны
$next_file_array = $global->select_only($fields = "*", $table = "`import_catalogue`", $where = "`id` != '0' ORDER BY `id` DESC LIMIT 1");
//причем имя файла(числовое) должно быть обязательно на 1 больше последнего записанного в таблице
$next_file = intval($next_file_array['id'] + 1).'.xml';
...
//апдейт поля товара
$value_convert = mb_convert_encoding($value_xml, "Windows-1251", "UTF-8");
$global->update($table = "`$table_xml`", $fields = "`$fields_xml` = '".$global->sql_prepare($value_convert)."'", $where = "`id` = '$element_xml'");
...
//помечаем, что файл импортирован и удаляем
$global->insert($table = "`import_catalogue`", $fields = "`joined`", $values="'$joined'");
}
Самый идеальный экспорт товаров из одного сайта в другой. Приведены отрывки кода из двух сайтов на каждом этапе экспорта