8

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

我使用了下面的代码。

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

它一旦清除 magento 缓存就可以工作,否则它会显示旧页面和模块。

例子:

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

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

如何在每次没有清除缓存的情况下获取当前页面标识符和模块?

4

4 回答 4

12

获取当前模块:

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

获取当前 CMS 页面:

Mage::getSingleton('cms/page')->getIdentifier()
于 2012-07-05T07:34:08.817 回答
4
 $pageID = Mage::getBlockSingleton('cms/page')->getPage()->getIdentifier(); 

这将返回当前 cms 页面标识符。

于 2012-08-17T11:12:59.293 回答
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;

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

于 2014-08-28T07:34:00.293 回答
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() {}
于 2012-04-30T15:43:28.970 回答