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

Почему получаю пустой товар ?


Kingfrelance

Recommended Posts

Здравствуйте, вот такая проблема, дописал модуль бестселлер и вот такая проблема, получаю по через 2 товара пустые.. Если дампить масив result то все ок, а вот если уже products куда все пишется, то получаю пустоту по через несколько товаров вот контроллер

Спойлер

<?php

class ControllerExtensionModuleBestsellercat extends Controller {

  public function index($setting) {
    $this->load->language('extension/module/bestsellercat');

    $data['heading_title'] = $setting['name'];

    $data['text_tax'] = $this->language->get('text_tax');

    $data['button_cart']     = $this->language->get('button_cart');
    $data['button_wishlist'] = $this->language->get('button_wishlist');
    $data['button_compare']  = $this->language->get('button_compare');
    $data['test_show_all']  = $this->language->get('test_show_all');
	$data['button_stock'] = $this->language->get('button_stock');
	$data['text_manufacture']     = $this->language->get('text_manufacture');

    $this->load->model('catalog/product');
    $this->load->model('extension/module/bestsellercat');
    $this->load->model('tool/image');

    $data['products'] = array();
    $data['categories'] = array();
    
	if(!empty($setting['category'])){
		
		foreach($setting['category'] as $category_id){
			
			 $products = array();
             
			 $filters_data = array(				
				'limit' => $setting['limit'],
				'category_id' => $category_id
			);
      	 
			$results = $this->model_extension_module_bestsellercat->getBestSellerProductsCategory($filters_data);
         
           
			if ($results) {
			  foreach ($results as $result) {
                //  echo "<pre>";var_dump($result);
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']);
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['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 = $result['rating'];
				} else {
					$rating = false;
				}

				
				$sticker_new      = false;
				$sticker_special  = false;
				$sticker_rating   = false;
				$sticker_vip      = false;
				$text_stiсker_new = $this->language->get('text_stiсker_new');
				$text_stiсker_special = $this->language->get('text_stiсker_special');
				$text_stiсker_rating = $this->language->get('text_stiсker_rating');	

				
				//   проверка на стикер "НОВИНКА"
				// получаем дату добавления товара и делаем проверку на стикер
					$date_added = strtotime($result['date_added']);
					$date_now   = strtotime(date("Y-m-d H:i:s"));
					$days       = (int)date('d', $date_now - $date_added);
				// если с момента добавления товара не прошло еще 10 дней, то выводим стикер
					if ($days < 10 ) {						
					  $sticker_new = $text_stiсker_new;
					} else {
					  $sticker_new = false;
					}
				
					//   если товар был просмотрен  больше 15 раз, то он получает стикер Популярное
				  if ($result['viewed'] >= 15) {
					$sticker_rating = $text_stiсker_rating;
				  } else {
					$sticker_rating = false;
				  }

				//   если у товара есть скидка то он получает стикер Скидка недели
				 if ($result['special']) {
					$sticker_rating = $text_stiсker_special;
				} else {
					$sticker_rating = false;
				}
					
			
				
				$this->load->model('catalog/category');
				$category_info = $this->model_catalog_category->getCategory($category_id);
				
				// //atributes by Artem START
				// $results_atributes = $this->model_catalog_product->getProductAttributes($result['product_id']);
				// $temp = array('Возраст' => '', 'Пол' => '', 'Страна' => '');
				// if ($results_atributes) {
				// 	foreach ($results_atributes as $key => $value) {
				// 		if ($value['attribute']) {
				// 			$temp1 = array('Возраст', 'Пол', 'Страна');
				// 			foreach ($value['attribute'] as $key => $value) {
				// 				if (in_array($value['name'], $temp1) && $value['text']) {
				// 					$temp[$value['name']] = $value['text'];
				// 				} else {
				// 					$temp[$value['name']] = '';
				// 				}
				// 			}
				// 		}
				// 	}
				// }

				// $attributes_show = array();
				// $attributes_names = array('Возраст', 'Пол', 'Страна');
				// foreach ($attributes_names as $value) {
				// 	$results_atributes = $this->model_catalog_product->getAttributesShow($result['product_id'], $value);
				// 	if ($results_atributes) {
				// 		$attributes_show[$value] = TRUE;
				// 	} else {
				// 		$attributes_show[$value] = FALSE;
				// 	}
				// }
				// // //atributes by Artem END
				// $colors = array();

				// foreach ($result['colors'] as $key => $color) {
				// 	//убираем лишние (количество < 1) и изменяем фото
				// 	if ($color['quantity'] > 0) {
				// 		$colors[$key] = $result['colors'][$key];

				// 		if ($color['image']) {
				// 			$colors[$key]['image'] = $this->model_tool_image->resize($color['image'], 50, 50);
				// 		} else {
				// 			$colors[$key]['image'] = $this->model_tool_image->resize('placeholder.png', 50, 50);
				// 		}

				// 		$colors[$key]['href'] = $this->url->link('product/product', 'product_id=' . $color['product_id']);
				// 	}
				// }

				$data['quantity'] = $result['quantity'];

	if ($result['quantity'] <= 0 && $result['archive']) {
		$data['stock'] = $this->language->get('text_out_of_production');
		$data['out_of_production'] = true;
	} elseif ($result['quantity'] <= 0) {
		$data['stock'] = $result['stock_status'];
	} elseif ($this->config->get('config_stock_display')) {
		$data['stock'] = $result['quantity'];
	} elseif($result['quantity'] > 0 && $result['stock_status_instock']) {
		$data['stock'] = $result['stock_status_instock'];
	} else {
		$data['stock'] = $this->language->get('text_instock');
	}
			//print_r($result['manufacturer']);
	$pre_order_shipping_text = "";
	if($result['stock_status_instock'] == 'Под заказ'){
		$this->load->model('catalog/manufacturer');
		$shipping_data =  $this->model_catalog_manufacturer->getManufacturer($result['manufacturer_id']);
		if(!empty($shipping_data['shipping_time'])){
			$pre_order_shipping_text = $shipping_data['shipping_time'];
		}

	}
	
	$data['pre_order_shipping_text'] = $pre_order_shipping_text;
					
				$products[] = array(				
					'product_id'      => $result['product_id'],
					'quantity'  => $result['quantity'],					
					'stock_status' => $result['stock_status'],
					'stock_status_instock' =>$result['stock_status_instock'],					
					'thumb'           => $image,
					'name'            => $result['name'],
					'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,
					'manufacturer'    => $result['manufacturer'],
					'shipping_time'		=> $pre_order_shipping_text,
					'manufacturer_href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id']),
					'special'         => $special,
					'tax'             => $tax,
					'rating'          => $rating,
					'reviews_count'   => $result['reviews'],
					'href'            => $this->url->link('product/product', 'product_id=' . $result['product_id']),
					'sticker_rating'  => $sticker_rating,
					'sticker_special' => $sticker_special,
					'sticker_new'     => $sticker_new,
					'sticker_vip'     => $sticker_vip,
					// 'colors'      => $colors,
					//atributes by Artem START
					// 'age'             => $temp['Возраст'],
					// 'sex'             => $temp['Пол'],
					// 'country'         => $temp['Страна'],
					// 'age_show'        => $attributes_show['Возраст'],
					// 'sex_show'        => $attributes_show['Пол'],
					// 'country_show'    => $attributes_show['Страна']
					//atributes by Artem END
					
				);
			echo "<pre>";
			var_dump($products);		
				
				}
				
					$data['categories'][] = array(
				
						'category_id' => $category_id,
						'category_name' => $category_info['name'],
						'category_href' => $this->url->link('product/category', 'path=' . $category_id),
						'products' => $products
				
				
					);
			  
					
			}
				
				
		}
		
	}
	
		
    return $this->load->view('extension/module/bestsellercat', $data);
    
  }
}

 

