获取Magento中的当前模块和页面标识符?

时间:2012-04-30 11:37:36

标签: magento

我需要在Magento中获取当前页面标识符和当前模块。

我使用了以下代码。

Mage::app()->getRequest()->getModuleName() - To get current module.
Mage::getSingleton('cms/page')->getIdentifier() - To get current page

它工作一次清除magento缓存,否则显示旧页面和模块。

实施例

当我们检查主页时,它将“cms”作为模块并将“home”作为页面。 现在我点击联系页面,它也显示相同的结果。

清除缓存并检查联系页面后,它将“cms”显示为模块,将“contact”显示为页面标识符。

如何获取当前页面标识符和模块,每次都没有清除缓存?

3 个答案:

答案 0 :(得分:12)

获取当前模块:

Mage::app()->getFrontController()->getRequest()->getModuleName()

获取当前的CMS页面:

Mage::getSingleton('cms/page')->getIdentifier()

答案 1 :(得分:3)

获取当前页面的正确标识符和URL:

if (!in_array(Mage::app()->getFrontController()->getAction()->getFullActionName(), array('cms_index_noRoute', 'cms_index_defaultNoRoute'))) {
    $Identifier =  Mage::app()->getFrontController()->getRequest()->getModuleName();
    $currentUrl = Mage::helper('core/url')->getCurrentUrl();
}
$Identifier = strtolower($Identifier);
if($Identifier == 'cms'){   
    $Identifier = Mage::getSingleton('cms/page')->getIdentifier();
}
echo $Identifier = strtolower($Identifier).'<br>'.$currentUrl;

在许多情况下,这对我有用。希望这会对某人有所帮助。

答案 2 :(得分:2)

您很可能需要将构造函数覆盖到您想要的块,例如:Mage_Catalog_Block_Navigation

所以,你的_constrct()

protected function _construct()
    {
        $this->addData(array(
            'cache_lifetime'    => false,
            'cache_tags'        => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG),
        ));
    }

应该是:

protected function _construct() {}