Magento从外部脚本获取可用的属性集ID和名称

时间:2012-08-29 10:52:59

标签: php magento magento-1.7

我尝试过各种各样的事情而且我没有到达任何地方。请有人告诉我如何获取所有可用产品属性集的名称和ID?一个是'默认'......

我正在构建一个自定义引用系统,需要引入属性集,以便用户可以先选择,然后加载分配给该集的产品。

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:12)

您可以使用以下内容加载属性集:

$attributeSetCollection = Mage::getResourceModel('eav/entity_attribute_set_collection') ->load();

迭代:

foreach ($attributeSetCollection as $id=>$attributeSet) {
  $entityTypeId = $attributeSet->getEntityTypeId();
  $name = $attributeSet->getAttributeSetName();
  Mage::log("ATTRIBUTE SET :".$name." - ".$id);
}

然后,您可以按属性集加载您的收藏。

答案 1 :(得分:2)

因此,当您尝试获取admin的manage属性集部分中显示的attributeSets时,您可以按照以下编码:

<?php
      require_once('app/Mage.php');
      umask(0);
      Mage::app();//->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
      $entityType = Mage::getModel('catalog/product')->getResource()->getTypeId();
      $collection = Mage::getResourceModel('eav/entity_attribute_set_collection')->setEntityTypeFilter($entityType);
      $allSet = array();
      foreach($collection as $coll){
         $attributeSet['name'] = $coll->getAttributeSetName();
         $attributeSet['id'] = $coll->getAttributeSetId();
         $allSet[] = $attributeSet;
      }
      echo "<pre>";
      print_r($allSet);
      echo "</pre>";
?>

点击here!有关更多参考。

答案 2 :(得分:0)

如果您想在Magento管理系统中获取属性集选择器&gt;配置此类将非常有用:

class CompanyName_ModuleName_Model_System_Config_Source_Catalog_Product_Attributeset
{

    protected $_options = array();

    public function toOptionArray()
    {
        if (!count($this->_options)) {
            $entityTypeId           = Mage::getResourceModel('catalog/product')->getTypeId();
            $attributeSetCollection = Mage::getResourceModel('eav/entity_attribute_set_collection')
                    ->setEntityTypeFilter($entityTypeId);

            foreach ($attributeSetCollection as $_attributeSet) {
                $this->_options[] = array(
                    'value' => $_attributeSet->getId(),
                    'label' => $_attributeSet->getAttributeSetName()
                );
            }
        }
        return $this->_options;
    }

}

这些属性集受 catalog_product 实体类型的限制。

确实,您需要 system.xml 中的字段,如下所示:

<select_attribute_set translate="label">
    <label>Default Attribute Set for new importing products</label>
    <frontend_type>select</frontend_type>
    <source_model>companyname_modulename/system_config_source_catalog_product_attributeset</source_model>
    <sort_order>30</sort_order>
    <show_in_default>1</show_in_default>
</select_attribute_set>