Подскажите в чем моя ошибка..

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


15 минут назад, Kingfrelance сказал:

Здравствуйте, вот такая проблема, дописал модуль бестселлер и вот такая проблема, получаю по через 2 товара пустые.. Если дампить масив result то все ок, а вот если уже products куда все пишется, то получаю пустоту по через несколько товаров вот контроллер

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


<?php

class ControllerExtensionModuleBestsellercat extends Controller {

  public function index($setting) {
    $this->load->language('extension/module/bestsellercat');

    $data['heading_title'] = $setting['name'];

    $data['text_tax'] = $this->language->get('text_tax');

    $data['button_cart']     = $this->language->get('button_cart');
    $data['button_wishlist'] = $this->language->get('button_wishlist');
    $data['button_compare']  = $this->language->get('button_compare');
    $data['test_show_all']  = $this->language->get('test_show_all');
	$data['button_stock'] = $this->language->get('button_stock');
	$data['text_manufacture']     = $this->language->get('text_manufacture');

    $this->load->model('catalog/product');
    $this->load->model('extension/module/bestsellercat');
    $this->load->model('tool/image');

    $data['products'] = array();
    $data['categories'] = array();
    
	if(!empty($setting['category'])){
		
		foreach($setting['category'] as $category_id){
			
			 $products = array();
             
			 $filters_data = array(				
				'limit' => $setting['limit'],
				'category_id' => $category_id
			);
      	 
			$results = $this->model_extension_module_bestsellercat->getBestSellerProductsCategory($filters_data);
         
           
			if ($results) {
			  foreach ($results as $result) {
                //  echo "<pre>";var_dump($result);
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']);
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['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 = $result['rating'];
				} else {
					$rating = false;
				}

				
				$sticker_new      = false;
				$sticker_special  = false;
				$sticker_rating   = false;
				$sticker_vip      = false;
				$text_stiсker_new = $this->language->get('text_stiсker_new');
				$text_stiсker_special = $this->language->get('text_stiсker_special');
				$text_stiсker_rating = $this->language->get('text_stiсker_rating');	

				
				//   проверка на стикер "НОВИНКА"
				// получаем дату добавления товара и делаем проверку на стикер
					$date_added = strtotime($result['date_added']);
					$date_now   = strtotime(date("Y-m-d H:i:s"));
					$days       = (int)date('d', $date_now - $date_added);
				// если с момента добавления товара не прошло еще 10 дней, то выводим стикер
					if ($days < 10 ) {						
					  $sticker_new = $text_stiсker_new;
					} else {
					  $sticker_new = false;
					}
				
					//   если товар был просмотрен  больше 15 раз, то он получает стикер Популярное
				  if ($result['viewed'] >= 15) {
					$sticker_rating = $text_stiсker_rating;
				  } else {
					$sticker_rating = false;
				  }

				//   если у товара есть скидка то он получает стикер Скидка недели
				 if ($result['special']) {
					$sticker_rating = $text_stiсker_special;
				} else {
					$sticker_rating = false;
				}
					
			
				
				$this->load->model('catalog/category');
				$category_info = $this->model_catalog_category->getCategory($category_id);
				
				// //atributes by Artem START
				// $results_atributes = $this->model_catalog_product->getProductAttributes($result['product_id']);
				// $temp = array('Возраст' => '', 'Пол' => '', 'Страна' => '');
				// if ($results_atributes) {
				// 	foreach ($results_atributes as $key => $value) {
				// 		if ($value['attribute']) {
				// 			$temp1 = array('Возраст', 'Пол', 'Страна');
				// 			foreach ($value['attribute'] as $key => $value) {
				// 				if (in_array($value['name'], $temp1) && $value['text']) {
				// 					$temp[$value['name']] = $value['text'];
				// 				} else {
				// 					$temp[$value['name']] = '';
				// 				}
				// 			}
				// 		}
				// 	}
				// }

				// $attributes_show = array();
				// $attributes_names = array('Возраст', 'Пол', 'Страна');
				// foreach ($attributes_names as $value) {
				// 	$results_atributes = $this->model_catalog_product->getAttributesShow($result['product_id'], $value);
				// 	if ($results_atributes) {
				// 		$attributes_show[$value] = TRUE;
				// 	} else {
				// 		$attributes_show[$value] = FALSE;
				// 	}
				// }
				// // //atributes by Artem END
				// $colors = array();

				// foreach ($result['colors'] as $key => $color) {
				// 	//убираем лишние (количество < 1) и изменяем фото
				// 	if ($color['quantity'] > 0) {
				// 		$colors[$key] = $result['colors'][$key];

				// 		if ($color['image']) {
				// 			$colors[$key]['image'] = $this->model_tool_image->resize($color['image'], 50, 50);
				// 		} else {
				// 			$colors[$key]['image'] = $this->model_tool_image->resize('placeholder.png', 50, 50);
				// 		}

				// 		$colors[$key]['href'] = $this->url->link('product/product', 'product_id=' . $color['product_id']);
				// 	}
				// }

				$data['quantity'] = $result['quantity'];

	if ($result['quantity'] <= 0 && $result['archive']) {
		$data['stock'] = $this->language->get('text_out_of_production');
		$data['out_of_production'] = true;
	} elseif ($result['quantity'] <= 0) {
		$data['stock'] = $result['stock_status'];
	} elseif ($this->config->get('config_stock_display')) {
		$data['stock'] = $result['quantity'];
	} elseif($result['quantity'] > 0 && $result['stock_status_instock']) {
		$data['stock'] = $result['stock_status_instock'];
	} else {
		$data['stock'] = $this->language->get('text_instock');
	}
			//print_r($result['manufacturer']);
	$pre_order_shipping_text = "";
	if($result['stock_status_instock'] == 'Под заказ'){
		$this->load->model('catalog/manufacturer');
		$shipping_data =  $this->model_catalog_manufacturer->getManufacturer($result['manufacturer_id']);
		if(!empty($shipping_data['shipping_time'])){
			$pre_order_shipping_text = $shipping_data['shipping_time'];
		}

	}
	
	$data['pre_order_shipping_text'] = $pre_order_shipping_text;
					
				$products[] = array(				
					'product_id'      => $result['product_id'],
					'quantity'  => $result['quantity'],					
					'stock_status' => $result['stock_status'],
					'stock_status_instock' =>$result['stock_status_instock'],					
					'thumb'           => $image,
					'name'            => $result['name'],
					'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,
					'manufacturer'    => $result['manufacturer'],
					'shipping_time'		=> $pre_order_shipping_text,
					'manufacturer_href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id']),
					'special'         => $special,
					'tax'             => $tax,
					'rating'          => $rating,
					'reviews_count'   => $result['reviews'],
					'href'            => $this->url->link('product/product', 'product_id=' . $result['product_id']),
					'sticker_rating'  => $sticker_rating,
					'sticker_special' => $sticker_special,
					'sticker_new'     => $sticker_new,
					'sticker_vip'     => $sticker_vip,
					// 'colors'      => $colors,
					//atributes by Artem START
					// 'age'             => $temp['Возраст'],
					// 'sex'             => $temp['Пол'],
					// 'country'         => $temp['Страна'],
					// 'age_show'        => $attributes_show['Возраст'],
					// 'sex_show'        => $attributes_show['Пол'],
					// 'country_show'    => $attributes_show['Страна']
					//atributes by Artem END
					
				);
			echo "<pre>";
			var_dump($products);		
				
				}
				
					$data['categories'][] = array(
				
						'category_id' => $category_id,
						'category_name' => $category_info['name'],
						'category_href' => $this->url->link('product/category', 'path=' . $category_id),
						'products' => $products
				
				
					);
			  
					
			}
				
				
		}
		
	}
	
		
    return $this->load->view('extension/module/bestsellercat', $data);
    
  }
}

 

Подскажите в чем моя ошибка..

Верните первоначальный вариант скрипта и посмотрите что находиться в обоих массивах, если все так же то нужно копать в другую сторону

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

13 часов назад, Venter сказал:

Верните первоначальный вариант скрипта и посмотрите что находиться в обоих массивах, если все так же то нужно копать в другую сторону

кажись я понял, я переносил заказы с старой версии в новую, и в некоторых заказах отсутствуют товары.. почему то. Заливал через БД в php my admin

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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