Magento1.9, как искать товары по тегу id вместо ключевого слова - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь расширить поиск в 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?

...