Magento类别缩略图

时间:2012-05-17 22:39:21

标签: magento thumbnails categories

我正在尝试使用Magento类别缩略图,但它不起作用。我已经在线学习了很多教程(例如http://www.douglasradburn.co.uk/getting-category-thumbnail-images-with-magento/), 他们都提到了这个功能:

$_category->getThumbnail()

应该是在Category模型中。我正在运行Magento 1.6,我无法在任何地方找到这个功能。我还下载了1.5和1.7,在那里查看,无处可寻。当我运行代码时,它没有给我任何错误,但是没有输出任何内容。

这是我的完整代码:

 <ul id="nav">
 <?php foreach ($this->getStoreCategories() as $_category): ?>
     <?php echo $_category->getThumbnail(); ?>  
     <?php echo $this->drawItem($_category) ?>
 <?php endforeach ?>
 </ul>

(我正在尝试将缩略图用作存在的菜单项)


搞定了。秘诀是您需要使用以下代码重新查询FULL类别数据:

Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail()

我稍微遵循了本教程:

http://www.h-o.nl/blog/using_category_images_in_your_magento_navigation/

在菜单中显示类别缩略图。

感谢 Ť

4 个答案:

答案 0 :(得分:12)

对于它的价值,你的解决方案有效,但效率很低。

使用:

Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail()

会为每个类别添加几百分之一甚至十分之一秒的页面加载时间。

这样做的原因是您已经遇到了获取模型集合并获取其中的项目的麻烦,然后您将添加新的数据库调用来获取每个类别的完整数据。您需要确保首先收集完整的类别数据。

之前您没有工作的原因是因为没有告诉类别集合需要选择哪些属性。它实际上只是从catalog_category_entity表中返回平面数据,而不是与任何属性表连接。

您需要做的事情可能更多:

<ul id="nav">
<?php foreach ($this->getStoreCategories()->addAttributeToSelect("*") as $_category): ?>
    <?php echo $_category->getThumbnail(); ?>  
    <?php echo $this->drawItem($_category) ?>
<?php endforeach ?>
</ul>

实际上,理想情况下,您希望覆盖->getStoreCategories()函数以添加通配符过滤器。

我建议打开app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php并学习编写哪种非常酷的集合函数。掌握EAV系列就像是Magento开发人员的成年礼。一旦你这样做,你将是不可阻挡的!

希望这有帮助。

答案 1 :(得分:4)

无需更改app / code / local / Mage / Catalog / Model / Category.php

可以通过这些代码轻松完成...尝试这个......它的作品

$child= Mage::getSingleton('catalog/layer')->getCurrentCategory()->getId();

$imageSrc = Mage::getModel('catalog/category')->load($child)->getThumbnail();

$ThumbnailUrl = Mage::getBaseUrl('media').'catalog/category/'.$imageSrc;

echo "<img src='{$ThumbnailUrl}' />";

答案 2 :(得分:2)

这对我有用:

<img src="http://etienneaigner.com/shop/media/catalog/category/
     <?php echo Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail(); ?>"

     height="338px" width="338px"
     alt="<?php echo $this->htmlEscape($_category->getName()) ?>" />

答案 3 :(得分:1)

刚刚遇到了这个答案。但是,在后来的magento 1.7+版本中,不需要为代码添加开销,您可以通过config.xml向Category集合添加更多标准(和自定义)eav属性。如果您检查Mage / Catalog / etc / config.xml,您会在节点下注意到有节点:

   <category>
        <collection>
            <attributes>
                <name/>
                <url_key/>
                <is_active/>
            </attributes>
        </collection>
    </category>

因此,您可以创建自己的模块并添加更多的eav属性:

    <category>
        <collection>
            <attributes>
                <thumbnail/>
                <image/>
            </attributes>
        </collection>
    </category>

它们将被添加到您的类别集合中。