Я пытаюсь расширить поиск в Magento для поддержки продуктов поиска по идентификатору тега. Я переопределяю Mage_Tag_Model_Tag
public function getTaggedProductsUrl()
{
return Mage::getUrl('', array('_direct' => 'catalogsearch/result/?q='.$this->getName().'&tagId='.$this->getId()));
}
Поэтому URL-адреса моих тегов выглядят как
https://test.com/catalogsearch/result/?q=white%20egg&tagId=3
Теперь, когда я захожу на URL, Magento возвращает мне все продукты, в которых название продукта содержит white egg
, я хочу прекратить поиск по названию продукта и выполнять поиск только по тегу id, если параметр tagId имеет значение присутствует в URL.
Я попытался поместить приведенный ниже код в Layer. php
$tagId = Mage::app()->getRequest()->getParam('tagId');
if(!empty($tagId)) {
$collection->joinTable(
array('tag_relation' => 'tag/relation'), 'product_id = entity_id',
array('tag_relation_id' => 'tag_relation_id', 'tag_id' => 'tag_id'), null, 'inner'
);
$collection->joinTable(
array('tag' => 'tag/tag'), 'tag_id = tag_id', array('tag_name' => 'name'), null, 'inner'
);
$collection->getSelect()->where("tag.tag_id = (?)", $tagId);
$collection->getSelect()->where("tag.status = ?", Mage_Tag_Model_Tag::STATUS_APPROVED);
}
, но это не работает, потому что сначала поиск по умолчанию в Magento фильтрует продукты, а затем уже отфильтрованная коллекция снова отфильтрованный по tag_id
Quesiton: Как остановить magento для поиска по ключевому слову, если tagId присутствует в URL?