2014-10-03 33 views
0

我在phtml文件中尝试了Magento 1.8.1.0中的以下代码。如何检查页面是否为启用缓存的Magento 1.8.0.1的主页?

包含的代码文件是该文件PHTML app/design/frontend/default/mytheme/template/catalog/navigation/left_nav.phtml

XML文件是catalog.xml

<default> 


    <reference name="top.container"> 
     <block type="cms/block" name="cms.top.callout" before="-"> 
      <action method="setBlockId"><block_id>top_callout</block_id></action> 
     </block> 
    </reference> 
    <reference name="left"> 
     <block type="catalog/navigation" name="catalog.leftnav" template="catalog/navigation/left_nav.phtml" /> 
    </reference> 
    ---- 
    ----- 
</default> 

$route = Mage::app()->getFrontController()->getRequest()->getRouteName(); 
    $action = Mage::app()->getFrontController()->getRequest()->getActionName(); 

    if($route == 'cms' && $action == 'index'): 
     echo "home page"; 
    endif; 

$is_homepage = Mage::getBlockSingleton('page/html_header')->getIsHomePage(); 

if($is_homepage) 
{ 

echo "home page"; 

} 

意味着我的条件成立,即即使它不是主页,每个页面上都有“主页”。 有没有找出主页

如果我禁用的Magento缓存,它工作正常

+0

你能告诉在哪个模板编写代码?这意味着什么“不好”? thx – apouey 2014-10-03 20:25:02

+0

我在布局中看不到目录/ navigation/custom_leftnav.phtml。尝试用好的替换catalog/navigation/left_nav.phtml。 – apouey 2014-10-04 09:19:14

+0

一个干净的方法将是创建一个新模块并使用setTemplate方法更新布局。 – apouey 2014-10-04 09:25:41

回答

0

嗨,你需要更改和控制器的名字是你的逻辑

/** 
* get Controller name 
*/ 
$controller=Mage::app()->getRequest()->getControllerName(); 
    if($route == 'cms' && $action == 'index'&& $controller='index'): 
      echo "home page"; 
     endif; 
+0

如果我禁用Magento缓存,那么只有它工作正常。 – Muk 2014-10-04 06:08:30

0

您有任何精确的方法根据您的情况更改主页标识符。

<?php 
       if(Mage::getSingleton('cms/page')->getIdentifier()=="home") 
{ 
// Your code comes here ! 
} 
?> 
1

这应该为你工作:

$routeName = Mage::app()->getRequest()->getRouteName(); 
$identifier = Mage::getSingleton('cms/page')->getIdentifier(); 

if ($routeName == 'cms' && $identifier == 'home') { 
    echo 'Homepage'; 
} 
相关问题