Frage

Ich habe in meinem Modul ein Custom_Stock_Status -Attribut mit 'int' Backend -Typ und vier Optionen in Ressource erstellt.

array(
4 => 'In Stock',
3 => 'Soon',
2 => 'Out Of Stock',
1 => 'Discontinued',
);

Der Code, den ich für diese Attributerstellung verwende:

class Jetkharid_Catalog_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup
{
  public function getDefaultEntities()
  {
    return array(
      'catalog_product'             => array(
        'entity_model'                   => 'catalog/product',
        'attribute_model'                => 'catalog/resource_eav_attribute',
        'table'                          => 'catalog/product',
        'additional_attribute_table'     => 'catalog/eav_attribute',
        'entity_attribute_collection'    => 'catalog/product_attribute_collection',
        'attributes'                     => array(
          'jetkharid_stock_status'             => array(
            'type'                       => 'int',
            'label'                      => 'Stock Status',
            'input'                      => 'select',
            'source'                     => 'jetkharid_catalog/product_attribute_source_stock_status',
            'required'                   => true,
            'is_configurable'            => false,
            'global'                     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
            'group'                      => 'General Information',
            'searchable'                 => true,
            'used_in_product_listing'    => true,
            'user_defined'               => false,
            'default'                    => 4,
          ),
        ),
      ),
    );
  }
}

Und dies ist meine Quelle für diese Attributoptionen:

class Jetkharid_Catalog_Model_Product_Attribute_Source_Stock_Status extends Mage_Eav_Model_Entity_Attribute_Source_Abstract 
{
  public function getAllOptions()
  {
    if (!$this->_options) {
      $this->_options = array(
        array(
          'value' => 4,
          'label' => Mage::helper('jetkharid_catalog')->__('In Stock')
        ),
        array(
          'value' => 3,
          'label' => Mage::helper('jetkharid_catalog')->__('Soon'),
        ),
        array(
          'value' => 2,
          'label' => Mage::helper('jetkharid_catalog')->__('Out Of Stock'),
        ),
        array(
          'value' => 1,
          'label' => Mage::helper('jetkharid_catalog')->__('Discontinued'),
        )
      );
    }
    return $this->_options;
  }
}

Jetzt möchte ich meine Sammlung nach diesem Attribut sortieren, aber es scheint nicht zu funktionieren!

Wie soll ich es machen?!

Danke Leute.

War es hilfreich?

Lösung

Für die benutzerdefinierten Quellattribute müssen Sie die Methode implementieren addValueSortToCollection Um es zum Laufen zu bringen.
Diese Methode wird in aufgerufen Mage_Catalog_Model_Resource_Product_Collection::addAttributeToSort
Schauen Sie sich diesen Code insbesondere an:

        $attrInstance = $this->getEntity()->getAttribute($attribute);
        if ($attrInstance && $attrInstance->usesSource()) {
            $attrInstance->getSource()
                ->addValueSortToCollection($this, $dir); 
            return $this;
        }

Verwenden Sie die Methode in dieser Klasse als Beispiel Mage_Catalog_Model_Product_Status.
Dies wird verwendet, wenn die Produkte nach Status sortiert werden.
Ich weiß, dass es lange verwirrend ist, aber ich denke, Sie können den gleichen Code wie in dieser Klasse verwenden. (Ich bin mir allerdings nicht sicher).

Andere Tipps

Gehen Sie zu Attributen. Wählen Sie Ihr Attribut für Bearbeiten und Setzen aus Verwendet in der Produktliste zu ja.

NotizSie können das Problem nach dem Hinzufügen eines neuen Attributs haben. Der Standardwert für neue Attribute wird nicht auf vorhandene Produkte festgelegt. Gehen Sie dazu zu Produktnetze und in Massenaktionen. Wählen Sie Aktualisierungsattribute aus und setzen Sie einen Wert Ihres neuen Attributs für alle Produkte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top