【发布时间】: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 的产品,只需加载该产品。否则,使用其他两个字段进行搜索。感谢您的帮助!