attributo di testo nella navigazione a strati
-
16-10-2019 - |
Domanda
Come posso fare un attributo di testo a disposizione della navigazione a strati?
Nel amministratore non è possibile impostare un attributo filtrabile se non è un tipo discesa o prezzo.
posso preoccupare delle implicazioni frontend di questo, ma vorrei sapere l'approccio migliore per aprire questo fino a campi di testo e rendere possibile per l'attributo di testo da caricare con l'elenco dei filtri.
Soluzione
Riferimento Mage_Catalog_Model_Resource_Eav_Attribute::isIndexable()
, che viene utilizzato per l'indicizzatore EAV per controllare se un dato attributo può essere incluso nell'indice navigazione stratificato.
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;
}
Per fare altri tipi di ingresso indicizzabili, è necessario riscrivere questo modello risorsa attributo (o specificare un modello personalizzato che fa riferimento a un modello di risorse personalizzato nella proprietà eav_attribute.attribute_model
per il vostro attributo.
Il motivo per cui l'indicizzatore EAV ha questa limitazione, è perché sa come elaborare valori interi. Lo stesso vale per il modello di filtro attributo di navigazione a strati.
Se i valori sono calcinabile a numeri interi, si sarà in grado di farla franca con l'utilizzo di un valore varchar o testo.
In caso contrario, si dovrà riscrivere il modello di filtro attributo per elaborare correttamente i valori, o implementare il proprio modello di filtro personalizzato.
Altri suggerimenti
Dovrebbe essere possibile aggiungere un osservatore dei prodotti di risparmio e quindi estendere selezione multipla per aggiungere campo di testo con possibile nuovo valore di attributo in modo utente quindi possibile scegliere il valore attributo esistente o aggiungerne uno nuovo. E su Save si aggiunge ai valori degli attributi.