Can';使用php for magento创建产品时,不要添加库存、自定义属性和元数据

Can';使用php for magento创建产品时,不要添加库存、自定义属性和元数据,php,magento,Php,Magento,我正在制作一个脚本,以帮助更容易地将产品导入到我们的magento安装中,现在部分工作正常。然而,我在添加股票数量和任何其他与股票以及元标题、描述和关键字有关的内容时遇到了问题。我也无法添加名为EAN的自定义属性。下面是我的代码,我已经对其进行了注释,以帮助理解哪些是有效的,哪些是无效的 Mage::init(); $product = Mage::getModel('catalog/product'); $product->setSku($itemid); $product->s

我正在制作一个脚本,以帮助更容易地将产品导入到我们的magento安装中,现在部分工作正常。然而,我在添加股票数量和任何其他与股票以及元标题、描述和关键字有关的内容时遇到了问题。我也无法添加名为EAN的自定义属性。下面是我的代码,我已经对其进行了注释,以帮助理解哪些是有效的,哪些是无效的

Mage::init();
$product = Mage::getModel('catalog/product');

$product->setSku($itemid);
$product->setName($name);
$product->setDescription($desc);
$product->setShortDescription($longname);
$product->setPrice($price);
$product->setTypeId($prodtype);
$product->setAttributeSetId($attributesetid); // need to look this up
$product->setCategoryIds($categorys); // need to look these up
$product->setWeight(10.0);
$product->setTaxClassId(2); // taxable goods
$product->setVisibility(4); // catalog, search
$product->setStatus(1); // enabled
//After this nothing is added
$product->setMetaTitle($name); //does not work
$product->setMetaDescription($longname); //does not work
$product->setMetaKeywords($keywords); //does not work
$product->setEan($ean); //custom variable, does not work
$product->setCreatedAt(strtotime('now')); //does not work

// assign product to the default website
$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); //This works

$count = 0;
foreach ($listOfImages as $imagePath) {
    $mode = array();
    if ($count == 0) {
        $mode = array("thumbnail", "small_image", "image");
    }
    $product->addImageToMediaGallery($imagePath, $mode, false, false); //works!
    $count++;
}
//This does not work at all
$stockData = Mage::getModel('cataloginventory/stock_item');
$stockData->assignProduct($product);
$stockData['qty'] = $stock;
if ($stock > 0) {
$stockData->setData('is_in_stock', 1);
} else {
$stockData->setData('is_in_stock', 0);
}
$stockData->setData('manage_stock', 1);
$stockData->setData('use_config_manage_stock', 1);
$stockData->setData('stock_id', 1);
$stockData->setData('store_id', array(Mage::app()->getStore(true)->getWebsite()->getId()));
$product->setStockData($stockData);

//Saving the product works
try {
    $product->save();
} catch (Exception $ex) {
    //Handle the error
    print_r($ex);
 }
谢谢你的帮助

对于库存,请尝试

$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->assignProduct($product);
$stockItem->setData('is_in_stock', 1);
$stockItem->setData('qty', 1);

$product->setStockItem($stockItem);


有关关键字-
$product->setMetaKeyword()
(没有最后的's'),请参见

经过几个小时的搜索,我找到了它。因为我在Magento之外的文件中,所以需要单独创建管理会话。这解决了我遇到的大多数问题。我添加了以下代码

// 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());

谢谢,通过保存$product,然后声明stockitem并保存它,我得到了可用的库存,正如这里看到的,我仍然无法获得元标记和自定义属性