2012-08-29 16 views
6

Ho provato tutti i tipi di cose e non riesco ad arrivare da nessuna parte. Per favore qualcuno dovrebbe mostrarmi come ottenere il nome e l'identificativo di tutti gli insiemi di attributi del prodotto disponibili? Uno sarà 'Default' ...Magento ottenere gli attributi e gli ID di attributo disponibili dallo script esterno

Sto costruendo un sistema di quotazione personalizzato e ho bisogno di inserire i set di attributi in modo che gli utenti possano selezionarli prima di caricare i prodotti che sono assegnati a quel set.

Molte grazie per il vostro aiuto.

risposta

12

È possibile caricare l'attributo set con:

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

Iterate:

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

È possibile quindi caricare la vostra collezione dal set di attributi.

+0

Perfetto! Molte grazie :) –

+1

Il codice restituisce tutti i set di attributi. Volevo solo quelli che sono stati visti in "Ammin.> Attributi> Gestisci set di attributi". Aggiungi alla collezione: // Siamo interessati solo a set che possono essere utilizzati per prodotti, aggiungere un filtro. // Basato su Mage_Adminhtml_Block_Catalog_Product_Attribute_Set_Grid -> _ prepareCollection() e // Mage_Adminhtml_Catalog_Product_SetController -> _ setTypeId() $ entity_type = Mage :: getModel ('/ Catalogo della merce') -> getResource() -> getTypeId(); $ attributeSetCollection-> setEntityTypeFilter ($ entity_type); NB Affinché ciò funzioni, rimuovere la parte '-> load()'. – Mondane

2

Così come si sta tentando di ottenere i attributeSets che lasciano intravedere nella sezione set di attributi di amministratore gestire è possibile seguire la codifica di seguito:

<?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>"; 
?> 

Click here! Per più riferimento

0

Se si desidera ottenere un set selettore di attributo nel vostro Magento System Admin> Configurazione questa classe sarà utile:

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; 
    } 

} 

Questi attributo imposta sono limitati dalla catalog_product tipo di entità.

Infatti sarà necessario il campo nel system.xml come questo:

<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> 
Problemi correlati