IVAN.Z 2 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 При импорте Яндекс-Маркет импорт/экспорт файла http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&type=yml Происходит загрузка товара но без скачивания картинок, как быть? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 32 минуты назад, ZM сказал: При импорте Яндекс-Маркет импорт/экспорт файла http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&type=ymlПроисходит загрузка товара но без скачивания картинок, как быть? Это импорт только данных, т.е. в базу данных название картинки прописывается, сам файл не скачивается. Надо либо написать скрипт, который выкачает все картинки указанные из yml файла и положить их затем в поддиректории внутри /images/product_images Либо найти готовый софт, который умеет выкачивать файлы указанные в xml файле. 1 Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 21 ноября, 2018 Автор Жалоба Share Опубликовано 21 ноября, 2018 Что нужно дописать в yml_import.php чтобы вытащить строчку из yml (model) чтобы артикул добавить хотя бы Сделал сам, спасибо кому надо.. <?php /* -------------------------------------------------------------- $Id: yml_import.php,v 1.1 2010-08-06 17:36:57 VaM $ VaM Shop - open source ecommerce solution http://vamshop.ru http://vamshop.com Copyright (c) 2010 VaMSoft Ltd. -------------------------------------------------------------- Released under the GNU General Public License --------------------------------------------------------------*/ function unhtmlentities($string) { $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); return strtr ($string, $trans_tbl); } require('includes/application_top.php'); if ($_POST['action']=='import') { if (is_uploaded_file($_FILES['xml_file']['tmp_name'])) { $xml = simplexml_load_file($_FILES['xml_file']['tmp_name']); $count=0; $count_upd=0; $count_add=0; $count_cat_upd=0; $count_cat_add=0; // Categories import foreach ($xml->shop->categories->category as $category) { $categories_id = $category['id']; $parent_id = ((!isset($category['parentId'])) ? 0 : $category['parentId']); $categories_name = unhtmlentities($category); $categories_description = ''; $categories_query = vam_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . $categories_id . "' and language_id = '".$_SESSION['languages_id']."' limit 1"); if (vam_db_num_rows($categories_query)) { $row=vam_db_fetch_array($categories_query); if ($row['categories_name']!=$categories_name) { vam_db_perform(TABLE_CATEGORIES, array('last_modified' => 'now()', 'parent_id' => $parent_id, 'categories_status' => 1, 'group_permission_0' => 1, 'group_permission_1' => 1, 'group_permission_2' => 1, 'group_permission_3' => 1, 'date_added' => 'now()'), 'update', 'categories_id=\''.$categories_id.'\''); vam_db_perform(TABLE_CATEGORIES_DESCRIPTION, array('categories_name' => $categories_name, 'categories_description' => $categories_description), 'update', 'categories_id=\''.$categories_id.'\' and language_id=\''.$_SESSION['languages_id'].'\''); $count_cat_upd++; } } else { vam_db_perform(TABLE_CATEGORIES, array('categories_id' => $categories_id, 'last_modified' => 'now()', 'parent_id' => $parent_id, 'categories_status' => 1, 'group_permission_0' => 1, 'group_permission_1' => 1, 'group_permission_2' => 1, 'group_permission_3' => 1, 'date_added' => 'now()')); vam_db_perform(TABLE_CATEGORIES_DESCRIPTION, array('categories_id' => $categories_id, 'categories_name' => $categories_name, 'categories_description' => $categories_description)); $count_cat_add++; } } // Products import foreach ($xml->shop->offers->offer as $product) { $products_id = $product['id']; $products_quantity = (($product['available']) ? 0 : 10000); $products_price = $product->price; $products_model = $product->model; $categoryId = $product->categoryId; $products_image = substr(strrchr($product->picture, "/"), 1); $products_name = unhtmlentities($product->name); $products_model = unhtmlentities($product->model); $products_description = unhtmlentities($product->description); $products_status = 1; $products_query = vam_db_query("select products_id, products_price from " . TABLE_PRODUCTS . " where products_id = '" . $products_id . "' limit 1"); if (vam_db_num_rows($products_query)) { $row=vam_db_fetch_array($products_query); if ($row['products_price']!=$products_price) { vam_db_perform(TABLE_PRODUCTS, array('products_last_modified' => 'now()', 'products_price' => $products_price, 'products_model' => $products_model, 'products_image' => $products_image, 'group_permission_0' => 1, 'group_permission_1' => 1, 'group_permission_2' => 1, 'group_permission_3' => 1, 'products_startpage' => 1, 'products_status' => $products_status, 'products_quantity' => $products_quantity, 'products_date_available' => 'now()'), 'update', 'products_id=\''.$products_id.'\''); vam_db_perform(TABLE_PRODUCTS_DESCRIPTION, array('products_name' => $products_name, 'products_description' => $products_description), 'update', 'products_id=\''.$products_id.'\' and language_id=\''.$_SESSION['languages_id'].'\''); $count_upd++; } } else { vam_db_perform(TABLE_PRODUCTS, array('products_id' => $products_id, 'products_last_modified' => 'now()', 'products_price' => $products_price, 'products_model' => $products_model, 'products_image' => $products_image, 'group_permission_0' => 1, 'group_permission_1' => 1, 'group_permission_2' => 1, 'group_permission_3' => 1, 'products_startpage' => 1, 'products_status' => $products_status, 'products_quantity' => $products_quantity, 'products_date_available' => 'now()')); vam_db_perform(TABLE_PRODUCTS_DESCRIPTION, array('products_id' => $products_id, 'products_name' => $products_name, 'products_description' => $products_description, 'language_id' => $_SESSION['languages_id'])); vam_db_perform(TABLE_PRODUCTS_TO_CATEGORIES, array('products_id' => $products_id, 'categories_id' => $categoryId)); $count_add++; } $count++; } $messageStack->add_session(TEXT_YML_UPDATED.$count_upd, 'success'); $messageStack->add_session(TEXT_YML_CHANGED.($count-$count_upd), 'success'); $messageStack->add_session(TEXT_YML_ADDED.$count_add, 'success'); $messageStack->add_session(TEXT_YML_CAT_ADDED.$count_cat_add, 'success'); $messageStack->add_session(TEXT_YML_CAT_UPDATED.$count_cat_upd, 'success'); } else { $messageStack->add_session(TEXT_YML_ERROR, 'error'); } vam_redirect(vam_href_link(FILENAME_YML_IMPORT)); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION['language_charset']; ?>"> <title><?php echo TITLE; ?></title> <link rel="stylesheet" type="text/css" href="includes/stylesheet.css"> <script type="text/javascript" src="includes/general.js"></script> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF"> <!-- header //--> <?php require(DIR_WS_INCLUDES . 'header.php'); ?> <!-- header_eof //--> <!-- body //--> <table border="0" width="100%" cellspacing="2" cellpadding="2"> <tr> <?php if (ADMIN_DROP_DOWN_NAVIGATION == 'false') { ?> <td width="<?php echo BOX_WIDTH; ?>" align="left" valign="top"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?> <!-- left_navigation_eof //--> </td> <?php } ?> <!-- body_text //--> <td class="boxCenter" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"> <h1 class="contentBoxHeading"><?php echo HEADING_TITLE; ?></h1> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="main"> <?php echo vam_draw_form('xml_import', FILENAME_YML_IMPORT, '', 'post', 'enctype="multipart/form-data"') ."\n". vam_draw_file_field('xml_file') ."\n"; ?> <input type="hidden" name="action" value="import"> <br> <?php echo TEXT_YML_MAX_SIZE; ?> <b><?php echo ini_get('upload_max_filesize'); ?></b><br /> <span class="button"><button type="submit" value="<?php echo TEXT_YML_IMPORT; ?>"><?php echo vam_image(DIR_WS_IMAGES . 'icons/buttons/import.png', '', '12', '12'); ?> <?php echo TEXT_YML_IMPORT; ?></button> </form> </td> <td class="main" width="50%" valign="bottom"> <a class="button" href="<?php echo HTTP_SERVER . DIR_WS_CATALOG.'market.php'; ?>" target="_blank"><span><?php echo vam_image(DIR_WS_IMAGES . 'icons/buttons/export.png', '', '12', '12'); ?> <?php echo TEXT_YML_EXPORT; ?></span></a> </td> </tr> </table></td> <!-- body_text_eof //--> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <!-- footer_eof //--> <br> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> 1 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 Хорошо, что разобрались. Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 21 ноября, 2018 Автор Жалоба Share Опубликовано 21 ноября, 2018 Кто знает откуда взять код для сохранения картинок? Может кто подскажет? Есть добрые люди? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 29 минут назад, ZM сказал: Кто знает откуда взять код для сохранения картинок? Может кто подскажет? Есть добрые люди? Нужно php немного знать, иначе ж ничего сделать не получится. Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 21 ноября, 2018 Автор Жалоба Share Опубликовано 21 ноября, 2018 Ну я же как то сделал вывод модели для этого Yml может и парсер получится влепить, хотя бы где похожее что-то есть может на других движках реализовано? Там есть еще api через Key и тд но я х3 как такое сварганить Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 Есть гугл с кучей примеров. Вполне можно найти рабочий. Например можно просто file_get_contents использовать, подставив адрес картинки из тэга picture и сохранив этот файл на диск. http://php.net/manual/en/function.file-get-contents.php Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 21 ноября, 2018 Автор Жалоба Share Опубликовано 21 ноября, 2018 ок буду пробывать спасибо Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 Только что, ZM сказал: ок буду пробывать спасибо Вот первая попавшаяся ссылка - http://qaru.site/questions/20309/saving-image-from-php-url Вот прям внутри foreach вставляете file_put_contents и указываете адрес картинки из picture тэга Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 21 ноября, 2018 Автор Жалоба Share Опубликовано 21 ноября, 2018 Пробую такой код, но страница долго грузится и папка с картинками пустая, подскажите где тут дело, я так понимаю что надо выцепить картинку с помощью массива // страница с картинками $text = file_get_contents("http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&rrp=on&type=yml"); // выцеливаем путь к картинкам и помещаем их в массив preg_match_all("'<img\s+src=\"(\S*.(png|jpg))\"'si", $text, $result); echo"Найдено картинок на странице = ".count($result[1]); //print_r($result[1]); // найденные картинки echo("<br>"); echo("<br>"); echo("Urls - картинок..."); // создаём папку если таковой нет if (!file_exists("imagess")) { mkdir("imagess", 0700); // создаём папку } $move_dir = "imagess/"; // Директория созданной папки for($i = 0; $i <=(count($result[1])-1); $i++) { // формируем урл на картинку $url = "http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&rrp=on&type=yml".$result[1][$i]; echo("<br>"); echo($url); echo("<br>"); $filename = basename($url); // Имя картинки file_put_contents($move_dir.'/'.$filename, file_get_contents($url)); } echo("<br>"); echo("Копирование завершено!"); Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 21 ноября, 2018 Жалоба Share Опубликовано 21 ноября, 2018 Это неправильный код. У Вас в yml файле картинки в тэге picture Причём тут img src ... Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 22 ноября, 2018 Автор Жалоба Share Опубликовано 22 ноября, 2018 Жаль что тут не хватает людей кто бы помогал разбираться с такими вопросами, раньше на форуме шопос было много добрых людей ) Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 22 ноября, 2018 Жалоба Share Опубликовано 22 ноября, 2018 Так не бывает ведь, что б полностью за Вас код писали. Можно лишь подсказать, куда копать и как копать, но копать Вам. Либо создайте тему в разделе Коммерческие предложения, наверняка найдутся желающие. Ссылка на сообщение Поделиться на другие сайты
IVAN.Z 2 Опубликовано 22 ноября, 2018 Автор Жалоба Share Опубликовано 22 ноября, 2018 Подсказки помогли бы мне обучится и сделать общее доброе дело, умел бы писать на php кучу плагинов бы сделал для vamshop только вот вам это может быть не итересно, ладно тему оставим пока может кто найдется кто подскажет что еще можно сделать, выбирая параметры url picture он все равно не находит. Задал вопрос на другом форуме. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 22 ноября, 2018 Жалоба Share Опубликовано 22 ноября, 2018 13 минут назад, ZM сказал: Подсказки помогли бы мне обучится и сделать общее доброе дело, умел бы писать на php кучу плагинов бы сделал для vamshop только вот вам это может быть не итересно, ладно тему оставим пока может кто найдется кто подскажет что еще можно сделать, выбирая параметры url picture он все равно не находит. Задал вопрос на другом форуме. Я Вам и так подсказал достаточно, даже дал ссылку на сайт где на 90% готовый пример. Вы ж зачем-то какой-то свой код принесли, не подходящий под Вашу ситуацию. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения