Magento产品有时在类别中有时不是$ product = Mage :: registry('current_product');

时间:2014-08-07 13:06:53

标签: magento

使用时,

$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

有什么区别,它在哪里设定?

1 个答案:

答案 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);