Gann Опубліковано: 13 грудня 2017 Share Опубліковано: 13 грудня 2017 Добрый вечер) В общем, не пойму как записать в базу сопутствующие товары, полученные с помощью сторонней функции. Начну с этого: (трактую что ниже написано, правильно?) Если существует запрос добавления продукта (с админки) - то присваеваем продукт полученный с админки иначе если существует (ранее добавленный продукт), то присваиваем продукту - продукт, полученный из базы, иначе - продукт - это массив данные по сопутствующим товарам - это массив распаковываем массив... Верно? if (isset($this->request->post['product_related'])) { $products = $this->request->post['product_related']; } elseif (isset($this->request->get['product_id'])) { $products = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); } else { $products = array(); } $data['product_relateds'] = array(); foreach ($products as $product_id) { $related_info = $this->model_catalog_product->getProduct($product_id); if ($related_info) { $data['product_relateds'][] = array( 'product_id' => $related_info['product_id'], 'name' => $related_info['name'] ); } } Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Далее, в каталоге: после $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); я указал if(count($results)<6){// если уже выводятся сопуствующие, не более $temp = $this->model_catalog_product->getProductSimilar($this->request->get['product_id'],6); foreach($temp as $t){ if(!empty($t)){ $results[] = $t; } } } временно = обращаемся к новой функции по бд Затем сама функция в модели public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Вот и хотелось бы - полученный в новой функции из модели результат - записать в таблицу. Чтобы каждый раз не выполнять запросы к БД. Можно так сделать? Хотелось бы записать и при добавлении новых товаров - перезаписывать данные в таблице по сопутствующим товарам. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Наверное это всё что новое нужно из catalog/ в admin/ перенести, да? Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 В общем, нужен генератор сопутствующих товаров по принципу: товары из той же категории, закольцованные по кругу. Кажется, кэш поможет. Чтобы каждый раз не генерировались налету. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Сопутствующие товары - как записать в базу? Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Далее, в каталоге: после $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); я указал if(count($results)<6){// если уже выводятся сопуствующие, не более $temp = $this->model_catalog_product->getProductSimilar($this->request->get['product_id'],6); foreach($temp as $t){ if(!empty($t)){ $results[] = $t; } } } временно = обращаемся к новой функции по бд Затем сама функция в модели public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Вот и хотелось бы - полученный в новой функции из модели результат - записать в таблицу. Чтобы каждый раз не выполнять запросы к БД. Можно так сделать? Хотелось бы записать и при добавлении новых товаров - перезаписывать данные в таблице по сопутствующим товарам. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Наверное это всё что новое нужно из catalog/ в admin/ перенести, да? Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 В общем, нужен генератор сопутствующих товаров по принципу: товары из той же категории, закольцованные по кругу. Кажется, кэш поможет. Чтобы каждый раз не генерировались налету. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Сопутствующие товары - как записать в базу? Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Вот и хотелось бы - полученный в новой функции из модели результат - записать в таблицу. Чтобы каждый раз не выполнять запросы к БД. Можно так сделать? Хотелось бы записать и при добавлении новых товаров - перезаписывать данные в таблице по сопутствующим товарам. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Наверное это всё что новое нужно из catalog/ в admin/ перенести, да? Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 В общем, нужен генератор сопутствующих товаров по принципу: товары из той же категории, закольцованные по кругу. Кажется, кэш поможет. Чтобы каждый раз не генерировались налету. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Сопутствующие товары - как записать в базу? Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Наверное это всё что новое нужно из catalog/ в admin/ перенести, да? Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 В общем, нужен генератор сопутствующих товаров по принципу: товары из той же категории, закольцованные по кругу. Кажется, кэш поможет. Чтобы каждый раз не генерировались налету. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Сопутствующие товары - как записать в базу?
Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 В общем, нужен генератор сопутствующих товаров по принципу: товары из той же категории, закольцованные по кругу. Кажется, кэш поможет. Чтобы каждый раз не генерировались налету. Надіслати Поділитися на інших сайтах More sharing options... Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Gann Опубліковано: 13 грудня 2017 Автор Share Опубліковано: 13 грудня 2017 Возникла ещё идея: записать в БД из catalog/model/catalog/product Так можно сделать? Прямо в функции: public function getProductSimilar($product_id,$limit) { $product_data = array(); // находим категорию, в которой нах. товар $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'"); $category_id = $category->row['category_id']; // делаем выборку товаров из этой же категории, которые следуют после данного товара $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } if(count($query->rows) < $limit){ // если в категории после товара меньше лимита... $plimit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit); foreach ($sql->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts