Производитель не работает в поисках
-
16-10-2019 - |
Вопрос
В списке продуктов я показываю производителя, и все работает нормально. Но когда я делаю поиск, вместо того, чтобы показывать имя производителя, он показывает Нет. Я использую следующий код, чтобы показать бренды:
$_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:
Почему это происходит:
Итак, есть Уважительная причина Почему 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;