在FPC启用的情况下获取当前类别


Getting current category with FPC enabled

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

谢谢

一种可能的解决方案是通过给定的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();
        }
    }

也许这不是一个漂亮的解决方案,但它对我来说很有效。

你需要通过图层:

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

问候,肯尼

您正在打孔您的块,如下所示:

我正在写一个随机产品列表块模块,它不是冲孔对FPC的影响

这意味着你的块是Magento的剥离版本(参见applyWithoutApp()方法),所以要从注册表中访问current_category,你需要在你的穿孔模块的Container中注册它。