2010-11-11 104 views
4

我目前正在學習Magento,並且似乎遇到了一個熟悉很多人的問題,但沒有一個給出的解決方案適用於我。我正在尋找填充根類別中找到的所有類別的導航菜單,但我必須做的這段代碼不起作用。這裏是拍攝代碼應該執行這樣的任務的摘錄:getStoreCategories()什麼也沒有返回

<div id="utilities"> 
    <?php $_menu = ''?> 
    <?php foreach ($this->getStoreCategories() as $_category): ?> 
     <?php $_menu .= $this->drawItem($_category) ?> 
    <?php endforeach ?> 
    <?php if ($_menu): ?> 
    <div class="nav-container"> 

     <ul id="nav"> 

      <?php $_anyActive = false; foreach ($this->getStoreCategories() as $_category) { $_anyActive = $_anyActive || $this->isCategoryActive($_category); } ?> 
      <li class="home <?php echo !$_anyActive ? 'active' : '' ?>"><a href="<?php echo $this->getUrl('')?>"><span><?php echo $this->__('Home') ?></span></a></li> 

      <?php echo $_menu; ?> 
     </ul> 

    </div> 
    <?php endif; ?> 
</div> 

現在,我已經troubleshooted這個相當廣泛,並通過這樣做在$這個 - 一個的var_dump()開始getStoreCategories(),但這個?返回一個NULL。我知道這種說法沒有得到任何進一步的比方法,這樣可以得出結論,錯誤就出在這行代碼:

<?php foreach ($this->getStoreCategories() as $_category): ?> 

我曾嘗試創建新的根類別和子類別填充這些(也與產品的灌裝),然後將管理設置中的根目錄類別更改爲新創建的目錄,但仍無濟於事。我知道這段代碼被拉進頁面,就好像我在打印到屏幕上的違規語句之前鍵入靜態文本一樣。

我驚訝地說至少。任何幫助都會非常感謝,並且非常感謝您提前!

+0

我在使用清漆的企業版上遇到類似的問題。它清除了var/cache和var/full_page_cache目錄後對我有用 – Muk 2016-10-14 10:01:37

回答

10

你的問題是你正在使用一個塊,沒有getStoreCategories()方法。 $this - 是您手動創建的塊的引用。

Magento具有很高的抽象層次,因此每個問題都可以通過不同的方式解決。

用途:

Mage::helper('catalog/category')->getStoreCategories() 

相反的:

$this->getStoreCategories() 

當它工作 - 更好地創造你的塊getStoreCategories()這代碼移動到它 - 通過Magento的架構設想。

+0

好吧,我明白這一點。感謝您的回覆,但我現在收到錯誤消息。我相信這個問題是一個問題。它的文檔說在1.4之後棄用,我使用1.4.1.1。有沒有其他方法我應該使用?非常感謝你的回覆。我覺得我需要回去一點,學習塊,因爲我對你最後一句話有點困惑! – 2010-11-11 15:34:28

+0

該解決方案在很大程度上取決於您得到的錯誤 - 您的問題缺乏信息:錯誤描述,塊類描述(名稱和祖先),此塊的佈局結構。我認爲你試圖從一些phtml(例如'catalog/navigation/top.phtml')複製粘貼功能 - 它反對Magento體系結構,因爲每個phtml都有自己的塊和類($對於每個phtml都是不同的) 。在這種情況下,您需要充分理解Magento使用的'layout/block/phtml'系統。沒有它很難解決你的問題。 – 2010-11-11 15:47:14

1

獲取類別菜單的推薦方法是使用方法Mage_Catalog_Block_Navigation::renderCategoriesMenuHtml()

因此,對於Mage_Catalog_Block_Navigation或從其下降的任何塊,可以使用調用該方法的模板app/code/design/base/default/template/navigation/top.phtml

+2

以及如何一個人應該自定義這個東西的HTML或排除一些類別例如? – jayarjo 2011-08-08 16:28:12