/** * Append a sort by our custom positions when processing a fulltext search query * * @param Varien_Event_Observer $observer The observer * * @event smile_elasticsearch_query_assembled * * @return Smile_ElasticSearch_Model_Search_Term_Observer self reference */ public function applyProductsPositions(Varien_Event_Observer $observer) { $data = $observer->getQueryData(); $query = $data->getQuery(); $fullTextQuery = Mage::helper('catalogsearch')->getQuery(); if ($fullTextQuery->getId()) { $optimizer = Mage::getModel("smile_elasticsearch/search_term_optimizer"); $query = $optimizer->applyCustomProductsPositions($query, $fullTextQuery); $data->setQuery($query); } return $this; }
/** * Append a sort by our custom positions when viewing a virtual category * * @param Varien_Event_Observer $observer The observer * * @event smile_elasticsearch_query_assembled * * @return Smile_VirtualCategories_Model_Observer self reference */ public function applyProductsPositions(Varien_Event_Observer $observer) { $data = $observer->getQueryData(); $query = $data->getQuery(); $category = Mage::registry("current_category"); if ($category !== null && $category->getId() && $this->_getVirtualRule($category) !== null) { $optimizer = Mage::getModel("smile_virtualcategories/virtualCategory_product_position"); $query = $optimizer->applyCustomProductsPositions($query, $category); $data->setQuery($query); } return $this; }