2016-06-21 150 views
0

设置MetaTitle我试图让客户从前端(市场)添加新产品。不能为产品Magento 1.9

它工作正常,并添加产品并保存正确,但问题是,他不能保存任何(元标题,元描述,Meta关键字和客户ID创建)。但它正确保存其他属性

这里是我的代码

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

     $product->setSku($sku); 
     $product->setName($name); 
     $product->setDescription($description); 
     $product->setShortDescription($short_description); 
     $product->setMetaTitle('test meta title 2'); 
     $product->setMetaKeyword('test meta keyword 2'); 
     $product->setMetaDescription('test meta description 2'); 
     $product->setUrlKey($url_key); 
     $product->setPrice($price); 
     $product->setTypeId('simple'); 
     $product->setAttributeSetId(4); 
     $product->setCategoryIds($categories); 
     $product->setWeight($weight); 
     $product->setTaxClassId($tax_class); 
     $product->setVisibility($visibility); 
     $product->setStatus($status); 
     $product->setCreatedAt(strtotime('now')); 
     $product->setNewsFromDate('06/26/2016') ; 
     $product->setNewsToDate('06/30/2016') ; 
     $product->setCustomerId(414); 
     $gallery[]=$image; 
     $product->setMediaGallery(array('images' => array(), 'values' => array())); 
     foreach ($gallery as $image){ 
      $imagePath = Mage::getBaseDir('media') . '/catalog/product/images/' . $image; 
      $imageResized = Mage::getBaseDir('media') . '/catalog/product/compress/' . $image; 

      if (!file_exists($imageResized) && file_exists($imagePath)) { 
       $imageObj = new Varien_Image($imagePath); 
       $imageObj->constrainOnly(TRUE); 
       $imageObj->keepAspectRatio(TRUE); 
       $imageObj->keepFrame(FALSE); 
       $imageObj->resize(600); 
       $imageObj->save($imageResized); 
       $product->addImageToMediaGallery($imageResized, array('image', 'small_image', 'thumbnail'), false, false); 
      } 
     } 

     $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); 
     $product->save(); 
     $stockData = $product->getStockData(); 
     $stockData['qty'] = $qty; 
     $stockData['is_in_stock'] = $is_in_stock; 
     $stockData['manage_stock'] = $manage_stock; 
     $stockData['use_config_manage_stock'] = 0; 
     $product->setStockData($stockData); 

回答

0

从前端添加产品如在后端

<input name='product[meta_title]' .. /> 
<input name='product[meta_description]' .. /> 
<input name='product[meta_keyword]' .. /> 
<!-- etc... --> 

你可以简单的创建形式和刚刚获得后product和样本加入到我的收藏

try { 
    $product = Mage::getModel('catalog/product'); 
    $product->addData(Mage::app()->getRequest()->getPost()['product']); 
    $product->save(); 
} catch(Exception $error) { 
    Mage::logException($error); 
} 

给你回答:

  1. try catch指令需要捕获错误...

  2. 尝试setData('meta_title','Testing')也许你可以在名称方法setMetaTitle()或这种方法的错误存在于任何重写产品型号

  3. 和保存产品后尝试重新索引目录,并清除缓存(或禁用开发)。

+0

我已经使用try和catch但主要的问题是,它保存喜欢的描述,名称,价格,图像的所有数据,但不能保存元标题,meta描述和website_id –

+0

@MahmoudAbdElSamad调用方法'$产品 - >保存()'如果你编辑你需要的产品集合id'setId($ id)'或加载产品'Mage :: getModel('catalog/product') - > load($ id)'并保存后尝试输出id产品'var_dump($ product-> getId())'在adminhtml接口中查看此产品。 – Naumov

+0

这是创建产品时的代码而不是编辑的情况下,我创建的模块允许客户添加产品(Marketplace) 这个代码在创建的情况下不在更新的情况下加载产品数据 –