如何获取属性集名称?

时间:2010-01-19 05:43:40

标签: magento attributes

我正在尝试在Magento产品视图模板中获取属性集名称。我可以通过$_product->getAttributeText('attribute')获取属性值,但是如何获取属性集名称?

我想仅在属性属于特定属性集时显示属性。

5 个答案:

答案 0 :(得分:70)

每当有产品对象时,您都可以访问其属性集:

$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($product->getAttributeSetId());
$attributeSetName  = $attributeSetModel->getAttributeSetName();

这将为您提供属性集的名称,然后您可以使用strcmp:

进行比较
if(0 == strcmp($attributeSetName, 'My Attribute Set')) {
    print $product->getAttributeText('attribute');
}

希望有所帮助!

答案 1 :(得分:24)

为了获得更多性感,您可以将其缩短为:

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

答案 2 :(得分:13)

请尝试以下代码:

$entityTypeId = Mage::getModel('eav/entity')
                ->setType('catalog_product')
                ->getTypeId();
$attributeSetName   = 'Default';
$attributeSetId     = Mage::getModel('eav/entity_attribute_set')
                    ->getCollection()
                    ->setEntityTypeFilter($entityTypeId)
                    ->addFieldToFilter('attribute_set_name', $attributeSetName)
                    ->getFirstItem()
                    ->getAttributeSetId();
echo $attributeSetId;

following article中找到有关属性集的更多信息。

由于

答案 3 :(得分:1)

Joe的回答需要进行一些改动才能使其发挥作用。

首先它应该是$ _product而不是$ product,其次在最后一行有一个错误的')'。

以下代码应该是正确的:

$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($_product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();

答案 4 :(得分:0)

如果用户决定稍后更改该文本,则与文本值相比可能会出现问题 - 这在Magento中很容易为属性集做。另一种选择是使用底层id而不会改变它。

您可以使用

在数据库中查找attribute_set_id列的值来获取此信息
select * from eav_attribute_set;

这个号码也在admin的编辑链接中,在下面以粗体显示

http://.../index.php/admin/catalog_product_set/edit/id/ 10 /键/ 6fe89fe2221cf2f80b82ac2ae457909ce04c92c51716b3e474ecad672a2ae2f3 /

您的代码将只使用该产品的属性。基于上面链接中的id为10,这只是

if (10 == $_product->getAttributeSetId()) {
  //Do work
}