Вопрос

Как сделать текстовый атрибут доступным для слоистой навигации?

В администраторе невозможно установить атрибут для фильтрации, если он не является раскрыванием или типом цены.

Я могу беспокоиться о последствиях этого фронта, но хотел бы узнать лучший подход, чтобы открыть это в текстовые поля и позволить загрузку текстового атрибута с списком фильтров.

Это было полезно?

Решение

Ссылка Mage_Catalog_Model_Resource_Eav_Attribute::isIndexable(), который используется индексером EAV, чтобы проверить, может ли определенный атрибут быть включен в слоистый индекс навигации.

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

Чтобы сделать другие типы ввода, индексируемые, вам необходимо переписать эту модель ресурса атрибута (или указать пользовательскую модель, которая относится к пользовательской модели ресурса в eav_attribute.attribute_model свойство для вашего атрибута.

Причина, по которой индексатор EAV имеет это ограничение, заключается в том, что он только знает, как обрабатывать целочисленные значения. То же самое относится и к многоуровневой модели фильтра атрибутов навигации.
Если ваши значения подготовлены к целым числам, вы сможете сойти с рук с использованием значения Varchar или текста.
В противном случае вам придется переписать модель фильтра атрибутов, чтобы правильно обработать ваши значения или реализовать собственную модель пользовательского фильтра.

Другие советы

Должно быть возможно добавить наблюдатель в сохранение продукта, а затем расширить несколько выборов, чтобы добавить текстовое поле с возможным новым значением атрибута, чтобы пользователь мог либо выбрать существующее значение атрибута, либо добавить новое. И при сохранении добавляется значения атрибута.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top