获取启用FPC的当前类别

时间:2011-09-26 16:23:57

标签: php caching magento categories

启用整页缓存时是否可以获取当前类别? 在这种情况下不执行目录控制器,因此注册表(current_category键)为空。我所能得到的只是根类别

由于

3 个答案:

答案 0 :(得分:3)

可能的解决方案之一是通过给定的URL获取类别ID。你有url重写表,你有请求字符串。

    // Try to get category id directly from request
    if (Mage::app()->getRequest()->getParam('id')) {
        return Mage::app()->getRequest()->getParam('id');
    }
    // Try to get category id from request by rewrite request path
    $aliases = Mage::app()->getRequest()->getAliases();
    if ($aliases && is_array($aliases) && !empty($aliases) && $aliases['rewrite_request_path']) {
        $urlRewrite = Mage::getModel('core/url_rewrite')->loadByRequestPath($aliases['rewrite_request_path']);
        if ($urlRewrite && $urlRewrite->getId()) {
            return $urlRewrite->getCategoryId();
        }
    }

可能它不是很漂亮的解决方案,但对我来说效果很好。

答案 1 :(得分:1)

您需要通过图层获取它:

$layer = Mage::getSingleton('catalog/layer');
$_category = $layer->getCurrentCategory();
$currentCategoryId= $_category->getId();

此致 肯尼

答案 2 :(得分:0)

如图所示,你正在打洞!

  

我正在编写一个带有随机产品列表块的模块,但事实并非如此   通过实施打孔来受FPC影响

这意味着您的块是Magento的精简版(请参阅applyWithoutApp()方法),因此要从注册表中访问current_category,您需要在打孔模块中的Container中注册它。 / p>