我正在学习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>
Run Code Online (Sandbox Code Playgroud)
现在,我对此进行了相当广泛的解决,并开始在$ this-?getStoreCategories()上执行var_dump(),但这返回了NULL.我知道该语句没有比该方法更进一步,因此可以得出结论错误在于这行代码:
<?php foreach ($this->getStoreCategories() as $_category): ?>
Run Code Online (Sandbox Code Playgroud)
我尝试创建新的根类别并使用子类别(也填充产品)填充这些类别,然后将管理设置中的根类别更改为此新创建的类别,但仍无济于事.我知道这个代码被拉入页面,好像我在打印到屏幕上的违规语句之前输入静态文本.
至少可以说,我很沮丧.任何帮助都会非常感激,非常感谢你!
And*_*kus 10
你的问题是你正在使用一个没有getStoreCategories()方法的Block .$this - 是对手动创建的块的引用.
Magento具有很高的抽象级别,因此这里的每个问题都可以通过不同的方式解决.
使用:
Mage::helper('catalog/category')->getStoreCategories()
Run Code Online (Sandbox Code Playgroud)
代替:
$this->getStoreCategories()
Run Code Online (Sandbox Code Playgroud)
当它工作时 - 更好地getStoreCategories()在你的块中创建并将此代码移动到它 - 正如Magento架构所假设的那样.