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

[Решено?..] Сделать вывод в "Последних поступлениях" только товаров с фото


ilerok

Recommended Posts

Всем привет! Столкнулся с такой задачей, но не могу понять, что и где править в контроллере, что бы в модуле последние поступления выводились товары только с фото. 

 

Кто сталкивался с этим и как реализовали? 

 

 

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


Быстро но неправильно:

В контроллере latest.php

Сразу после цикла

foreach ($results as $result) {

Добавить условие

if (!$result['image']) continue;

А чуть выше цикла в массиве

$filter_data = array(...

Изменить 

$setting['limit']

На что-нибудь подобное

$setting['limit'] * 10

Почему это не совсем правильно и как сделать правильно - домашнее задание. Направление задано :)

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

Т.е. первыми выводит товары без фото?

Тогда пару вопросов - а сколько в последнее время было добавлено в базу товаров без фото? Второе - какое значение limit и на сколько умножили параметр?

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

Т.е. первыми выводит товары без фото?

Тогда пару вопросов - а сколько в последнее время было добавлено в базу товаров без фото? Второе - какое значение limit и на сколько умножили параметр?

Выводит точно так же как выводило, в разброс. 

1) Примерно товаров без фото, с фото товаров больше. Все товары добавил сегодня.

2) Лимит 10. 

 

 

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


Вот кусок кода, такой вид он имеет сейчас:

 

$data = array(
'sort'  => 'p.date_added',
'order' => 'DESC',
'start' => 0,
'limit' => $setting['limit'] * 10
);
 
$results = $this->model_catalog_product->getProducts($data);
 
foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}
 
if (($this->config->get('config_customer_price') && $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')));
} 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')));
} else {
$special = false;
}
 
if ($this->config->get('config_review_status')) {
$rating = $result['rating'];
} else {
$rating = false;
}
 
$this->data['products'][] = array(
'product_id' => $result['product_id'],
'thumb'   => $image,
'name'     => $result['name'],
'price'   => $price,
'special' => $special,
'rating'     => $rating,
'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href'     => $this->url->link('product/product', 'product_id=' . $result['product_id']),
);
 
}
 
if (!$result['image']) continue;
Надіслати
Поділитися на інших сайтах


Это мой косяк неправильно объяснил. Сразу после объявления цикла

foreach ($results as $result) {
if (!$result['image']) continue;
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}
...
Надіслати
Поділитися на інших сайтах

Все равно выводит как выводило)

 

Что-то делаем не то) 

 

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}
 
if (!$result['image']) continue;
 
...
Надіслати
Поділитися на інших сайтах


Конечно не то. Еще раз внимательно мой код смотрите. Куда я вставил if (!$result['image']) continue;

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

if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}
if ($image) {
if (strpos($image, 'no_image') !== false) continue;
} 

И конечно, $setting['limit'] * 10 уменьшить.

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

 

if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}
if ($image) {
if (strpos($image, 'no_image') !== false) continue;
} 

И конечно, $setting['limit'] * 10 уменьшить.

 

Вот теперь все получилось!) Огромное спасибо!) 

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


Ну это ж половинчатое решение вы понимаете? )

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

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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