Коллекция продуктов Magento 2, включающая в себя продукты с видимостью «Поиск» - PullRequest
0 голосов
/ 11 апреля 2020
  1. Я установил все мои товары, чтобы они были видны только через поиск.
  2. на странице категории, у меня есть специальный модуль для поиска товаров по некоторым параметрам. например. Марка, модель.
  3. Я бы хотел, чтобы результаты поиска показывали даже те товары, которые видны как "Поиск". В настоящее время продукты не отображаются.

Как я могу go об этом?

ProductRepository. php

class ProductRepository implements ProductRepositoryInterface
{

/**
 * @var \Amasty\Finder\Api\DropdownRepositoryInterface
 */
private $dropdownRepository;

/**
 * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
 */
private $collectionFactory;

/**
 * @var \Amasty\Finder\Api\FinderRepositoryInterface
 */
private $finderRepository;

/**
 * @var \Amasty\Finder\Helper\Config
 */
private $configHelper;

public function __construct(
    \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory,
    \Amasty\Finder\Api\DropdownRepositoryInterface $dropdownRepository,
    \Amasty\Finder\Api\FinderRepositoryInterface $finderRepository,
    \Amasty\Finder\Helper\Config $configHelper
) {
    $this->dropdownRepository = $dropdownRepository;
    $this->collectionFactory = $collectionFactory;
    $this->finderRepository = $finderRepository;
    $this->configHelper = $configHelper;
}

/**
 * @param \Amasty\Finder\Api\Data\FinderOptionInterface[] $finderOptions
 *
 * @return \Magento\Catalog\Api\Data\ProductInterface[]
 */
public function getProductsByFinderValues($finderOptions)
{
    $collection = $this->collectionFactory->create();
    /** My attempt to filter collection */
    $collection->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_IN_SEARCH);
    /** My attempt end */

    if (isset($finderOptions[0])) {
        $dropdown = $this->dropdownRepository->getById($finderOptions[0]->getDropdownId());
        /** @var \Amasty\Finder\Model\Finder $finder */
        $finder = $dropdown->getFinder();
        $countEmptyDropdowns = $finder->getCnt() - count($finderOptions);
        $lastOption = end($finderOptions);
        $isUniversal = (bool)$this->configHelper->getConfigValue('advanced/universal');
        $isUniversalLast = (bool)$this->configHelper->getConfigValue('advanced/universal_last');
        $isSearchVisible = 

        $this->finderRepository->addConditionToProductCollection(
            $collection,
            $lastOption->getValue(),
            $countEmptyDropdowns,
            $finder->getId(),
            $isUniversal,
            $isUniversalLast
        );
    }

    return $collection->getItems();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...