代码之家  ›  专栏  ›  技术社区  ›  Liam Spencer

getStoreCategories()不返回任何内容

  •  4
  • Liam Spencer  · 技术社区  · 14 年前

    <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>
    

    现在,我已经彻底地解决了这个问题,首先对$this-?getStoreCategories()但返回空值。我知道该语句没有得到比该方法更进一步的结果,因此可以断定错误在于这行代码:

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

    我已经尝试创建新的根类别,并用子类别(也用产品填充)填充这些类别,然后在管理设置中将根类别更改为这个新创建的类别,但仍然没有效果。我知道这段代码被拉到页面中,就好像我在它打印到屏幕上的违规语句之前键入了静态文本一样。

    2 回复  |  直到 14 年前
        1
  •  10
  •   Rasclatt    9 年前

    你的问题是你在用一个没有 getStoreCategories() 方法。 $this

    Magento有很高的抽象级别,所以这里的每个问题都可以用不同的方法解决。

    使用:

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

    而不是:

    $this->getStoreCategories()
    

    getStoreCategories() 在您的块中,并将此代码移到其中-正如Magento architecture所设想的那样。

        2
  •  1
  •   clockworkgeek    14 年前

    获取类别菜单的推荐方法是 Mage_Catalog_Block_Navigation::renderCategoriesMenuHtml() .

    Mage_Catalog_Block_Navigation app/code/design/base/default/template/navigation/top.phtml 它调用那个方法。