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

[Решено] Товар в модуле последние поступления


Recommended Posts

Доброе время суток.

 

Нужна помощь. Сколько по времени товар, может выводиться модулем последние поступления? Месяц? Два? Когда о исчезнет из выдачи.

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


У последних товаров есть лимит вывода количества.

Следовательно, он там будет до тех пор, пока не поступит товар посвежее и не вытеснит его из выдачи.

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


Здравствуйте, это понятно. Тут вопрос немного в другом, если вывести товары на отдельную страницу. Например, они добавлены, добавляются следующие количество товаров растет, так как получается старые + новые. А если сайт новый? Изначально добавили 200 товаров, потом дополнили еще на 200 и тогда новинок будет 400. При этом количество новинок будет при каждом добавление равно количеству товаров на сайте. 

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


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

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


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

Так вроде это стоит в model по умолчанию, или я не о том?

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


Не проще создать пунк в меню обозвать его Новинки или Новые поступления, и все товары отдельной страницей.
или модулем https://opencartforum.com/files/file/1471-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B7%D0%B0-n-%D0%B4%D0%BD%D0%B5%D0%B9-1513-155-21/

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


Каким образом?

Создать страницу и вывести их также как и модуле $results = $this->model_catalog_product->getProducts($filter_data);

 

total для пагинации 

 

public function getTotalProducts() {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
if (isset($query->row['total'])) {
return $query->row['total'];
} else {
return 0;
}
}
 
Не могу утверждать что правильный вариант, не тестировал, но думаю что работать должен. Может ошибаюсь.
Змінено користувачем Skunk
[code]
Надіслати
Поділитися на інших сайтах


Не проще создать пунк в меню обозвать его Новинки или Новые поступления, и все товары отдельной страницей.

или модулем https://opencartforum.com/files/file/1471-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B7%D0%B0-n-%D0%B4%D0%BD%D0%B5%D0%B9-1513-155-21/

Вариант отличный, но версия не та

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


Значит, вот и объяснение. Смотрим на запрос

p.date_available <= NOW

и добавляем свое условие.

Сделал немного по другому. Взял контроллер и от страницы акций, написал два запроса в которых указал total для пагинации и запрос вывода, в них указал дополнительное условие выводить товары за последние 30 дней, ну и считать товары за последние 30 дней. 

 

Вот запросы может кому пригодятся

public function getTotalProductLatests() {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p.date_available > NOW() - INTERVAL 30 DAY AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
if (isset($query->row['total'])) {
return $query->row['total'];
} else {
return 0;
}
} 


public function getLatestNewProducts($data = array()) {


$sql = "SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p 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) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p.date_available > NOW() - INTERVAL 30 DAY AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "'";
$sort_data = array(
'pd.name',
'p.model',
'ps.price',
'rating',
'p.sort_order'
);


if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
} else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
}


if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC, LCASE(pd.name) DESC";
} else {
$sql .= " ASC, LCASE(pd.name) ASC";
}


if (isset($data['start']) || isset($data['limit'])) {
if ($data['start'] < 0) {
$data['start'] = 0;
}


if ($data['limit'] < 1) {
$data['limit'] = 20;
}


$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
}


$product_data = array();


$query = $this->db->query($sql);


foreach ($query->rows as $result) {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
}


return $product_data;
}

Теперь выводятся товары, которые только добавились по поводу точно 30 дней сказать не могу, но старые не выводятся.
Змінено користувачем Skunk
[spoiler]
  • +1 1
Надіслати
Поділитися на інших сайтах


Гість
Ця тема закрита для публікації повідомлень.
  • Зараз на сторінці   0 користувачів

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

Important Information

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