atributo de texto en la navegación por capas
-
16-10-2019 - |
Pregunta
¿Cómo puedo hacer un atributo de texto a disposición de la navegación por capas?
En el administrador no es posible establecer un atributo para filtrar si no es una lista desplegable o precio tipo.
Me puede preocuparse de las consecuencias de este frontend, pero le gustaría saber la mejor manera de abrir esto a los campos de texto y hacer posible que el atributo de texto se va a cargar con la lista de filtros.
Solución
Mage_Catalog_Model_Resource_Eav_Attribute::isIndexable()
de referencia, que es utilizado por el indexador EAV para comprobar si un atributo dado puede estar incluido en el índice de navegación en capas.
public function isIndexable()
{
// exclude price attribute
if ($this->getAttributeCode() == 'price') {
return false;
}
if (!$this->getIsFilterableInSearch() && !$this->getIsVisibleInAdvancedSearch() && !$this->getIsFilterable()) {
return false;
}
$backendType = $this->getBackendType();
$frontendInput = $this->getFrontendInput();
if ($backendType == 'int' && $frontendInput == 'select') {
return true;
} else if ($backendType == 'varchar' && $frontendInput == 'multiselect') {
return true;
} else if ($backendType == 'decimal') {
return true;
}
return false;
}
Para realizar otros tipos de entrada indexable, es necesario volver a escribir este modelo de recursos atributo (o especificar un modelo personalizado que se refiere a un modelo de recurso personalizado en la propiedad eav_attribute.attribute_model
para su atributo.
La razón por la cual el indexador EAV tiene esta limitación, se debe a que sólo sabe cómo procesar valores enteros. Lo mismo es cierto para el modelo de filtro de atributos de navegación por capas.
Si sus valores son moldeables a números enteros, usted será capaz de salirse con la utilización de un valor varchar o texto.
De lo contrario, tendrá que volver a escribir el modelo de filtro de atributos para procesar correctamente sus valores, o implementar su propio modelo de filtro personalizado.
Otros consejos
Debería ser posible añadir un observador en el producto en Guardar y luego extender selección múltiple para añadir campo de texto con posible valor nuevo atributo para que el usuario puede entonces elegir entre valor de atributo existente o agregar uno nuevo. Y en guardar se añade a los valores de atributo.