Pregunta

He agregado un atributo:

$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'show_in_subview', array(
    'type'                       => 'varchar',
    'label'                      => 'Show in Subview',
    'input'                      => 'multiselect',
    'backend'                    => 'eav/entity_attribute_backend_array',
    'required'                   => 0,
    'user_defined'               => 0,
    'visible'                    => 1,
    'is_filterable'              => 1,
    'is_configurable'            => 0,
    'sort_order'                 => 14,
    'source'                     => 'ho_subviews/attribute_source_subview',
    'global'                     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'group'                      => 'General',
    'used_in_product_listing'    => true,
));

Como puede ver, he usado una fuente personalizada para llenar el campo Multi Select. Guardar y cargar los valores funciona como un encanto.

El filtrado de la colección se puede hacer usando: $ Collection-> AddAtTributTOfilter ('show_in_subview', array ('finet' => mage :: app ()-> getStore ()-> getCurrentSubViewID ()));

El problema es que la colección no usa índices ya que el tipo de columna no está configurado (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_findinset).

Noté que al agregar un campo normal de selección múltiple, la consulta es una unión en la tabla Catáloga_Product_index_Eav que usa índices y, por lo tanto, será más desempeñada.

No estoy exactamente seguro de dónde buscar usar esta tabla también. Supongo que la clase de backend es responsable de eso (esa fue la única diferencia entre un campo desplegable creado manualmente o lo anterior). Entonces, EAV/Entity_Attribute_Backend_Array no usa la tabla CATALOG_PRODUCT_INDEX_EAV.

  • ¿Cuál es el backend predeterminado que se usa para multiselección o no hay ninguno?
  • ¿Cómo puedo extender EAV/Entity_Attribute_Backend_Array para que use la tabla CATAG_PRODUCT_INDEX_EAV?
¿Fue útil?

Solución

Al final, utilicé un atributo multiselecto predeterminado. Con esa solución, perdemos un poco de flexibilidad, pero dado que las subvisiones no cambian, a menudo no es un problema.

  • El atributo predeterminado usa índices, que es rápido
  • El atributo predeterminado es compatible con el backend de Solr
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top