我已经从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
答案 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管理员说这一切都很好,从一开始就误导了我。