#php #magento #magento2
#php #magento #magento2
Вопрос:
Я работаю над пользовательским плагином, мне нужно переопределить результаты поиска товаров по каталогу.
например, всегда добавление удаление некоторого продукта в результат.
Что-то вроде the_posts
фильтра WordPress.
Если это невозможно, могу ли я переопределить результат поиска по каталогу html?
Ответ №1:
Да, вы можете переопределить результат поиска по каталогу, выполнив следующие изменения в вашем пользовательском модуле в вашем контроллере
<?php
namespace VendorModuleControllerSearch;
class Result extends MagentoCatalogSearchControllerResultIndex
{
public function execute($coreRoute = null)
{
return parent::execute($coreRoute);
}
}
В вашем блоке
<?php
$query = $this->getRequest()->getParam('q');
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$productFactory = $objectManager->create('MagentoCatalogModelProductFactory');
$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; ?>
И, наконец, ваш vendor/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>