2010-11-11 72 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