2016-06-21 10 views
0

Ich versuche, Kunden zu erlauben, neues Produkt vom Frontend (Marktplatz) hinzuzufügen.kannMetaTitle für Produkt Magento 1.9 nicht setzen

es funktioniert korrekt und Produkt hinzufügen und speichern Sie es richtig, aber das Problem ist, dass er nicht speichern kann (Meta-Titel, Meta-Beschreibung, Meta-Keywords erstellt und Kunden-ID). aber es spart andere Attribute korrekt

Hier ist ein Beispiel für meinen Code

$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); 

Antwort

0

für das Produkt vom Frontend hinzufügen, können Sie einfach erstellen Form wie in Backend

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

und nur erhalten Post product und zum Produkt hinzufügen

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

für Sie antwort:

  1. Sie fangen Fehler von try catch Anweisung benötigen ...

  2. versuchen setData('meta_title','Testing') vielleicht können Sie Fehler in Namen Methode setMetaTitle() oder dieser Methode existieren in jedem Umschreiben Produktmodelle

  3. erhalten und Versuchen Sie, den Katalog nach dem Speichern neu zu indizieren und löschen Sie den Cache (oder deaktivieren Sie ihn für die Entwicklung).

+0

ich benutze schon versuchen und zu fangen, aber das Hauptproblem ist, dass es alle Daten wie Beschreibung, Name, Preis, Bilder zu speichern, aber nicht Meta-Titel, Meta-Beschreibung speichern und website_id –

+0

@MahmoudAbdElSamad Sie Methode '$ aufrufen product-> save() 'Wenn Sie das Produkt bearbeiten, müssen Sie set id' setId ($ id) 'oder load product' Mage :: getModel ('catalog/product') -> load ($ id) 'eingeben und nach dem Speichern die Ausgabe versuchen ID Produkt 'var_dump ($ product-> getId())' für dieses Produkt in adminhtml Schnittstelle aussehen. – Naumov

+0

Dies ist Code in der Erstellung des Produkts nicht im Bearbeitungsfall, ich erstelle Modul, mit dem Kunden Produkt (Marketplace) hinzufügen können dieser Code in der Erstellung Fall nicht im Update - Fall, um Produktdaten zu laden –

Verwandte Themen