我正在尝试使用Magento类别缩略图,但是它不起作用。我在线上关注了许多教程(例如http://www.douglasradburn.co.uk/getting-category-thumbnail-images-with-magento/),
他们都提到了该功能:

$_category->getThumbnail()

应该在类别模型中。我正在运行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/

在菜单中包含类别缩略图。

谢谢
Ť

最佳答案

就其值(value)而言,您的解决方案有效,但效率很低。

使用:

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并了解已编写了哪些非常酷的收集函数。对于Magento开发人员而言,掌握EAV收藏集就像是通过仪式。完成此操作后,您将势不可挡!

希望这可以帮助。

关于Magento分类缩略图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10644443/

10-16 08:57