2012-03-03 68 views
2

我有一個挑戰,做下面的陳述。在breadcrumbs.phtml我想做到以下幾點:Magento:我怎麼做,如果產品頁然後,否則,如果類別頁然後,如果cms頁然後

h1 
if cms page then getTitle 
else if category page then getName 
else if product page then getName 
/h1 

現在我想通了這兩個語句:

<?php echo Mage::registry('current_product')->getName()?> 
<?php echo Mage::registry('current_category')->getName()?> 

,但我無法弄清楚如何讓他們進入if陳述或如何完全製作if聲明。

任何幫助,非常感謝。

回答

1
if($this->getRequest()->getModuleName() == 'cms') { 
    // it will return 'cms' string 
} else if($this->getProductPage()) { 
    // this will check if you are in product page 
} else if ($this->getCategoryPage()) { 
    // this will check if you are in category page 
} 

getProductPage 棄用 getCategoryPage 棄用

,而不是上面的代碼,請試試這個,讓我知道結果是:

if(Mage::app()->getFrontController()->getRequest()->getRouteName() == 'cms'): 
    $Page = Mage::getSingleton('cms/page')->getTitle(); 
endif; 

if($Page == 'catalog'): 
    $Page->getName(); 
endif; 

if($product = Mage::registry('current_product')): 
    $product->getName(); 
endif; 

if($catalog = Mage::app()->getRequest()->getControllerName() == 'category'))): 
    $catalog->getName(); 
endif; 
+0

請檢查我的答案,也許你可以看到我做錯了上述解決方案? – user1246317 2012-03-03 12:48:07

+0

nope上面也沒有解決它。打破了頁面。 – user1246317 2012-03-03 21:39:55

2

我試過上述建議:

<?php 
if($this->getRequest()->getModuleName() == 'cms') { 
echo Mage::getSingleton('cms/page')->getTitle(); 
} else if($this->getProductPage()) { 
echo $this->getLayout()->getBlock('head')->getTitle(); 
} else if ($this->getCategoryPage()) { 
echo Mage::registry('current_category')->getName() 
} 
?> 

但它沒有奏效。

你能看到最新的錯誤嗎?

+0

你在哪裏使用這段代碼?在breadcrumbs.phtml中的 – 2012-03-03 18:30:59

+0

- 它實際上在cms頁面上工作。但不在產品頁面或類別頁 – user1246317 2012-03-03 20:36:46

+0

我很抱歉,這兩種方法(getProductPage,getCategoryPage)已被棄用(我檢查在1.6版本) – 2012-03-03 21:14:49