Как импортировать товары с несколькими описаниями в magento - PullRequest
3 голосов
/ 09 ноября 2011

Я импортирую продукты из сторонней базы данных на мой magento сайт. Я нашел отличный онлайн-учебник для этого на PHP.

Однако в руководстве не описывается, как назначать несколько описаний одному продукту на основе магазина.

В моем примере у меня есть продукт с описанием на английском и французском языках. Один для моего французского магазина и один для английского, как я могу импортировать оба в magento.

Мне также нужно сделать это для заголовка, URL-адреса и назначить разные категории для магазина.

Вот код, приведенный в руководстве.

<?php
require_once('/path/to/magento/app/Mage.php');
umask(0);

// Set an Admin Session
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
Mage::getSingleton('core/session', array('name'=>'adminhtml'));
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(1);
$session = Mage::getSingleton('admin/session');
$session->setUser($userModel);
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());

// Then we see if the product exists already, by SKU since that is unique to each    product
$product = Mage::getModel('catalog/product')
->loadByAttribute('sku',$_product['sku']);

if(!$product){
// product does not exist so we will be creating a new one.

$product = new Mage_Catalog_Model_Product();

$product->setTypeId('simple');
$product->setWeight(1.0000);
$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$product->setStatus(1);
$product->setSku('UNIQUESKUHERE');
$product->setTaxClassId(0);
$product->setWebsiteIDs(array(0)); // your website ids
$product->setStoreIDs(array(0));  // your store ids
$product->setStockData(array(
    'is_in_stock' => 1,
    'qty' => 99999,
    'manage_stock' => 0,
));
}

// set the rest of the product information here that can be set on either new/update
$product->setAttributeSetId(9); // the product attribute set to use
$product->setName('Product Title');
$product->setCategoryIds(array(0,1,2,3)); // array of categories it will relate to
$product->setDescription('Description');
$product->setShortDescription('Short Description');
$product->setPrice(9.99);

// set the product images as such
// $image is a full path to the image. I found it to only work when I put all the images I wanted to import into the {magento_path}/media/catalog/products - I just created my own folder called import and it read from those images on import.
$image = '/path/to/magento/media/catalog/products/import/image.jpg';

$product->setMediaGallery (array('images'=>array (), 'values'=>array ()));
$product->addImageToMediaGallery ($image, array ('image'), false, false);
$product->addImageToMediaGallery ($image, array ('small_image'), false, false);
$product->addImageToMediaGallery ($image, array ('thumbnail'), false, false);

// setting custom attributes. for example for a custom attribute called special_attribute
// special_attribute will be used on all examples below for the various attribute types
$product->setSpecialAttribute('value here');

// setting a Yes/No Attribute
$product->setSpecialField(1);

// setting a Selection Attribute
$product->setSpecialAttribute($idOfAttributeOption); //specify the ID of the attribute   option, eg you creteated an option called Blue in special_attribute it was assigned an ID of some number. Use that number.

// setting a Mutli-Selection Attribute
$data['special_attribute'] = '101 , 102 , 103'; // coma separated string of option IDs. As ID , ID (mind the spaces before and after coma, it worked for me like that)
$product->setData($data);

try{
$product->save();
} catch(Exception $e){
echo $e->getMessage();
//handle your error
}
?>

Ответы [ 3 ]

3 голосов
/ 09 ноября 2011

Магми делает это

1 голос
/ 09 ноября 2011

Вы используете веб-сайты, магазины или магазины?Это важно, поскольку вы не можете обязательно устанавливать налоги / НДС и цены в «ценах», если вы используете представления магазинов, а не веб-сайты.

$product=Mage::getModel('catalog/product')->setWebsiteIds(whatever)->setStoreId(whatever)->load(whatever)

Для этого всегда можно использовать профили потока данных, просто экспортируйте свои продукты, вставьте в поля для обновления и включите столбец «магазин».Загрузите его снова и работа хорошая.

0 голосов
/ 04 декабря 2011

Я в итоге выбрал magmi для этой работы.

Все вводится в CSV, если вы импортируете старые данные из другой системы, вам нужно создать этот CSV программно.

Пример того, как должен выглядеть этот CSV: здесь

Чтобы сделать несколько описаний для одного продукта, просто скопируйте строку продукта и дублируйте его внизу, измените поле кода магазина / веб-сайтполе к коду сайта, для которого вам нужно другое описание, и введите новое описание в поле описания.

Теперь, когда вы загружаете CSV с Magmi, вы получите один продукт с 2 или более описаниями.в соответствующем магазине / на сайте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...