Question

Comment puis-je faire un attribut de texte disponible pour la navigation en couches?

Dans l'administration, il est impossible de définir un attribut à filtrables si elle est pas un type de menu déroulant ou le prix.

Je peux vous soucier des conséquences frontend de cela, mais je voudrais savoir la meilleure approche pour ouvrir ce à des champs de texte et de le rendre possible pour l'attribut texte à charger la liste des filtres.

Était-ce utile?

La solution

Référence Mage_Catalog_Model_Resource_Eav_Attribute::isIndexable(), qui est utilisé par l'indexeur EAV pour vérifier si un attribut donné peut être inclus dans l'index de navigation en couches.

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;
}

Pour d'autres types d'entrée indexables, vous avez besoin de réécrire ce modèle de ressource d'attribut (ou spécifier un modèle personnalisé qui fait référence à un modèle de ressource personnalisée dans la propriété eav_attribute.attribute_model pour votre attribut.

La raison pour laquelle l'indexeur EAV a cette limitation, est parce qu'il ne sait comment traiter les valeurs entier. La même chose est vraie pour le modèle de filtre d'attribut de navigation en couches.
Si vos valeurs sont castées entiers, vous serez en mesure de se contenter d'utiliser une valeur varchar ou texte.
Sinon, vous devrez réécrire le modèle de filtre d'attribut pour traiter correctement vos valeurs, ou mettre en œuvre votre propre modèle de filtre personnalisé.

Autres conseils

Il devrait être possible d'ajouter un observateur sur le produit de sauvegarde, puis étendre de sélection multiple pour ajouter le champ de texte avec une nouvelle valeur d'attribut possible si l'utilisateur peut alors choisir soit la valeur d'attribut existante ou ajouter une. Et sauver, il est ajouté aux valeurs d'attribut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top