Далее, в каталоге:
после $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;
}