【问题标题】:Magento: programmatic search depending on storeMagento:根据商店进行程序化搜索
【发布时间】:2010-10-07 09:51:11
【问题描述】:

我正在使用 Magento 的目录搜索模块。我有 2 家商店。在第一个搜索“测试”时,我得到 5 个结果。在第二个搜索“测试”时,我得到 3 个结果。

我想在第一个搜索时添加第二个商店的结果(只是结果的数量)。

我添加了一个块和一个模板,我所需要的只是检索第二个商店中结果数量的代码,这就是我卡住的地方。

我试图获取控制器代码,但它总是返回第一个商店中的结果数:

私有函数 _getStoreQuery($storeId) {

          $query = Mage::helper('catalogSearch')->getQuery();
    $query->setStoreId(7);



          if ($query->getQueryText()) {
        if (Mage::helper('catalogSearch')->isMinQueryLength())

{ $query->setId(0) ->setIsActive(1) ->setIsProcessed(1); } 别的 { if ($query->getId()) { $query->setPopularity($query->getPopularity()+1); } 别的 { $query->setPopularity(1); }

            $query->prepare();
        }

        Mage::helper('catalogSearch')->checkNotes();

        if (!Mage::helper('catalogSearch')->isMinQueryLength())

{ $查询->保存(); } }

    var_dump($query);
    return $query;

      }

我之前也尝试过更改商店上下文,但没有运气: Mage::app()->setCurrentStore($secondStoreId);

你有什么想法吗?谢谢

【问题讨论】:

    标签: php search magento


    【解决方案1】:

    第二次尝试返回第一组结果的原因可能是因为您正在重用Mage_Catalogsearch_Model_Query 对象。您需要创建一组新的结果。在这里,集合将创建它们,您只需遍历 $collection 即可获取它们。

    $queryText = Mage::helper('catalogSearch')->getQueryText();
    $collection = Mage::getResourceModel('catalogsearch/query_collection')
        ->setStoreId($storeId)
        ->setQueryFilter($queryText);
    

    【讨论】:

    • 我认为确实是问题所在,但您的提示并没有解决。
    • 这里是集合的内容:pastebin.com/BwiFEQbi 当我尝试迭代它时,它会导致 Magento 崩溃(页面停止加载): foreach ($collection as $col) { var_dump($col );数据库也只包含一个查询(商店 1 上的那个)
    • 当我尝试同样的事情时,我得到了这个pastebin.com/nVKQPSky。如果我搜索不存在的东西,则集合为空,并且没有任何崩溃。简而言之,我无法重现您所看到的。
    • 现在我想一想,如果它在进行转储时崩溃,那么它必须在每个对象上返回太多数据。我会使用var_dump($col->debug())echo $col->getNumResults()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2014-05-25
    • 2021-07-30
    • 2012-12-29
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多