Magento:显示所有类别但无法关联图像

时间:2013-01-24 22:41:48

标签: php magento magento-1.7

我有一个奇怪但可能很容易解决的情况。

我在一个块中有以下代码:

<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。我这样做了吗?

2 个答案:

答案 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(); ?>"/>