これは古い投稿ですが、最近私が同じ問題に直面して以来、私はそれを解決しました。
if ($allConditions) {
$this->getProductCollection()->addFieldsToFilter($allConditions);
} else if (!$hasConditions) {
Mage::throwException(Mage::helper('catalogsearch')->__('Please specify at least one search term.'));
}
だから私たちが望むもの:あなたはパラメータを指定せずに検索できるように否定したコードは、ライン上のファイルの関数addFiltersで
app/code/core/Mage/CatalogSearch/Model/Advanced.php
()208(Magentoのv1.8.1)内にありますスローされた例外beeingを取り除くことです。コアファイルを変更したくないので、このクラスを書き直してaddFilters()関数をオーバーロードしてExceptionをキャッチすると、空の高度な検索が可能になります。あなたのモジュール内
はファイル
app/code/local/Yournamespace/Yourmodule/Models/Catalogsearch/Advanced.php
class Yournamespace_Yourmodel_Model_Catalogsearch_Advanced extends Mage_CatalogSearch_Model_Advanced {
/**
* call original addFilters but catch Exception
* so search WITHOUT search parameters is allowed.
*
* @param array $values
* @return \Yournamespace_Yourmodel_Model_Catalogsearch_Advanced
*/
public function addFilters($values) {
try {
return parent::addFilters($values);
} catch (Mage_Core_Exception $ex) {
return $this;
}
}
}
を作成して、新しいものと、元の高度な検索モデルを書き換える:
app/code/local/Yournamespace/Yourmodule/etc/config.xml
...
<global>
<models>
<catalogsearch>
<rewrite>
<advanced>Yournamespace_Yourmodel_Model_Catalogsearch_Advanced</advanced>
</rewrite>
</catalogsearch>
</models>
</global>
...
トリックを行う必要があること。
コア検索の仕組みも変更する必要があります。上の例では最小限のパラメタが必要ですが、ブランク検索を行うとSQL構文エラーが発生します。あなたはこのような拡張を調べる必要があるかもしれませんhttp://www.magentocommerce.com/magento-connect/Php4u/extension/5999/blast_lucene_seach –