我需要在Magento中获取当前页面标识符和当前模块。
我使用了以下代码。
Mage::app()->getRequest()->getModuleName() - To get current module.
Mage::getSingleton('cms/page')->getIdentifier() - To get current page
它工作一次清除magento缓存,否则显示旧页面和模块。
当我们检查主页时,它将“cms”作为模块并将“home”作为页面。 现在我点击联系页面,它也显示相同的结果。
清除缓存并检查联系页面后,它将“cms”显示为模块,将“contact”显示为页面标识符。
如何获取当前页面标识符和模块,每次都没有清除缓存?
答案 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() {}