我有一个奇怪但可能很容易解决的情况。
我在一个块中有以下代码:
<div class="home-categories">
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php foreach($_categories as $_category): ?>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<img src="<?php echo $_category->getStoreIds(); ?>"/>
<div class="category-title">
<p><?php echo $_category->getName(); ?></p>
</div>
</a>
<?php endforeach; ?>
</div>
得到的HTML我得到的所有正确的细节,但img src。我这样做了吗?
答案 0 :(得分:4)
您没有获取图片网址的原因是,默认情况下,Magento模型没有加载所有属性。这样您只需加载所需的属性,并且您的数据库查询并不昂贵。以下将做到这一点。
$_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories(false, true, false);
$_categories->addAttributeToSelect('image');
看一下getStoreCategories的方法定义:
getStoreCategories($sorted=false, $asCollection=false, $toLoad=true)
您希望该方法返回尚未加载的集合,因此返回false,true,false参数。在循环浏览要确保加载图像属性的类别之前,这就是addAttributeToSelect('image')调用的用途。
这比$ _category-&gt; load($ _category-&gt; getId())更有效;因为我们没有加载整个实体。现在,当您遍历类别时,您可以执行以下操作,并且您应该在图像标记中包含图像URL。
<img src="<?php echo $_category->getImageUrl(); ?>"/>
答案 1 :(得分:1)
原因是加载的类别集合不包含类别属性,只包含基本类别数据。你必须自己加载它们或者在它加载之前将它们添加到集合中(没有看一下辅助函数,所以我不能确定你是否可以在调用之后这样做...)。 / p>
最简单的解决方案是替换行
<img src="<?php echo $_category->getStoreIds(); ?>"/>
与
<img src="<?php $_category->load( $_category->getId()); echo $_category->getImageUrl(); ?>"/>