访问Magento搜索结果集合

时间:2013-10-10 16:51:20

标签: magento search

我需要获取skus搜索结果返回的Magento列表。我环顾四周并用Google搜索,但在搜索结果页面上显示产品时无法找到产品的来源。我打开了searchresults.phtml文件。看起来当调用$this->getChildHtml('content')时产品是循环的,但我认为核心/文本列表有一些神奇之处。无论如何,我想访问搜索结果提供的产品集合,并在searchresults.phtml文件中循环访问。

编辑:只是为了澄清,我真正需要的是访问搜索结果中的产品集。

编辑:结果是searchresults.phtml是一个自定义页面。

3 个答案:

答案 0 :(得分:1)

在app / design / frontend / {package} / {theme} /catalog/product/list.phtml中的

有一条线:

$_productCollection=$this->getLoadedProductCollection();

如果你想在该模板中获得所有skus(不限制每页),你可以这样做:

$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,'');

答案 1 :(得分:0)

目录搜索

扩展到类

之下
\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); ?>

希望这会对你有所帮助

答案 2 :(得分:0)

在意识到我正在使用自定义模板后,我现在看到可能有两个地方需要解决:

catalogsearch / result.phtml

catalogsearch /先进/ result.phtml

对于result.phtml,该块是Mage_CatalogSearch_Block_Result。在该块中,您可以拨打$this->_productCollection()。 sku正在收藏中。我假设高级也是如此。

编辑:对于高级搜索,您必须使用$this->getChild('search_result_list')->_productCollection