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

Модельный ряд для товаров, как доделать?


Recommended Posts

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

Кондиционер сплит-система Cooper&Hunter CH-S09FTXW

CH-S09FTXW - у нас выступает в качестве модели и таких моделей может быть несколько,( CH-S07FTXW, CH-S18FTXW ) они относятся к одной серии.

И вот как это отображается на сайте

Спойлер

9434936_.png.1dca5984923b4c97608ea148a0ebb49e.png

 

По сути это тоже товары, Мне надо, что бы товары которые уже вписаны в модельном ряду какого-то из продуктов, не отображались в списке товаров. Как это сделать, я не могу пока представить. Вот собственно пример. У нас есть товар Кондиционер сплит-система Cooper&Hunter CH-S09FTXW и у него есть модельный ряд, и товар Кондиционер сплит-система Cooper&Hunter CH-S07FTXW из модельного ряда, в списке товаров, не отображался

 

В контроллере эта штука вот так собирается

Спойлер

	$results = $this->model_catalog_product->getProducts($filter_data);
			
			$this->load->model('catalog/review');
			foreach ($results as $result) {				
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				}

				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;
				}
				if ($result['minimum']) {
					$minimum = $result['minimum'];
				} else {
					$minimum  = 1;
				}
				// получаем модели которые односятся к даному товару
				$series_products = $this->model_catalog_product->getSeries($result['product_id']);
				$series = array();
				if($series_products){
					foreach($series_products as $series_product) {
						if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
							$price_s = $this->currency->format($this->tax->calculate($series_product['price'], $series_product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
						} else {
							$price_s = false;
						}
		
		
						if ((float)$series_product['special']) {
							$special_s = $this->currency->format($this->tax->calculate($series_product['special'], $series_product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
						} else {
							$special_s = false;
						}
		
						$series[] = array(
							'product_id'  => $series_product['product_id'],
							'name'        => $series_product['jan'],
							'price'       => $price_s,
							'special'     => $special_s,
							'm2'			=> $series_product['upc'],
							'href'        => $this->url->link('product/product', 'product_id=' . $series_product['product_id'], true),
						);
					} 
				}
				
			// записываем в масив инфу о продуктах
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'series'  => $series,
					'stiker'  => $result['ean'],
					'quantity' => $result['quantity'],				
					'series'  => $series,
					'thumb'       => $image,
					'name'        => $result['name'],
					'id_item'	  =>"itemcatalog" . $result['product_id'],
					'minimum'	=> $minimum,
					'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'attribute_groups'	=> $this->model_catalog_product->getProductAttributes($result['product_id']),
					'tax'         => $tax,
					'total_review' => sprintf($this->language->get('text_total_r'), $this->model_catalog_review->getTotalReviewsByProductId( $result['product_id'])),
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

				
			}

 

Скорей всего надо его фильтровать еще в модели, в функции getProducts

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


  • 4 weeks later...
В 31.08.2021 в 15:06, Kingfrelance сказал:

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

Кондиционер сплит-система Cooper&Hunter CH-S09FTXW

CH-S09FTXW - у нас выступает в качестве модели и таких моделей может быть несколько,( CH-S07FTXW, CH-S18FTXW ) они относятся к одной серии.

И вот как это отображается на сайте

  Показать контент

9434936_.png.1dca5984923b4c97608ea148a0ebb49e.png

 

По сути это тоже товары, Мне надо, что бы товары которые уже вписаны в модельном ряду какого-то из продуктов, не отображались в списке товаров. Как это сделать, я не могу пока представить. Вот собственно пример. У нас есть товар Кондиционер сплит-система Cooper&Hunter CH-S09FTXW и у него есть модельный ряд, и товар Кондиционер сплит-система Cooper&Hunter CH-S07FTXW из модельного ряда, в списке товаров, не отображался

 

В контроллере эта штука вот так собирается

  Показать контент


	$results = $this->model_catalog_product->getProducts($filter_data);
			
			$this->load->model('catalog/review');
			foreach ($results as $result) {				
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				}

				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;
				}
				if ($result['minimum']) {
					$minimum = $result['minimum'];
				} else {
					$minimum  = 1;
				}
				// получаем модели которые односятся к даному товару
				$series_products = $this->model_catalog_product->getSeries($result['product_id']);
				$series = array();
				if($series_products){
					foreach($series_products as $series_product) {
						if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
							$price_s = $this->currency->format($this->tax->calculate($series_product['price'], $series_product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
						} else {
							$price_s = false;
						}
		
		
						if ((float)$series_product['special']) {
							$special_s = $this->currency->format($this->tax->calculate($series_product['special'], $series_product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
						} else {
							$special_s = false;
						}
		
						$series[] = array(
							'product_id'  => $series_product['product_id'],
							'name'        => $series_product['jan'],
							'price'       => $price_s,
							'special'     => $special_s,
							'm2'			=> $series_product['upc'],
							'href'        => $this->url->link('product/product', 'product_id=' . $series_product['product_id'], true),
						);
					} 
				}
				
			// записываем в масив инфу о продуктах
				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'series'  => $series,
					'stiker'  => $result['ean'],
					'quantity' => $result['quantity'],				
					'series'  => $series,
					'thumb'       => $image,
					'name'        => $result['name'],
					'id_item'	  =>"itemcatalog" . $result['product_id'],
					'minimum'	=> $minimum,
					'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'attribute_groups'	=> $this->model_catalog_product->getProductAttributes($result['product_id']),
					'tax'         => $tax,
					'total_review' => sprintf($this->language->get('text_total_r'), $this->model_catalog_review->getTotalReviewsByProductId( $result['product_id'])),
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

				
			}

 

Скорей всего надо его фильтровать еще в модели, в функции getProducts

Добрый день, столкнулся с подобной ситуацией...поделитесь как Вы нашли решение этой ситуации

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


3 часа назад, 2b3 сказал:

Добрый день, столкнулся с подобной ситуацией...поделитесь как Вы нашли решение этой ситуации

Мне доделали, дописав функцию

   
    public function seriesPush($product_id, $existing_series){
        $series_list = $this->getSeries($product_id);
        foreach($series_list as $series){
            $existing_series[str_replace(' ', '', $series['jan'])] = str_replace(' ', '', $series['jan']);
        }
        return $existing_series;
    }
    
    

 

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


извините что беспокою, я в opencarte еще совсем новичек...не могли бы вы за финансовое спасибо помочь мне с внедрением в сайт аналогичного модуля, у меня тоже тематика кондеи и аналогичная ситуация...Человек попросил сделать сайт вот по этому образцу https://vipklimat.com.ua/

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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