在Magento中根据属性集名称做一些事情

时间:2012-03-26 11:54:39

标签: magento attributes set

我已经环顾四周,似乎无法找到我在此之后的确切答案,所以我发了一个新帖子。

我需要根据集合是否分配了特定的属性集,在产品列表页面上显示特定的HTML。

产品可以有4个属性集,'服装','靴子','包'和'配件'。

因此,如果该系列具有'包'或'附件'属性集,我想显示一件事以及我想要显示另一件事的任何其他内容。到目前为止我的代码是:

<?php 
                    $bags = Mage::getResourceModel('eav/entity_attribute_set_collection')->setEntityTypeFilter($entityTypeId)->addFilter('attribute_set_name', 'Bags');
                    $accessories = Mage::getResourceModel('eav/entity_attribute_set_collection')->setEntityTypeFilter($entityTypeId)->addFilter('attribute_set_name', 'Accessories');

                    $size_default = $_product -> getResource() -> getAttribute('size') -> getFrontend() -> getValue($_product);
                    $size_clothes_fr = $_product -> getResource() -> getAttribute('size_clothes_fr') -> getFrontend() -> getValue($_product);
                    $size_clothes_uk = $_product -> getResource() -> getAttribute('size_clothes_uk') -> getFrontend() -> getValue($_product);
                    $size_clothes_us = $_product -> getResource() -> getAttribute('size_clothes_us') -> getFrontend() -> getValue($_product);
                    $size_clothes_it = $_product -> getResource() -> getAttribute('size_clothes_it') -> getFrontend() -> getValue($_product);
                    $size_shoes_default = $_product -> getResource() -> getAttribute('size_shoe') -> getFrontend() -> getValue($_product);
                    $size_shoes_fr = $_product -> getResource() -> getAttribute('size_shoes_fr') -> getFrontend() -> getValue($_product);
                    $size_shoes_it = $_product -> getResource() -> getAttribute('size_shoes_it') -> getFrontend() -> getValue($_product);
                    $size_shoes_uk = $_product -> getResource() -> getAttribute('size_shoes_uk') -> getFrontend() -> getValue($_product);
                    $size_shoes_us = $_product -> getResource() -> getAttribute('size_shoes_us') -> getFrontend() -> getValue($_product);
                ?>
                <?php if(trim($bags) || trim($accessories)) { ?>
                    <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" class="product-image"><?php if($_product->isSaleable()): ?><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(140, 255); ?>" width="140" height="255" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" id="product-image-<?php echo $_product->getId() ; ?>" /><?php endif; ?><?php if(!$_product->isSaleable()): ?><img src="<?php echo $this->getSkinUrl('images/masks/white80.png') ?>" width="140" height="255" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" id="product-image-<?php echo $_product->getId() ; ?>" style="background:url('<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(140, 255); ?>') no-repeat center center" /><?php endif; ?></a>
                <?php } else { ?>
                <div class="sizes">
                    <a class="trigger" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" class="product-image"><?php if($_product->isSaleable()): ?><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(140, 255); ?>" width="140" height="255" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" id="product-image-<?php echo $_product->getId() ; ?>" /><?php endif; ?><?php if(!$_product->isSaleable()): ?><img src="<?php echo $this->getSkinUrl('images/masks/white80.png') ?>" width="140" height="255" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" id="product-image-<?php echo $_product->getId() ; ?>" style="background:url('<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(140, 255); ?>') no-repeat center center" /><?php endif; ?></a>
                    <div class="popup">
                        <p class="size_title"><?php echo $size_default ;?></p>
                        <p class="size_title"><?php echo $size_clothes_fr ;?></p>
                        <p class="size_title"><?php echo $size_clothes_it ;?></p>
                        <p class="size_title"><?php echo $size_clothes_us ;?></p>
                        <p class="size_title"><?php echo $size_clothes_uk ;?></p>
                        <p class="size_title"><?php echo $size_shoes_default ;?></p>
                        <p class="size_title"><?php echo $size_shoes_fr ;?></p>
                        <p class="size_title"><?php echo $size_shoes_it ;?></p>
                        <p class="size_title"><?php echo $size_shoes_uk ;?></p>
                        <p class="size_title"><?php echo $size_shoes_us ;?></p>
                    </div>
                </div>
                <?php } ?>

它似乎不起作用,它总是显示else语句。我显然没有在这里做点什么。有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:0)

您的问题(如果您尚未解决)可能是因为您的收藏集未返回正确的数据。你得到的本质上是一组属性集,按名称过滤。这种情况每次都是一样的,因为你在任何时候都不涉及产品。

尝试以这种方式获取名称:

$attSetName = Mage::getModel(’eav/entity_attribute_set’) 
    ->load($_product->getAttributeSetId()) 
    ->getAttributeSetName();

然后比较这个变量:

if ($attSetName == "bags" || $attSetName == "accessories") {

如果您打算返回一个集合,您可能还会遇到问题,因为您正在使用“trim()”php函数。 Trim适用于字符串,因此修剪集合对象可能无法完成您想要的操作。试试这个:

if (count($bags) > 0 || count($accessories) > 0) {