访问Magento搜索结果集合

amrnrhlw  于 2022-11-12  发布在  其他
关注(0)|答案(4)|浏览(130)

我需要获得Magento搜索结果返回的skus列表。我四处查看并在Google上搜索,但在搜索结果页面上显示产品时无法找到这些产品的来源。我打开了searchresults.phtml文件。看起来当调用$this->getChildHtml('content')时,产品会在那里循环,但我认为core/有一些魔力无论如何,我想访问搜索结果提供的产品集合,并在searchresults.phtml文件中循环。
编辑:只是澄清一下,我真正需要的是访问来自搜索结果的产品集合。
编辑:原来searchresults.phtml是一个自定义页面。

omvjsjqw

omvjsjqw1#

在app/design/frontend/{package}/{theme}/catalog/product/list.phtml中有一行代码:

$_productCollection=$this->getLoadedProductCollection();

如果您想在该模板中获取所有SKU(每页不受限制),您可以执行以下操作:

$select = clone $_productCollection->getSelect();
$select
        ->reset(Zend_Db_Select::LIMIT_COUNT)//remove this line if you want list of skus belonging only to current page
        ->reset(Zend_Db_Select::LIMIT_OFFSET) // and this one too
        ->reset(Zend_Db_Select::COLUMNS)
        ->reset(Zend_Db_Select::ORDER)
        ->columns('sku');
$all_skus = Mage::getSingleton('core/resource')->getConnection('core_read')->fetchCol($select,'');
yk9xbfzb

yk9xbfzb2#

目录搜索

在类下扩展

\app\code\core\Mage\CatalogSearch\Block\Advanced\Result.php

在result.php中创建新函数

protected function skuProductCollection(){
        return $this->getSearchModel()->getProductCollection()->getColumnValues('sku');
    }

并在您的phtml文件中编写以下代码

<?php $allSku = $this->skuProductCollection() ?>
<?php print_r($allSku); ?>

我希望这对你有帮助

wlsrxk51

wlsrxk513#

在意识到我使用的是自定义模板后,我现在看到可能有两个地方需要解决:
目录搜索/结果.phtml
目录搜索/高级/结果.phtml
对于result.phtml,块是 Mage _CatalogSearch_Block_Result。在那个块中,你可以调用$this->_productCollection()。sku在集合中。我假设高级也是如此。
编辑:对于高级搜索,您必须使用$this->getChild('search_result_list')->_productCollection

ufj5ltwl

ufj5ltwl4#

在类的构造函数中注入:

\Magento\Catalog\Model\Layer\Search $collectionProducts

然后你可以检索搜索结果集合,与搜索页面上的完全一样:

$collection = $this->collectionProducts->getProductCollection();

相关问题