Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Добавить в поиск, поиск по определенным атрибутам


Recommended Posts

Здравствуйте!)

 

Есть файл поиска живого, работает отлично и все дела, вопрос: что нужно прописать, чтобы поиск искал по паре атрибутов!?(не по всем, а только по паре. по id атрибута!?)

 

Код файла поиска:

Спойлер

<?php 
class ControllerExtensionModuleAutosearch extends Controller { 
	private $error = array();
 
	public function index() {
	
		$data['css'] = '';
			
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/extension/module/autosearch.tpl')) {
			$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/extension/module/autosearch.tpl', $data));
		} else {
			$this->response->setOutput($this->load->view('default/template/extension/module/autosearch.tpl', $data));
		}			
  	}
	public function ajaxLiveSearch() {
					$json = array();
					if(!empty($this->request->get['filter_name'])){
						$this->load->model('catalog/product');
						$this->load->model('extension/module/autosearch');
						$this->load->model('tool/image');

						$filter_manufacturer = ($this->config->get('search_manufacturer_on_off')=='1') ? true : false;
						$filter_upc = ($this->config->get('search_upc_on_off')=='1') ? true : false;
						$filter_sku = ($this->config->get('search_sku_on_off')=='1') ? true : false;
						$filter_model = ($this->config->get('search_model_on_off')=='1') ? true : false;
						$filter_tag = ($this->config->get('search_tag_on_off')=='1') ? true : false;
						
						$filterdata=array(
							'filter_name' => $this->request->get['filter_name'],
							'filter_manufacturer' => $filter_manufacturer,
							'filter_upc' => $filter_upc,
							'filter_sku' => $filter_sku,
							'filter_model' => $filter_model,
							'filter_tag' => $filter_tag,
							'start' => 0,
							'limit' => 5,
						);
						$results = (array) $this->model_extension_module_autosearch->ajaxLiveSearch($filterdata);
						
						foreach($results as $result){
							$width = 100;
							$height = 100;
							if($this->config->get('image_search_width')!='' && $this->config->get('image_search_height')!=''){
								$width = $this->config->get('image_search_width');
								$height = $this->config->get('image_search_height');
							}
						
							if(!empty($result['image'])&&file_exists(DIR_IMAGE .$result['image'])){
								$image = $this->model_tool_image->resize($result['image'],$width,$height);
							}else if(file_exists(DIR_IMAGE .'data/logo.png')){
								$image = $this->model_tool_image->resize('data/logo.png',$width,$height);
							}else{	
								$image = $this->model_tool_image->resize('no_image.jpg',$width,$height);
							}
							$this->load->language('product/product');
							if ($result['quantity'] <= 0) {
								$stock_result = $result['stock_status'];
							} else {
								$stock_result = $this->language->get('text_instock');
							}
							
							
								$name='';
								$model='';
								$manufacturer='';							
								$breakchars = array();
								$result['name'] = html_entity_decode ($result['name'], ENT_QUOTES, 'UTF-8');
								$this->request->get['filter_name'] = html_entity_decode ($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8');
								$name=str_ireplace($this->request->get['filter_name'],'<span class="highlight">'. htmlspecialchars(substr($result['name'],stripos($result['name'],$this->request->get['filter_name']),strlen($this->request->get['filter_name']))) .'</span>',$result['name']);
								
								$result['model'] = html_entity_decode ($result['model'], ENT_QUOTES, 'UTF-8');
								$model=str_ireplace($this->request->get['filter_name'],'<span class="highlight">'. htmlspecialchars(substr($result['model'],stripos($result['model'],$this->request->get['filter_name']),strlen($this->request->get['filter_name']))) .'</span>',$result['model']);
								
								$result['manufacturer'] = html_entity_decode($result['manufacturer'], ENT_QUOTES, 'UTF-8');
								$manufacturer=str_ireplace($this->request->get['filter_name'],'<span class="highlight">'. htmlspecialchars(substr($result['manufacturer'],stripos($result['manufacturer'],$this->request->get['filter_name']),strlen($this->request->get['filter_name']))) .'</span>',$result['manufacturer']);
							
							if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
								$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
							} else {
								$price = false;
							}

							if ((float)$result['special']) {
								$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
							} else {
								$special = false;
							}

							if ($this->config->get('config_tax')) {
								$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);
							} else {
								$tax = false;
							}

							if ($this->config->get('config_review_status')) {
								$rating = (int)$result['rating'];
							} else {
								$rating = false;
							}
							
							
							
							
							$json[] = array(
								'product_id' 	=> $result['product_id'],
								'name' 			=> $name,								
								'name1' 		=> $result['name'],
								'model' 		=> ($this->config->get('display_model_on_off') =='1') ? $model: false ,
								'stock_status' 	=> ($this->config->get('display_stock_on_off') =='1') ? $stock_result: false ,
								'image' 		=> ($this->config->get('display_image_on_off') =='1') ? $image: false ,
								'manufacturer' 	=> ($this->config->get('display_manufacturer_on_off') =='1') ? $manufacturer: false ,
								'price' 		=> ($this->config->get('display_price_on_off') =='1') ? $price: false ,
								'special' 		=> ($this->config->get('display_price_on_off') =='1') ? $special: false ,
								'rating' 		=> ($this->config->get('display_rating_on_off') =='1') ? $rating: false ,
								'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])
								
							);
						
						}
					}
					$this->response->addHeader('Content-Type: application/json');
					$this->response->setOutput(json_encode($json));
				}
}
?>

Не пойму, как именно задействовать поиск по двум атрибутам!)

 

Корректировка: Теперь уже надо чтобы поиск подхватывал лишь значение из одного атрибута под id 52 (само название атрибута не надо, надо лишь чтобы значение атрибута искал, только в одном id атрибута!)

Змінено користувачем MFX
Надіслати
Поділитися на інших сайтах


С выводом поиска по атрибутам разобрался!) На странице поиска!

 

А вот как сделать так, чтобы в поисковой строке, живой поиск тоже отрабатывал по артикулу!?)

Используется autosearch из шаблона NewStore - как к нему подкрепить отображение товара по артикулу!?)

(если в него ввести артикул и нажать на поиск, то он находит! Но не показывает товар, когда только забил в поиск(типа живой поиск)

Надіслати
Поділитися на інших сайтах


В 14.08.2018 в 04:08, MFX сказал:

С выводом поиска по атрибутам разобрался!) На странице поиска!

 

А вот как сделать так, чтобы в поисковой строке, живой поиск тоже отрабатывал по артикулу!?)

Используется autosearch из шаблона NewStore - как к нему подкрепить отображение товара по артикулу!?)

(если в него ввести артикул и нажать на поиск, то он находит! Но не показывает товар, когда только забил в поиск(типа живой поиск)

Люди добрые, поиск по атрибутам ищет во всех атрибутах. А как сделать так, чтобы брал поиск из одного определенного атрибута!?!??

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.