Magento不显示存储的文章

时间:2014-03-03 14:15:17

标签: php magento object save article

我创建了一个脚本,用于从外部来源存储magento中的文章。

这就是我目前正在做的事情

    $this->product = Mage::getModel('catalog/product')->loadByAttribute('sku',$this->artnr);
    Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
    if($this->product===false || $this->product->getId()<1){
        $this->product = Mage::getModel('catalog/product');
        $this->product->setSku($this->actindo['art_nr']);
        $this->newProduct = true;
        $this->product->setAttributeSetId($this->getDefaultAttributeSetId());
        $this->product->setStoreId(Mage::app()->getStore()->getWebsiteId());
        $this->product->setCreatedAt(strtotime('now'));
    }

然后我设置所有必填字段,如描述等

然后我正在做商店

$this->product->save();

产品在管理员后端正确显示,但在商店前端不可见。

我检查了数据库,发现没有写入多个索引。 平面桌也没有保存。 如果我在管理员后端再次存储它,一切都会保存。 我目前禁用了平面表。 但他们的内容仍然是写的。

我使用Magento 1.7.0.1,PHP5.3运行为fpm和web服务器nginx。

我也已经尝试重建索引和所有内容,但它仍然在前端不可见。 我究竟做错了什么? 我推送到脚本的所有字段都会被写入并在管理部分中可见。 ????

2 个答案:

答案 0 :(得分:1)

为了在前端拥有产品,需要进行一些设置 必须启用它:

->setStatus(1);

必须是可见的

->setVisibility(4); //or 2

必须有库存或您必须具有在前端显示缺货产品的设置。

$stockItem = array();
$stockItem['qty'] = 100; //something bbigger than 0
$stockItem['is_in_stock'] = 1;
$product->setData('stock_item', $stockItem);

答案 1 :(得分:1)

你可能已经尝试了所有这些,但我知道弄清楚'为什么产品没有展示'是一个令人沮丧的过程。

我的建议是尝试在Magento管理区域手动制作类似的产品,然后检查每个产品的管理区域中的所有字段。您可能会仔细查看设置'website_ids',我认为store_id和website_id是不同的东西,不是吗? $store_id = Mage::app()->getStore()->getStoreId(); vs $store_website_id = Mage::app()->getStore()->getWebsiteId();

您还可以使用system-&gt;导入/导出导出工具来比较Magento设置的内容与您的算法设置的内容。

您是否正在阅读Magento AdminHTML功能以节省产品?

    /* path:  app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php */
    Mage_Adminhtml_Catalog_ProductController::saveAction()
    // (and then obviously)
    Mage_Adminhtml_Catalog_ProductController::_initProductSave()
    Mage_Adminhtml_Catalog_ProductController::_initProduct()

所以查看该代码,如果您在手动制作测试产品时单击保存按钮时可以从Magento Admin捕获POST,那么您将能够看到“传入”到saveAction的内容( )函数并将其与您的代码进行比较。

您从哪里运行代码?如果您正在实例化自己的Mage :: app(),我认为您需要将其设置为管理会话并设置商店ID等。我找不到对此的引用,但如果您认为可能与它有关,请搜索一下。也许您可以使用saveAction()调用或重新使用该代码,而不是使用$ this-&gt; product-&gt; save()。

如果您有一个用于运行任意代码的测试模块,请尝试一些调试调用和回声来构建不同的产品集合,以查看生成的产品与手动输入的测试产品之间的区别。

计划B:如果您有外部产品数据源,您可能会发现最优秀的“MAGMI Datapump API”是实现您想要的最简单,最快捷的方式。

那太多的信息了?