I am importing products from a 3rd party database into my magento site. I have found a great tutorial online for doing this in PHP.
However, the tutorial does not describe how to assign multiple descriptions to a single product based on the store.
In my example I have a product that has both an english and french description. One for my French store and one for the english, how can I import both into magento.
I also need to do this for the title, urlkey and have different categories assigned per store.
Here is the code given on the tutorial.
<?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
}
?>
I eventually chose magmi to do this job.
Everything is entered into a CSV, if you’re importing old data from another system, you need to create this CSV programmatically.
An example of what this CSV should look like is here
To do multiple descriptions for one product, simply copy the row of a product and duplicate it underneath, change the store code field/website field to the code of the site you need a different description for and enter a new description in the description field.
Now when you upload your CSV with Magmi, you’ll get one product with 2 or more descriptions associated with the relevant store/website.
Feel free to comment and ask more questions, this was a headache for me and I’d be glad to relieve you of similar frustrations.