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

Увеличить количество дней отображения новинок

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

Доброго времени суток.

OcStore 15x

Модуль "Последние" выводит товары за последние 6 дней.

Пытался прописать следующее
в файле /catalog/controller/module/latest.php

$data = array(
			'sort'  => 'p.date_added',
			'order' => 'DESC',
			'start' => 0,
			'limit' => $setting['limit'],
            // значение дней, за которые хотим получить новинки
            'days'  => '30',
		);

а файле /catalog/model/catalog/product.php

 // Проверка на количество дней
 if (!empty($data['days'])){
        $sql .= " AND p.date_added > (NOW() - INTERVAL ". (int)$data['days'] ." DAY)";
    }

 

Не помогло.

Что ещё надо прописать чтоб  модуль показывал товары 30 дней ?
Постоянно править p.date_added не вариант

 

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


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

надо так

 

DATE(NOW() - INTERVAL 10 DAY)

 

в date обернуть для сравнения

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, spectre сказал:

надо так

 

DATE(NOW() - INTERVAL 10 DAY)

 

в date обернуть для сравнения

$sql .= " AND p.date_added > DATE(NOW() - INTERVAL 10 DAY)";

не помогло
как правильно обернуть?

 

Изменено пользователем Allaur

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


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

наверное не 10 а вашу переменную надо добавить) а так запрос рабочий и проверенный

либо приводите первую дату к таймстампу и сравнивайте как числа

Изменено пользователем spectre
  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
$sql .= " AND p.date_added > DATE(NOW() - INTERVAL ". (int)$data['days'] ." DAY)";

переменную прописал, не помогло

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


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, spectre сказал:

запрос рабочий и проверенный

Может ещё что-то где-то прописать надо для этого запроса?

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


Ссылка на сообщение
Поделиться на другие сайты
41 минуту назад, Allaur сказал:

$sql .= " AND p.date_added > DATE(NOW() - INTERVAL ". (int)$data['days'] ." DAY)";

переменную прописал, не помогло

DATE_SUB("2017-06-15", INTERVAL 10 DAY)

https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_date_sub

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, ibond сказал:

вааще белый экран вылазит :(

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


Ссылка на сообщение
Поделиться на другие сайты
53 минуты назад, Allaur сказал:

вааще белый экран вылазит

А вы не копируйте отсюда.

https://monosnap.com/file/Ha48IUrdOin43CNZtOE6ub3QuhWaM8

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, ibond сказал:

А вы не копируйте отсюда.

https://monosnap.com/file/Ha48IUrdOin43CNZtOE6ub3QuhWaM8

По вашей ссылке
File not found
Я не копировал
я просто добавил _SUB

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


Ссылка на сообщение
Поделиться на другие сайты
30 минут назад, Allaur сказал:

По вашей ссылке
File not found
Я не копировал
я просто добавил _SUB

https://monosnap.com/file/zxUVTomAd7jLiM8XyVOx5AkWKx8QrG

Проверено, работает.

$data['days'] = 6;
$sql .= " AND p.date_added > DATE_SUB(NOW(), INTERVAL ". (int)$data['days'] ." DAY)";

 

  • +1 1

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


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

DATE_SUB(NOW(), INTERVAL 30 DAY)

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
18 минут назад, ibond сказал:

https://monosnap.com/file/zxUVTomAd7jLiM8XyVOx5AkWKx8QrG

Проверено, работает.


$data['days'] = 6;
$sql .= " AND p.date_added > DATE_SUB(NOW(), INTERVAL ". (int)$data['days'] ." DAY)";

 

Ссылка открылась
но этот код  у мня всё равно не работает

 

118		$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
119  
120		$data['days'] = 30;
121		$sql .= " AND p.date_added > DATE_SUB(NOW(), INTERVAL ". (int)$data['days'] ." DAY)";
122	
123		if (!empty($data['filter_category_id'])) {
124			if (!empty($data['filter_sub_category'])) {
125				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";	
126			} else {
127				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";			
128			}	


ошибка
Parse error: syntax error, unexpected 'if' (T_IF) in /vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 123
 

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


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

А по какой логике опенкарт изначально решает какое количество дней  товары держать в новинках?

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


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, Allaur сказал:

А по какой логике опенкарт изначально решает какое количество дней  товары держать в новинках?

последние n-товаров по убыванию даты (дата добавления товара)

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, thentru сказал:

последние n-товаров по убыванию даты (дата добавления товара)

это понятно
не понятно как считает дату. Как опенкарт знает что именно 6 дней надо товар хранить в новинках?

почему не 10 дней или не 100 дней.......

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


Ссылка на сообщение
Поделиться на другие сайты
58 минут назад, Allaur сказал:

ошибка
Parse error: syntax error, unexpected 'if' (T_IF) in /vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 123

Это совсем другая ошибка уже. У меня подозрение, что у Вас BOOM символы гуляют в коде!

Отправьте мне в личку /vqmod/vqcache/vq2-catalog_model_catalog_product.php с изменениями.

 

 

2 минуты назад, Allaur сказал:

не понятно как считает дату. Как опенкарт знает что именно 6 дней надо товар хранить в новинках?

почему не 10 дней или не 100 дней.......

 

Он не хранит 6 дней, Вам же сказали уже как:

19 минут назад, thentru сказал:

последние n-товаров по убыванию даты (дата добавления товара)

 

Сортирует по дате добавления товара и берет к-во установленное в модуле:

8 часов назад, Allaur сказал:

sort' => 'p.date_added',

'order' => 'DESC',

'start' => 0,

'limit' => $setting['limit'],

 

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Allaur сказал:

не понятно как считает дату. Как опенкарт знает что именно 6 дней надо товар хранить в новинках?

почему не 10 дней или не 100 дней.......

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

 

а то, что у вас выводятся за последние 6 дней - значит есть какие-либо доработки

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
53 минуты назад, thentru сказал:

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

 

а то, что у вас выводятся за последние 6 дней - значит есть какие-либо доработки

вот
может есть дороботки  :))
то есть возможно какие то сторонние модули воздействуют.
Благодарю
буду рыть тогда.
 

 

54 минуты назад, ibond сказал:

Это совсем другая ошибка уже. У меня подозрение, что у Вас BOOM символы гуляют в коде!

Отправьте мне в личку /vqmod/vqcache/vq2-catalog_model_catalog_product.php с изменениями.

 

 

сейчас отправлю

 

Так и есть

BOOM символы гуляют в коде!

Изменено пользователем Allaur

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

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

×

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

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