переопределение поиска в magento


У меня есть веб-сайт Magento, настроенный на 1 веб-сайт и 2 магазина. Товары каждого магазина разделены корневой категорией, что означает, что у каждого магазина есть своя корневая категория.

Я хочу, чтобы товары из магазина A не были доступны для поиска в магазине B. Как переопределить поиск, чтобы сделать это? какой метод мне следует изучить?

Примечание: Я не хочу использовать настройку видимости по некоторым причинам, таким как это сделает товар из другого магазина недоступным в корзине/мини корзина.

Author: Keyul Shah, 2014-10-14

3 answers

Отмените назначение товаров магазина A, которые вы не хотите показывать в магазине B, и они не будут доступны для поиска. (Вкладка Веб-сайты в режиме редактирования продукта)

 2
Author: Aftab Naveed, 2014-10-16 00:48:49

Чтобы переопределить поиск, вы должны переписать ResultController из модуля catalogsearch в ядре magento. Было бы неплохо также переопределить помощника.

 1
Author: Tarun, 2014-10-14 06:52:58

Я поставил addAttributeToFilter, переписав Mage_CatalogSearch_Model_Layer::getProductCollection()

app/code/local/Vela/CatalogSearch/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
    <Vela_CatalogSearch>
        <version>0.0.1</version>
    </Vela_CatalogSearch>
    </modules>
    <global>
    <models>
        <catalogsearch>
        <rewrite>
            <layer>Vela_CatalogSearch_Model_Layer</layer>
        </rewrite>
        </catalogsearch>
    </models>
    </global>
</config>

Затем в моем app/code/local/Vela/CatalogSearch/Model/Layer.php файле

<?php

class Vela_CatalogSearch_Model_Layer extends Mage_CatalogSearch_Model_Layer
{
public function getProductCollection()
{
  if (isset($this->_productCollections[$this->getCurrentCategory()->getId()])) {
      $collection = $this->_productCollections[$this->getCurrentCategory()->getId()];
  } else {
      $collection = Mage::getResourceModel('catalogsearch/fulltext_collection');
      $this->prepareProductCollection($collection);
      $this->_productCollections[$this->getCurrentCategory()->getId()] = $collection;
  }

  // start modification
  $store_id = Mage::app()->getStore()->getId();
  $store_code =  Mage::app()->getStore()->getCode();

  $_product = Mage::getModel('catalog/product');
  $_attr = $_product->getResource()->getAttribute('universo_store');
  if ($_attr->usesSource()) {
      $_attr_option_id_seafolly = $_attr->getSource()->getOptionId("seafolly");
      $_attr_option_id_havaianas = $_attr->getSource()->getOptionId("seafolly");
  }

  if(stripos('seafolly',$store_code) !== FALSE){ // seafolly
      $store_id = $_attr_option_id_seafolly;
  } else {//havaianas
      $store_id = $_attr_option_id_havaianas;
  }

  $collection->addAttributeToFilter('universo_store', array('eq'=>$store_id));
  // end modification

  return $collection;
}
}
 1
Author: Doni Wibowo, 2014-10-15 05:10:36