【问题标题】:can not setMetaTitle for product Magento 1.9无法为产品 Magento 1.9 设置MetaTitle
【发布时间】:2016-06-21 18:27:33
【问题描述】:

我正在尝试让客户从前端(市场)添加新产品。

它可以正常工作并添加产品并正确保存,但问题是他无法保存任何(元标题、元描述、创建的元关键字和客户 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);

【问题讨论】:

    标签: php magento magento-1.9


    【解决方案1】:

    要从前端添加产品,您可以像在后端一样简单地创建表单

    <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. 并在产品保存后尝试重新索引目录,并清除缓存(或禁用开发)。

    【讨论】:

    • 我已经使用 try and catch 但主要问题是它保存了所有数据,如描述、名称、价格、图像,但不保存元标题、元描述和 website_id
    • @MahmoudAbdElSamad 你调用方法$product-&gt;save() 如果你编辑产品你需要设置ID setId($id) 或加载产品Mage::getModel('catalog/product')-&gt;load($id) 保存后尝试输出ID 产品var_dump($product-&gt;getId()) 在adminhtml 界面中查看这个产品.
    • 这是创建产品的代码,不在编辑案例中,我创建了允许客户在创建案例中添加产品(市场)的模块,而不是在更新案例中加载产品数据
    • @MahmoudAbdElSamad 你试着打电话给setData('meta_title','testing');?并尝试setStore(0)这个默认商店
    • 元标题已正确保存,但 website_ids 未正确保存 [ $product->setData('website_ids',(array(Mage::app()->getStore(true)->getWebsite()-> getId()))); ]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多