Получи случайную криптовалюту за регистрацию!

Theme Luxshop

Логотип телеграм канала @theme_luxshop — Theme Luxshop T
Логотип телеграм канала @theme_luxshop — Theme Luxshop
Адрес канала: @theme_luxshop
Категории: Софт, приложения
Язык: Русский
Количество подписчиков: 36

Рейтинги и Отзывы

2.00

2 отзыва

Оценить канал theme_luxshop и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

0

3 звезд

0

2 звезд

2

1 звезд

0


Последние сообщения

2022-03-30 02:23:33 Theme Luxshop pinned «Вывод всех товаров коллекции в рекомендуемые товары OC2, OC3 Часто возникает необходимость вывести товары в рекомендуемые автоматически, по определённому критерию. Нередко товары группируются по коллекциям, но штатными средствами Opencart нет возможности…»
23:23
Открыть/Комментировать
2022-03-12 08:27:47 Вывод всех товаров коллекции в рекомендуемые товары OC2, OC3

Часто возникает необходимость вывести товары в рекомендуемые автоматически, по определённому критерию. Нередко товары группируются по коллекциям, но штатными средствами Opencart нет возможности их корректно объединить и добавить автоматически друг к другу как рекомендуемые товары.

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

Для примера рассматривается вариант объединения в коллекции по совпадению поля EAN.

По принципу - если поле EAN не пустое, то выводим такие товары в рекомендуемые.

В файле catalog/controller/product/product.php

Находим строку:

$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

И заменяем её на это:

$results = $this->model_catalog_product->getProductRelatedCollection($product_info);

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

Перед строкой:

public function getProductRelated($product_id) {


Добавляем:

public function getProductRelatedCollection($product) {
// Поле товара, по которому идёт выборка коллекции
$collection_field = 'ean';

$product_data = array();

if (!empty($product[$collection_field])) {
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE product_id != '" . (int)$product['product_id'] . "' AND status = '1' AND " . $this->db->escape($collection_field) . " LIKE '" . $this->db->escape($product[$collection_field]) . "' ORDER BY sort_order");

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

return $product_data;
}

Если нужно выбирать товары только того же производителя, то функция должна выглядеть так:

public function getProductRelatedCollection($product) {
// Поле товара, по которому идёт выборка коллекции
$collection_field = 'ean';

$product_data = array();

if (!empty($product[$collection_field])) {
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE product_id != '" . (int)$product['product_id'] . "' AND status = '1' AND manufacturer_id = '" . (int)$product['manufacturer_id'] . "' AND " . $this->db->escape($collection_field) . " LIKE '" . $this->db->escape($product[$collection_field]) . "' ORDER BY sort_order");

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

return $product_data;
}


--------------------
Если у вас много товаров, то стоит зайти в phpMyAdmin и добавить индекс для поля EAN. Это ускорит выборку товаров для коллекции. Добавить индекс можно таким запросом:

ALTER TABLE oc_product ADD INDEX ean (ean)

Обратите внимание на префикс 'oc_', он у вас может отличаться или отсутствовать.
386 viewsvalentin ki, 05:27
Открыть/Комментировать