Перейти к содержанию
ilerok

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

Рекомендуемые сообщения

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

foreach ($results as $result) {

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

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

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

$filter_data = array(...

Изменить 

$setting['limit']

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

$setting['limit'] * 10

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас пробую) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробовал, выводит как и раньше.. Кеш чистил..

 

За направление спасибо!) Но я нулевой в php, не догадаюсь как сделать правильно что бы работало :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас посмотрю и дам ответ, 5 мин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Тогда пару вопросов - а сколько в последнее время было добавлено в базу товаров без фото? Второе - какое значение 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']) 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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.