2014-10-03 32 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'; 
} 
相關問題