Search code examples
magentomagento-soap-api

Magento product.create websites argument


I have a question about the websites argument in the magento api.

Nowhere can I find an explanation of what this variable is. Does this variable represent a storeview? a store? a website?

Where in the api can I retrieve a list of available options?

If I cannot retrieve a list from the API, where in the backend menu can I find the static variable that I can use? Do I need the website ID or storeID?

I use soap v1

function call($which,$vars=null)
        {
        // retourneer de output soap client api call
        if($vars !== null)
            {
            return $this->soapclient->call($this->sessiontoken,$which,$vars);
            }
        else
            {
            return $this->soapclient->call($this->sessiontoken,$which);
            }
        }

    function createProduct($productname,
                            $websites,
                            $shortdescription,
                            $description,
                            $status,
                            $weight,
                            $tax_class_id,
                            $categories,
                            $price,
                            $attributesetid,
                            $producttype,
                            $sku)
        {
        $attributeSets = $this->call('product_attribute_set.list');
        $set = current($attributeSets);
        try
            {
            $x = $this->call('product.create', array($producttype, $set['set_id'], $sku, array(
            'name'              => $productname,
             // websites - Array of website ids to which you want to assign a new product
            'websites'          => $websites, // array(1,2,3,...)
            'short_description' => $shortdescription,
            'description'       => $description,
            'status'            => $status,
            'weight'            => $weight,
            'tax_class_id'      => $tax_class_id,
            'categories'    => $categories,    //3 is the category id(array(3))
            'price'             => $price
        );));
            }
        catch(Exception $e)
            {
            $x = 0xABED + 0xCAFE + 0xBAD + 0xBED * 0xFACE;// abed went to a cafe... the alcohol went bad.... he stumbled into bed and fell face down...
            }
        return $x;
        }

Solution

  • Looking at Mage_Catalog_Model_Product_Api::create():

    public function create($type, $set, $sku, $productData, $store = null)
    {
    //[...]
    $product = Mage::getModel('catalog/product');
            $product->setStoreId($this->_getStoreId($store))
                ->setAttributeSetId($set)
                ->setTypeId($type)
                ->setSku($sku);
    //[...]
    $this->_prepareDataForSave($product, $productData);//this does some processing
    

    Now, looking at Mage_Catalog_Model_Product_Api::_prepareDataForSave():

     protected function _prepareDataForSave($product, $productData)
        {
            if (isset($productData['website_ids']) && is_array($productData['website_ids'])) {
                $product->setWebsiteIds($productData['website_ids']);
            }
     //....
    

    we see that website_ids (numeric array) are expected