Magento неверный счетчик продуктов, когда предел = все на странице списка продуктов - PullRequest
2 голосов
/ 10 марта 2011

В процессе обновления сайта Magento до 1.4 до версии 1.4.1.2 я столкнулся с проблемой.На страницах просмотра списка продуктов опция просмотра всех продуктов показывает только 10 (в категориях с более чем 10 продуктами).Вот некоторые соответствующие настройки из раздела каталога конфигурации системы:

List Mode: Grid Only
Products per Page on Grid Allowed Values: 8,16,32
Products per Page on Grid Default Value: 8
Allow All Products per Page: Yes

Нет явных ограничений, установленных в файле макета THEME / layout / catalog.xml.

О продуктепросмотр списка, если для параметра «limit» установлено одно из допустимых целочисленных значений (8,16,32), листинг работает так, как ожидалось.Но если используется параметр limit = all, отображаются только 10 товаров.

Используя расширение firephp для просмотра страницы со списком продуктов для категории с 184 продуктами, я вижу следующее:

limit=16
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->count() returns 16
THEME/template/catalog/product/list/toolbar.phtml: $this->getCollection()->getSize() returns 184

limit=all
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->count() returns 10
THEME/template/catalog/product/list/toolbar.phtml: $this->getCollection()->getSize() returns 184

Я посмотрел в методе _getProductCollection () в Mage_Catalog_Block_Product_List, но не вижу нигде установленного лимита запроса.Любые идеи, откуда исходит этот предел в 10 или как заставить "все" лимит работать правильно?

Обновление

count () и getSize () возвращают различные значения в THEME / template / catalog / product / list.phtml

limit=16
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->count() returns 16
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->getSize() returns 184
THEME/template/catalog/product/list/toolbar.phtml: $this->getCollection()->getSize() returns 184

limit=all
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->count() returns 10
THEME/template/catalog/product/list.phtml: $this->getLoadedProductCollection()->getSize() returns 184
THEME/template/catalog/product/list/toolbar.phtml: $this->getCollection()->getSize() returns 184

Это происходит только в моей пользовательской теме.Если я переключаю тему на «базовый» пакет, условие limit = all возвращает 184 продукта для count () и getSize ().Моя пользовательская тема имеет только незначительные изменения разметки / CSS в list.phtml (код PHP такой же).

1 Ответ

0 голосов
/ 11 марта 2011

Пейджер был виновником. Тема до версии 1.4 Magento использовала некоторую логику пейджера в ТЕМЕ / template / catalog / category / view.phtml. В 1.4.x Пейджер был пересмотрен, и ему необходимо установить явный лимит для использования на странице просмотра категорий

В данном случае сообщение о возвращении домой заключается в том, что, если вы обнаружите, что создаете экземпляр «product_list_toolbar_pager», убедитесь, что вы установили ограничение на то же ограничение, которое используется на панели инструментов.

...