2016-01-19 2 views
0

Используемый мною случай, в котором я работаю, таков, что все продукты отмечены is_in_stock = 1, потому что предметы можно приобрести независимо от того, физически они находятся под рукой или нет. Однако мне нужно показать только то, что имеет значение qty больше нуля. Если пользователь решает, что они хотят видеть только что.Использовать qty в отфильтрованной навигации [magento EE]

Я выяснил, как выбрать правильный сбор, присоединив таблицу cataloginventory/stock_item с текущей коллекцией и фильтрацией для количества. Тем не менее, я немного в темноте о том, как применять это на интерфейсе, и какие побочные эффекты это может иметь, поскольку «qty» никогда не передается в solr.

$collection = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addAttributeToSelect('*') 
    ->joinField('qty', 
       'cataloginventory/stock_item', 
       'qty', 
       'product_id=entity_id', 
       '{{table}}.stock_id=1', 
       'left') 
    ->addAttributeToFilter('qty', array("gt" => 0)); 

Если кто-то с опытом работы с EE слоистую нав имеет любой входной сигнал на лучший подход принять, советы будут оценены, спасибо.

ответ

0

Невозможно опубликовать комментарий на это время.

Попытка понять ваше заявление о проблеме. Вот что я понимаю из вашего заявления.

  1. Продукты можно приобрести, когда они находятся на складе, и когда они находятся вне складе
  2. В настоящее время, вы не хотите, чтобы отобразить Нет на складе продуктов в категории и поиск Страницы. Вы хотите отображать ТОЛЬКО на складе.

Сообщите мне, если мое понимание верное.

Если это так, это можно легко сделать с панели ADMIN.

  1. Navigate Система> Конфигурация> Каталог> Инвентарь> Акции и опционы> Дисплей из запаса продуктов> Да/Нет
  2. Установите значение Да, чтобы сделать продукты видимым по категориям и поиск (MySQL/SOLR).
  3. Установите это в положение «Нет», чтобы сделать продукты невидимыми на страницах категорий и поиска. Однако в этом случае URL-адрес продукта все равно будет работать нормально.

При использовании фильтрованной навигации условие STOCK не проверяется. Он проверяет СОСТОЯНИЕ И ВИДИМОСТЬ

Вышеупомянутый блок кода написан с точки зрения эффективности. Означает ли это, что вы собираетесь использовать QTY для целей фильтрации?

Если это так, и если вы используете MySQL/SOLR для поиска, сборка продукта должна быть изменена с использованием упомянутого выше кодового блока.

Это не влияет отрицательным образом, если используется, как показано ниже:

После окончательного сбора формируется с использованием всех необходимых атрибутов фильтров - по умолчанию Magento, а затем добавить блок кода.

** Не создавайте экземпляр коллекции, используя код, упомянутый выше.

$collection->joinField('qty', 
      'cataloginventory/stock_item', 
      'qty', 
      'product_id=entity_id', 
      '{{table}}.stock_id=1', 
      'left') 
->addAttributeToFilter('qty', array("gt" => 0)); 

Я не уверен, смогу ли я ответить на ваш вопрос. Тем не менее, это несколько основных моментов в отношении фильтрованной навигации, поиска SOLR/MySQL, категории и страниц поиска. W.r.t В запасах/вне продуктов.

Смежные вопросы