Mehrfachauswahl in der Ebenen-Navigation

8

Ich habe ein benutzerdefiniertes Multi-Select-Attribut, an dem ich beim Filtern von Produkten teilnehmen möchte. Das Attribut wird so eingestellt, wie es in der Ebenen-Navigation verwendet wird, erscheint jedoch nicht in der Liste der verfügbaren Filter. Könnte es an der Implementierung eines benutzerdefinierten Modells liegen? Hat jemand Tipps, wo er nachsehen kann, warum er nicht erscheint? Attribut ist für mehrere Produkte festgelegt Die verwendete Magento-Version ist EE 1.11

Danke

    
Zifius 29.09.2011, 12:39
quelle

3 Antworten

10

Was ist der backend_type ? d. h. sind die Werte in der Tabelle catalog_product_entity_varchar oder catalog_product_entity_text gespeichert? Der backend_type muss mit den Überprüfungen in Mage_Catalog_Model_Resource_Eav_Attribute :: isIndexable () übereinstimmen, so dass Text nicht funktionieren würde, ohne das Attributmodell neu zu schreiben.

Ist die Eigenschaft is_filterable und / oder is_filterable_in_search Attribut festgelegt?
Das Mage_Catalog_Model_Product_Indexer_Eav :: _ registerCatalogAttributeSaveEvent () überprüft diese beim Aktualisieren des Index für die Navigation in Ebenen.

Sind die Methoden getFlatColums () , getFlatIndexes () und getFlatUpdateSelect () im benutzerdefinierten Quellmodell ?
Dies ist nur für das Erstellen und Aktualisieren der Flat-Catalog-Produkttabellen erforderlich (daher muss die Eigenschaft used_in_product_listing oder is_filterable gesetzt sein, damit Magento das Attribut übernehmen kann).
Überprüfen Sie die Klasse Mage_Eav_Model_Entity_Attribute_Source_Table als Referenz, was diese Methoden zurückgeben sollen.

    
Vinai 03.10.2011, 10:00
quelle
12

Für diejenigen, die in Zukunft damit zu kämpfen haben: Das Problem liegt in der Datei Mage_Catalog_Model_Resource_Product_Indexer_Eav_Source in Zeile 191. Standardmäßig werden Multiselect-Attributwerte aus eav_attribute_option gezogen, und wenn Ihr benutzerdefiniertes Attribut ein benutzerdefiniertes Quellenmodell verwendet, wird das Attribut verwendet wird nicht indiziert.

Ich weiß noch nicht, ob es beabsichtigt ist, aber ich konnte keine bessere Lösung finden, als dieses Modell in local pull zu überschreiben und erforderliche Werte in $options array hinzuzufügen.

Hoffe das hilft jemandem irgendwann.

    
Zifius 04.10.2011 17:39
quelle
8

HINWEIS: Ich füge das in einer neuen Antwort hinzu, um das Codeformat zu verwenden.

Wie gesagt wurde, ist das Problem bei multiselect Attributen, die ein benutzerdefiniertes Quellenmodell verwenden.

Lösung: Schreiben Sie die Klasse neu

%Vor%

Überschreiben Sie die Methode:

%Vor%

fügen Sie diesen Code hinzu, nachdem das $ options-Array mit dem Standardcode gefüllt wurde (überprüfen Sie Zeile 200 in der Originaldatei)

%Vor%

füge auch diese Methode hinzu:

%Vor%

Ich konnte keine weniger aufdringliche Art finden, das zu beheben.

    
Enrique 17.07.2014 18:12
quelle