getStoreCategories() 不返回任何内容
·
问题:getStoreCategories() 不返回任何内容
我目前正在学习 Magento,似乎遇到了一个很多人都熟悉的问题,但没有一个给定的解决方案对我有用。我希望使用在根类别中找到的所有类别填充导航菜单,但我必须这样做的一段代码不起作用。以下是执行此类任务的代码摘录:
<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() 上执行 var_dump() ,但这返回了 NULL。我知道该语句没有比该方法更进一步,因此可以得出结论,错误在于这行代码:
<?php foreach ($this->getStoreCategories() as $_category): ?>
我尝试创建新的根类别并用子类别(也填充产品)填充这些类别,然后将管理设置中的根类别更改为这个新创建的类别,但仍然无济于事。我知道这段代码被拉到页面中,就好像我在它打印到屏幕上的违规语句之前键入静态文本一样。
至少可以说我很吃惊。任何帮助将不胜感激,并在此先感谢您!
解答
您的问题是您使用的是没有getStoreCategories()方法的块。$this- 是对您手动创建的块的引用。
Magento 具有高级别的抽象,因此这里的每个问题都可以通过不同的方式解决。
利用:
Mage::helper('catalog/category')->getStoreCategories()
代替:
$this->getStoreCategories()
当它工作时 - 最好在你的块中创建getStoreCategories()并将此代码移动到它 - 正如 Magento 架构所假设的那样。
更多推荐
所有评论(0)