【问题标题】:Magento Catalog Search (filter by id)Magento 目录搜索(按 id 过滤)
【发布时间】:2010-01-04 16:16:54
【问题描述】:

我正在编写一个需要搜索产品目录的自定义插件。根据我在某个地方(可能是这个网站)看到的一些示例代码,我想出了这个工作原型:

$searcher = Mage::getSingleton('catalogsearch/advanced')
   -> addFilters(array('name' => $_REQUEST['name']))
   -> addFilters(array('sku' => $_REQUEST['sku']))
;
$products = $searcher->getProductCollection();

这对这两个字段非常有用,但我还需要按产品 ID 进行搜索。似乎要搜索的正确字段是“entity_id”,但它不起作用:

$searcher->addFilters(array('entity_id' => $_REQUEST['id']));

我也尝试过使用“product_id”和简单的“id”,但没有成功。不断收到此错误:

Mage_Core_Exception:你必须 指定至少一个搜索词

关于如何实现这一点的任何想法?也许我应该使用不同的类来进行搜索?

【问题讨论】:

  • 如果你有一个 id,你就不能尝试加载一个产品而不是检索一个集合吗?
  • 在 code/core/Mage/CatalogSearch/controllers/AdvancedController.php 文件中搜索是这样调用的:Mage::getSingleton('catalogsearch/advanced')->addFilters($this-> getRequest()->getQuery());如果直接在调用中输入 id 会发生什么? Mage::getSingleton('catalogsearch/advanced')->addFilters($id);
  • 它需要可以通过这三个字段中的任何一个进行搜索。我不能使用 $this->getRequest()->getQuery() 因为我是在控制器之外做的。尝试做 ->addFilters($id) 没有运气。但是您确实给了我一个好主意 - 因为只有 1 个具有给定 ID 的产品,只需加载该产品。否则,使用其他两个字段进行搜索。感谢您的帮助!

标签: php search magento module


【解决方案1】:

感谢吉米的帮助!原来是我想多了。我已经实现了一个 if 语句来简单地按 id 加载(如果提供),否则进行搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多