使用时,
$category = Mage::registry('current_category');
$product = Mage::registry('current_product');
要查看我们是否在产品或类别页面上,某些产品页面仅返回$product
,而某些产品页面则返回$product
和$category
。
两种产品的设置相同且属于同一类别。我们如何进入产品页面的导航路线并不重要。
总而言之,我们似乎有两种类型的产品页面 产品类别和产品不属于类别。
如果两者都被正确分配并显示在类别中, 有什么区别,它在哪里设定?
要校准
product 1
$category = Mage::registry('current_category'); -- false
$product = Mage::registry('current_product'); -- true
product 2
$category = Mage::registry('current_category'); -- true
$product = Mage::registry('current_product'); -- true
有什么区别,它在哪里设定?
答案 0 :(得分:0)
如果我完全理解你的要求。
当您转到类别页面时:
您拥有方法Mage_Catalog_CategoryController
的控制器protected function _initCatagory()
,该方法将在注册表项中保存当前类别:Mage::register('current_category', $category);
当您转到产品页面时:
您拥有方法Mage_Catalog_ProductController
的控制器protected function _initProduct()
,此处使用方法Mage_Catalog_Helper_Product
调用帮助器public function initProduct($productId, $controller, $params = null)
。
此方法同时注册产品及其父类别(如果它有一个 - category_id作为参数在GET中通过路由匹配发送 - url重写):
if ($categoryId) {
$category = Mage::getModel('catalog/category')->load($categoryId);
$product->setCategory($category);
Mage::register('current_category', $category);
}
// Register current data and dispatch final events
Mage::register('current_product', $product);