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

Почему именно так выводятся товары?


Blackseabreathe

Recommended Posts

Привет. Вывожу товары в баннере на главной странице из определенной категории,

 

controller/banner.php

 

Спойлер

$results = $this->model_design_banner->getBanner($setting['banner_id']);

$data['products'] = array();

foreach ($results as $result) { // разбираем каждый баннер

 if($result['banner_id'] == '12'){ // если id баннера 12, то

$filter_data = array( // взято из категории
				'filter_category_id' => '60',
				'filter_filter'      => '',
				'sort'               => 'p.date_added',
				'order'              => 'ASC',
				'start'              => '0',
				'limit'              => '8'
			);
                
            
            
            $products = $this->model_catalog_product->getProducts($filter_data); // взято из категории

     foreach($products as $product){ // почему-то этот разбор массива игнорируется в twig, то есть если его закоментировать или не комментировать, то в twig все равно выводится так как выводится


                
               if ($product['image']) {
					$image = $this->model_tool_image->resize($product['image'], 100, 200);
				} 
                else {
					$image = $this->model_tool_image->resize('placeholder.png', 100, 200);
				}
                
                
				if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
					$price = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
				} else {
					$price = false;
				}

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


				$data['products'][] = array(
					'product_id'  => $product['product_id'],
					'thumb'       => $image,
					'name'        => $product['name'],
					'price'       => $price,
					'special'     => $special,
					'minimum'     => $product['minimum'] > 0 ? $product['minimum'] : 1,
					'href'        => $this->url->link('product/product', 'product_id=' . $product['product_id'])
				);
                
            }


// вывод баннера такой то

if (is_file(DIR_IMAGE . $result['image'])) {
				$data['banners'][] = array(
					'title' => html_entity_decode($result['title']),
                    'title2' => html_entity_decode($result['title2']),
					'link'  => $result['link'],
                    'btntext'  => $result['btntext'],
					'image' => $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']),
                    'banner_id' => $result['banner_id'],
                    'products' => $products
                    
				);
			}

}

// а если это не 12 id, то вывод баннеров такой (без 'products' => $products в конце)

else{
            
                
             if (is_file(DIR_IMAGE . $result['image'])) {
				$data['banners'][] = array(
					'title' => html_entity_decode($result['title']),
                    'title2' => html_entity_decode($result['title2']),
					'link'  => $result['link'],
                    'btntext'  => $result['btntext'],
					'image' => $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']),
                    'banner_id' => $result['banner_id']
                    
				);
			}
                
            }

 

 

в banner.twig

 

Спойлер

{% if banner.banner_id == '12' %}

<div class="item">

banner id - {{ banner.banner_id }}<br>

{% if banner.products %}

{% for product in banner.products %}

pid - {{ product.product_id }}<br> // выводится

name - {{ product.name }}<br> // выводится
image - {{ product.thumb }}<br> // не выводится ссылка на изображение
href - {{ product.href }}<br> // не выводится ссылка на товар
price - {{ product.price }}<br> // цена выводится без формата (100.000000)
special - {{ product.special }}<br> цена выводится без формата (50.000000)

{% endfor %}


{% else %}
no products
{% endif %}

  </div>
  
 {% endif %}

 

 

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


в переменной $products у вас как раз все без формата, потому что берется из БД:

$products = $this->model_catalog_product->getProducts($filter_data); // взято из категории


а вот $data['products'] - все с форматом, но этот массив мало того, что все в кучу собирает без разделения на баннеры, так еще и нигде больше не используется

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

1 час назад, Prooksius сказал:

в переменной $products у вас как раз все без формата, потому что берется из БД:


$products = $this->model_catalog_product->getProducts($filter_data); // взято из категории


а вот $data['products'] - все с форматом, но этот массив мало того, что все в кучу собирает без разделения на баннеры, так еще и нигде больше не используется

 

Подскажите как все это дело подправить?

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


2 часа назад, Blackseabreathe сказал:

а вот $data['products'] - ...   нигде больше не используется

Раз уж вы хотите все сделать сами, без привлечения специалиста, вам нужно внимательно проанализировать свой код и исправить ошибки. Я же уже все сказал, добавить нечего.

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

9 минут назад, Prooksius сказал:

Раз уж вы хотите все сделать сами, без привлечения специалиста, вам нужно внимательно проанализировать свой код и исправить ошибки. Я же уже все сказал, добавить нечего.

Простите, а зачем Вы присутствуете на этом форуме, в песочнице? Вы если не можете/хотите помочь, то не отвечайте попросту, а то Вы сказали а, но не договорили б. Смысл в чем тогда? Поэтому я не согласен что  $data['products'] не используется нигде после объявления переменой.

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


2 часа назад, Blackseabreathe сказал:

Да, заместо 'products' => $products нужно было 'products' => $data['products'],

нет. Неправильно.

Нужно было сохранять товары в отдельный массив для данного баннера. И ее скидывать в 'products' данного баннера
А сейчас у вас во всех баннерах один и тот же набор товаров - все товары всех категорий.

Или перенести

$data['products'] = array();

внутрь цикла перебора баннеров в самое начало. Чтобы товары предыдущего баннера не были в следующем.

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

23 часа назад, Prooksius сказал:

нет. Неправильно.

Нужно было сохранять товары в отдельный массив для данного баннера. И ее скидывать в 'products' данного баннера
А сейчас у вас во всех баннерах один и тот же набор товаров - все товары всех категорий.

Или перенести


$data['products'] = array();

внутрь цикла перебора баннеров в самое начало. Чтобы товары предыдущего баннера не были в следующем.

 

Да, Вы правы, спасибо

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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