Magento - 新增产品未显示

时间:2014-04-22 07:19:29

标签: php magento product

我已经从Magento后端创建了一个新产品,但它没有出现在相关类别或产品页面中。即如果我输入产品网址密钥,它将转到404页面。

这只是一个简单的产品,我检查了以下内容,

Product enabled : Yes

Visibility : Catalog, search

Product Images : All good

Quantity Available : 9999999

Stock Availability : In Stock

Assign to a category : Yes (I even went to Manage Category to see product is under Category products and its there)

Product in web sites : Assigned

Cache : Cleared 10 X times

Indexing : Done

我在app/code/core/Mage/Catalog/Model/Category.php处理了另外一件事,并在getProductCollection()

之前的return $collection函数中添加了以下行
var_dump($collection->getAllIds());

然后我进入了类别页面,我可以看到var_dump输出所有产品ID分配给该类别但仍然是新产品我不在那里:(

这一天真的令人沮丧,没有运气,任何想法?

更新:

刚发现我可以通过http://my.host/catalog/product/view/id/881

手动导航到产品页面

但是在页面中它显示“...此项目当前不可用”只需深入查看代码并查看此消息显示的原因并发现$_product->isSaleable()返回false。

但是我不确定与产品有关的天气在类别上是不可见的,并且无法导航唱歌URL Key

1 个答案:

答案 0 :(得分:1)

最后设法解决问题。我将解释我为解决这个问题所做的工作,因为它也可以帮助其他人。

就像我在问题中说的,我做了清单。但$_product->isSaleable()正在返回false

所以我不得不深入研究代码,发现在$_product->isSaleable()中设置了Mage_CatalogInventory_Model_Stock_Status::assignProduct()

public function assignProduct(Mage_Catalog_Model_Product $product, $stockId = 1, $stockStatus = null)
    {
        if (is_null($stockStatus)) {
            $websiteId = $product->getStore()->getWebsiteId();
            $status = $this->getProductStatus($product->getId(), $websiteId, $stockId);
            $stockStatus = isset($status[$product->getId()]) ? $status[$product->getId()] : null;
        }

        $product->setIsSalable($stockStatus);

        return $this;
    }

然后我发现$this->getProductStatus();返回一个空数组,原因是我的新产品cataloginventory_stock_status表中没有条目。

此表仅在重建库存状态索引时更新,在Magento管理员中全部为绿色“就绪”,但它不是真的“准备好” :(。

所以我运行shell/indexer.php --reindexall来手动重建我的所有索引,这些索引也更新了cataloginventory_stock_status表。

最后我可以看到我的产品。 Yey !!

@Kingshuk Deb - 所以你是对的,它是索引,但Magento管理员说这一切都很好,从一开始就误导了我。