Fatal error: Call to a member function getItemByColumnValue() on a non-object

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Рубен Бикбаев
  • Группа: Клиент
  • Сообщений: 95
  • Регистрация: 11.10.2012

28.11.2012 20:11

Появилась ошибка после установки новой темы.
Fatal error: Call to a member function getItemByColumnValue() on a non-object in /var/www/site.com/app/design/frontend/default/shopper/template/catalog/product/list.phtml on line 176 

строка ошибки
$back_img = $_product->getMediaGalleryImages()->getItemByColumnValue('label', 'back');


Как исправить?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

28.11.2012 22:27

Ладно, в порядке исключения на первый раз напишу, как исправить дефект темы.
Причина сбоя в том, что когда Magento загружает список товаров, то Magento загружает не все прикладные свойства этих товаров, а лишь некоторые.
В частности, Magento не загружает перечень всех товарных изображений, потому что в списке товаров, как правило, достаточно лишь одного товарного изображения.
Программисту темы это было невдомек, и в его случае getMediaGalleryImages() возвращает null, даже если у товара есть товарные изображения — просто система их не считает нужным загружать для списка товаров.
Чтобы устранить сбой, надо перед вызовом getMediaGalleryImages загружать для товара все его товарные изображения.
Это делается вызовом
$_product->load ('media_gallery');

В вашей теме это нужно сделать в двух местах:
в шаблоне app/design/frontend/default/shopper/template/catalog/product/list.phtml и в шаблоне app/design/frontend/default/shopper/template/queldorei/priceslider/slider_content.phtml (там тоже происходит вызов getMediaGalleryImages).

#3 Рубен Бикбаев
  • Группа: Клиент
  • Сообщений: 95
  • Регистрация: 11.10.2012

29.11.2012 19:51

Спасибо за подсказку. Добавил вызов, но никаких изменений нету.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

29.11.2012 21:49

Вам надо было ещё перезапустить APC и отключить компиляцию: оба этих инструмента кэшируют программный код и, с одной стороны — ускоряют систему, а с другой — приводят к тому, что изменения в программном коде не сразу сказываются на сайте.

Поделиться темой: