Перейти к содержанию
Форум поддержки пользователей VamShop

Импорт YA.MARKET


Рекомендуемые сообщения

При импорте Яндекс-Маркет импорт/экспорт файла http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&type=yml Происходит загрузка товара но без скачивания картинок, как быть?

 

Ссылка на сообщение
Поделиться на другие сайты
32 минуты назад, ZM сказал:

При импорте Яндекс-Маркет импорт/экспорт файла http://personal.cab/api/v1/?key=bgeh1vbhy3oq52xfj2bp&method=get_products&type=ymlПроисходит загрузка товара но без скачивания картинок, как быть?

 

Это импорт только данных, т.е. в базу данных название картинки прописывается, сам файл не скачивается.

Надо либо написать скрипт, который выкачает все картинки указанные из yml файла и положить их затем в поддиректории внутри /images/product_images

Либо найти готовый софт, который умеет выкачивать файлы указанные в xml файле.

  • Like 1
Ссылка на сообщение
Поделиться на другие сайты

Что нужно дописать в 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'); ?>&nbsp;<?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'); ?>&nbsp;<?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'); ?>

 

  • Like 1
Ссылка на сообщение
Поделиться на другие сайты

Кто знает откуда взять код для сохранения картинок? Может кто подскажет? Есть добрые люди? 

Ссылка на сообщение
Поделиться на другие сайты
29 минут назад, ZM сказал:

Кто знает откуда взять код для сохранения картинок? Может кто подскажет? Есть добрые люди? 

Нужно php немного знать, иначе ж ничего сделать не получится.

Ссылка на сообщение
Поделиться на другие сайты

Ну я же как то сделал вывод модели для этого Yml может и парсер получится влепить, хотя бы где похожее что-то есть может на других движках реализовано? Там есть еще api через Key и тд но я х3 как такое сварганить

Ссылка на сообщение
Поделиться на другие сайты

Есть гугл с кучей примеров.

Вполне можно найти рабочий.

Например можно просто file_get_contents использовать, подставив адрес картинки из тэга picture и сохранив этот файл на диск.

http://php.net/manual/en/function.file-get-contents.php

Ссылка на сообщение
Поделиться на другие сайты
Только что, ZM сказал:

ок буду пробывать спасибо

Вот первая попавшаяся ссылка - http://qaru.site/questions/20309/saving-image-from-php-url

Вот прям внутри foreach вставляете file_put_contents и указываете адрес картинки из picture тэга

Ссылка на сообщение
Поделиться на другие сайты

Пробую такой код, но страница долго грузится и папка с картинками пустая, подскажите где тут дело, я так понимаю что надо выцепить картинку с помощью массива 

 

// страница с картинками
$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("Копирование завершено!");

 

Ссылка на сообщение
Поделиться на другие сайты

Жаль что тут не хватает людей кто бы помогал разбираться с такими вопросами, раньше на форуме шопос было много добрых людей )

Ссылка на сообщение
Поделиться на другие сайты

Так не бывает ведь, что б полностью за Вас код писали.

Можно лишь подсказать, куда копать и как копать, но копать Вам.

Либо создайте тему в разделе Коммерческие предложения, наверняка найдутся желающие.

Ссылка на сообщение
Поделиться на другие сайты

Подсказки помогли бы мне обучится и сделать общее доброе дело, умел бы писать на php кучу плагинов бы сделал для vamshop только вот вам это может быть не итересно, ладно тему оставим пока может кто найдется кто подскажет что еще можно сделать, выбирая параметры url picture он все равно не находит. Задал вопрос на другом форуме. 

Ссылка на сообщение
Поделиться на другие сайты
13 минут назад, ZM сказал:

Подсказки помогли бы мне обучится и сделать общее доброе дело, умел бы писать на php кучу плагинов бы сделал для vamshop только вот вам это может быть не итересно, ладно тему оставим пока может кто найдется кто подскажет что еще можно сделать, выбирая параметры url picture он все равно не находит. Задал вопрос на другом форуме. 

Я Вам и так подсказал достаточно, даже дал ссылку на сайт где на 90% готовый пример.

Вы ж зачем-то какой-то свой код принесли, не подходящий под Вашу ситуацию.

 

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...