Это старый пост, но так как я недавно столкнулся с той же проблемой, вот как я решил ее. Код, запрещающий вам выполнять поиск без каких-либо параметров, находится в файле
app/code/core/Mage/CatalogSearch/Model/Advanced.php
в функции addFilters () в строке 208 (Magento v1.8.1):
if ($allConditions) {
$this->getProductCollection()->addFieldsToFilter($allConditions);
} else if (!$hasConditions) {
Mage::throwException(Mage::helper('catalogsearch')->__('Please specify at least one search term.'));
}
Итак, мы хотим избавиться от брошенного Исключения. Поскольку мы не хотим изменять какие-либо файлы ядра, мы переписываем этот класс и перегружаем функцию addFilters (), чтобы перехватить исключение, тем самым разрешая пустой расширенный поиск.
Внутри вашего модуля создайте файл
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>
...
Это должно сработать.