Почему фильтры не работают после загрузки коллекции?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Хыиуду
  • Группа: Пользователь
  • Сообщений: 56
  • Регистрация: 05.07.2012

13.08.2012 13:06

app\design\frontend\default\goldsy\template\catalog\product\list.phtml
$_productCollection=$this->getLoadedProductCollection();
// $_productCollection->getSize() возвращает 591
$_productCollection
	->addFieldToFilter('has_picture',array('eq'=>1))
	->addFieldToFilter('visibility',array('eq'=>4));	
$_productCollection->clear()->load();
// Здесь сформировался и выполнился новый запрос, который возвращает 373 элемента, проверено непосредственным выполнением его в СУБД
// $_productCollection->getSize() все еще возвращает 591

Что нужно сделать, чтобы $_productCollection->getSize() вернул правильное значение 373?

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

13.08.2012 13:13

Фильтры разрешено устанавливать только до загрузки коллекции. После — нельзя.

#3 Хыиуду
  • Группа: Пользователь
  • Сообщений: 56
  • Регистрация: 05.07.2012

13.08.2012 14:49

А в каком модуле происходит загрузка коллекции? Просто дело в том, что вышеприведенный код выдает коллекцию с нужными 373 элементами, отфильтрованными по указанным признакам, но getSize() все равно возвращает старое значение

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

13.08.2012 14:59

getLoadedProductCollection

#5 Хыиуду
  • Группа: Пользователь
  • Сообщений: 56
  • Регистрация: 05.07.2012

17.08.2012 17:15

Переформулирую вопрос: в каком файле вызывается app\design\frontend\default\default\template\catalog\product\list.phtml? Где можно обратиться к коллекции, которая в list.phtml вызывается через $this->getLoadedProductCollection()?

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

17.08.2012 17:23

Одна тема — один вопрос

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