Как я могу переопределить результаты поиска в каталоге в Magento 2? - PullRequest
0 голосов
/ 17 марта 2019

Я работаю над пользовательским плагином, мне нужно переопределить результаты поиска по каталогу товаров.

например, всегда добавлять \ удалять какой-либо товар к результату.

Что-то вроде Wordpress's the_postsфильтр.


Если это невозможно, могу ли я переопределить результат поиска в каталоге html?

1 Ответ

0 голосов
/ 18 марта 2019

Да, вы можете переопределить результаты поиска в каталоге, внеся следующие изменения в свой пользовательский модуль. В вашем контроллере

<?php
namespace Vendor\Module\Controller\Search;
class Result extends \Magento\CatalogSearch\Controller\Result\Index
{
public function execute($coreRoute = null)
{
return parent::execute($coreRoute);
}
}

В вашем блоке

<?php

$query = $this->getRequest()->getParam('q');

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productFactory = $objectManager->create('Magento\Catalog\Model\ProductFactory');
$collection = $productFactory->create()->getCollection();

$query = $this->getRequest()->getParam('q');

?>

<div>
    <form class="form minisearch" id="searchProducts"  method="get">
         <div class="col-xs-12 col-md-6 col-sm-3">
            <input type="text" name="q" id="searchbox" value="" class="searchbox" placeholder="Type here...." />
          </div>
          <div class="col-xs-6 col-md-2 col-sm-3"> 
            <button type="submit" class="btn new-searchbtn action search menu-search" id="submitBtn" title="Search">
              <span class="search-text">search</span>
              <span class="search-icon"></span>
            </button>
          </div>
    </form>
</div>
<?php if ($collection->count()): ?>
<?= $block->getChildHtml('tagged_product_list_rss_link') ?>
<div class="search results container">
    <?php if ($messages = $block->getNoteMessages()):?>
    <div class="message notice">
        <div>
            <?php foreach ($messages as $message):?>
                <?= /* @escapeNotVerified */ $message ?><br />
            <?php endforeach;?>
        </div>
    </div>
    <?php endif; ?>
    <?= $block->getProductListHtml() ?>
</div>
<?php// else: ?>
<?php endif; ?>

И, наконец, ваш поставщик / module / view / frontent / layout / catalogsearch_result_index.xml будет выглядеть следующим образом.

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>

         <referenceBlock name="search.result">
            <action method="setTemplate">
                <argument name="template" xsi:type="string">Vendor_Module::result.phtml</argument>
            </action>
        </referenceBlock>
    </body>
</page>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...