magento 如何获取属性集名称?

z31licg0  于 2022-12-27  发布在  其他
关注(0)|答案(5)|浏览(139)

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

d5vmydt9

d5vmydt91#

请尝试以下代码:

$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中查找有关属性集的更多信息。
谢啦,谢啦

fivyi3re

fivyi3re2#

乔的回答需要做几处修改才能奏效。
首先,它应该是$_product而不是$product,其次,最后一行中有一个错误的“)”。
下面的代码应该是正确的:

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

uoifb46i3#

如果用户决定稍后更改文本,与文本值进行比较可能会出现问题--这在Magento的属性集中很容易做到。另一个选择是使用底层ID,它永远不会更改。
您可以通过使用以下命令查找数据库中attribute_set_id列的值来获取此值

select * from eav_attribute_set;

此编号也位于admin中的编辑链接中,该链接在下面以粗体显示

    • 10**/密钥/6 fe 89 fe 2221 cf2 f80 b82 ac 2ae 457909 ce 04 c92 c51716 b3 e474 ecad 672 a2 ae 2f 3/

然后,您代码将简单地使用产品的属性。基于上面链接中的id 10,这将是

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

busg9geu4#

只要有产品对象,就可以访问其属性集,如下所示:

$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');
}
7gcisfzg

7gcisfzg5#

为了更性感,你可以缩短为:

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

相关问题