2012-05-08 18 views

Respuesta

0

Este link va al sitio web de Magento debería ayudar. Necesita crear atributos de Catálogos. Luego, vea la configuración en Propiedades frontend (Catálogos> Atributos).

+0

Gracias por su enlace, aunque no es lo que estoy buscando. El enlace describe cómo agregar Navegación en capas al sitio web (que sé cómo hacerlo). Mi pregunta es acerca de agregar específicamente la Navegación en capas a ** Búsqueda avanzada ** (que parece ignorar la configuración genérica). – mas

5

No existe una solución rápida para esto. La búsqueda estándar y la búsqueda avanzada usan dos métodos diferentes para buscar.

Si compara los diseños en catalogsearch.xml, verá que para catalogsearch_advanced_result el bloque catalogsearch/layer no está incluido. Si copia la definición de bloque de catalogsearch_result_index y cambia la plantilla de raíz a 3columns.phtml, se arrojarán varios errores.

1

En mi 1.6.2 del nav capas se presentaron después de marcar un 0 (cero) a
Sistema -> Configuración -> Catálogo -> Catálogo de búsqueda -> Aplicar en capas de navegación si Resultados de la búsqueda están a menos de

0

Simplemente agregando la siguiente línea en catalogsearch.xml resultados de búsqueda avanzada izquierda área me ayudó a hacerla visible en mi sitio EE, sin embargo no lo he comprobado en la versión CE.

<block type="catalogsearch/layer" name="catalogsearch.leftnav" before="-" template="catalog/layer/view.phtml"/> 

Así que mi área total hacia la izquierda se ve así en el área de búsqueda avanzada en el archivo xml:

<reference name="left"> 
     <block type="catalog/navigation" name="hello.leftnav" as="hello.leftnav" template="catalog/navigation/hello_left_nav-search.phtml" /> 
     <block type="catalog/layer_view" name="catalog.leftnav" before="-" template="catalog/layer/view.phtml"/> 
    </reference> 

espero que ayuda a los demás.

7

El siguiente parche mostrará la navegación en capas en el resultado de búsqueda avanzada y funcionará bien con las navegaciones en capas. La navegación en capas y el resultado de búsqueda se muestran en base a dos colecciones de productos independientes, una creada por catalogsearch/Model/Layer.php y la otra por catalogsearch/Model/Advanced.php. Por lo tanto, debemos anular algunas funciones de estos dos modelos para que el trabajo de navegación en capas funcione en la Búsqueda avanzada.

1- En su archivo local.xml bajo catalogsearch_advanced_result add tag.

<reference name="left"> 
     <block type="catalogsearch/layer" name="catalogsearch.leftnav" after="currency" template="catalog/layer/view.phtml"/> 
</reference> 

función de anulación prepareProductCollection de CatalogSearch/modelo/Layer.php con getProductCollection

public function prepareProductCollection($collection){ 

    if(Mage::helper('catalogsearch')->getQuery()->getQueryText())//for normal search we get the value from query string q=searchtext 
     return parent::prepareProductCollection($collection); 
    else{ 

     $collection->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()); 
     /** 
     * make sure you cross check the $_REQUEST with $attributes 
     */ 
     $attributes = Mage::getSingleton('catalog/product')->getAttributes(); 

     Mage::log(print_r($_REQUEST,1)); 
     foreach($attributes as $attribute){ 
      $attribute_code = $attribute->getAttributeCode(); 
      //Mage::log("--->>". $attribute_code); 
      if($attribute_code == "price")//since i am not using price attribute 
       continue; 

      if (empty($_REQUEST[$attribute_code])){ 
       //Mage::log("nothing found--> $attribute_code"); 
       continue; 
      } 
      if(!empty($_REQUEST[$attribute_code]) && is_array($_REQUEST[$attribute_code])) 
       $collection->addAttributeToFilter($attribute_code, array('in' => $_REQUEST[$attribute_code])); 
      else 
      if(!empty($_REQUEST[$attribute_code])) 
       $collection->addAttributeToFilter($attribute_code, array('like' => "%" . $_REQUEST[$attribute_code] . "%")); 
     } 

     $collection->setStore(Mage::app()->getStore()) 
     ->addMinimalPrice() 
     ->addFinalPrice() 
     ->addTaxPercents() 
     ->addStoreFilter() 
     ->addUrlRewrite(); 

     //Mage::log($collection->getSelect()->__toString()); 

     Mage::getSingleton('catalogsearch/advanced')->prepareProductCollection($collection);  
     Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); 
     Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection); 
    } 

    return $this; 
} 

Override, getSearchCriterias función de CatalogSearch/modelo/Advanced.php con

public function getProductCollection(){ 

    if (is_null($this->_productCollection)) { 
     $this->_productCollection = Mage::getResourceModel('catalogsearch/advanced_collection') 
      ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) 
      ->addMinimalPrice() 
      ->addStoreFilter(); 
      Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection); 
      Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection); 

     if(isset($_GET['cat']) && is_numeric($_GET['cat'])) 
      $this->_productCollection->addCategoryFilter(Mage::getModel('catalog/category')->load($_GET['cat']),true); 
    } 
    return $this->_productCollection; 
} 

public function getSearchCriterias() 
{ 
    $search = parent::getSearchCriterias(); 
    /* display category filtering criteria */ 
    if(isset($_GET['cat']) && is_numeric($_GET['cat'])) { 
     $category = Mage::getModel('catalog/category')->load($_GET['cat']); 
     $search[] = array('name'=>'Category','value'=>$category->getName()); 
    } 
    return $search; 
} 
Cuestiones relacionadas