Вопрос

В списке продуктов я показываю производителя, и все работает нормально. Но когда я делаю поиск, вместо того, чтобы показывать имя производителя, он показывает Нет. Я использую следующий код, чтобы показать бренды:

$_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product)

Я использую Magento 1.7.0.2.

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

Решение

Диагностика вашей реальной проблемы:

  • Убедитесь, что сбор продуктов, используемый для поиска, включает в себя атрибут производителя или что атрибут производителя установлен в бэкэнд, чтобы отобразить на фронте (см. Скриншот ниже).
  • Убедитесь, что manufacturer ATTR установлен для Соответствующий вид магазина! В представлении «Редактирование продукта» в каталоге убедитесь, что раскрывающийся список устанавливается для значения вида магазина, Не в магазине/веб -сайт/представление по умолчанию.
  • Убедитесь, что вы переоценили. Если вы находитесь на CE, запустите индексеров вручную. Если в EE убедитесь, что ваши индексы обновляются от Cron или через $ php shell/indexer.php reindexall.
  • Очистите все ваши кэши. Снижение кеша. rm -rf var/cache и все разрушительные вещи. Проверьте наличие /tmp/magento папка.
  • Отключить/включить плоский каталог и реиндекс.

Включение атрибута для страницы Frontend/Product Page/Collection Visibility:

enter image description here

Почему это происходит:

Итак, есть Уважительная причина Почему Magento возвращает «нет», когда нет доступных данных. Метод getFrontend возвращает объект, который является подклассом Mage_Eav_Model_Entity_Attribute_Frontend_Abstract.

В методе getValue, если нет доступных вариантов / установки, по умолчанию по умолчанию выводится логический. Таким образом, значение «Нет», которое является логическим эквивалентом логического эквивалента false:

public function getValue(Varien_Object $object)
{
    $value = $object->getData($this->getAttribute()->getAttributeCode());
    if (in_array($this->getConfigField('input'), array('select','boolean'))) {
        $valueOption = $this->getOption($value);
        if (!$valueOption) {
            $opt     = Mage::getModel('eav/entity_attribute_source_boolean');
//....

После того, как вышеупомянутые пункты устранения неполадок будут выполнены - если вы все еще получаете «нет», и это подходящий ответ (например, у вас нет производителя, установленного на продукт, и нарочно), вы можете условно проверить вывод перед эхом:

$value = $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product);
echo $value=="No" ? "" : $value;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top