На опенкарте 2.3 стоит модуль Симпл блог, в этом модуле есть возможность добавлять к статье связанные товары.
Проблема в следующем:
Если добавить в связанные товары, товар со статусом "отключено" то естественно товар не появляется в статье но место под него появляется
Также формируется HTML под выключенный товар:
<div class="product-layout col-md-3 col-sm-6 col-xs-12">
<div class="product-thumb simple-blog-product">
<div class="caption text-center">
<div class="name">
<a href="http://test.ru/index.php?route=product/product&product_id="></a>
</div>
</div>
</div>
</div>
:)) Можно конечно просто не добавлять выключенные товары в связанные, но список товаров формируется посредством autocomplete ( а там не проверяется статус товара), по этому выключенные товары попадают в список.
Вопрос в следующем, где-то в модуле блога в модели или в контроллере товар должен проверятся на статус включен/выключен или это как то по другому в опенкарте?
Контроллер блога (часть со связанными товарами:
// related product
$related_product = $this->model_simple_blog_article->getArticleProductRelated($simple_blog_article_id);
$data['products'] = array();
foreach($related_product as $product) {
$product_info = $this->model_catalog_product->getProduct($product['product_id']);
$image = ($product_info['image']) ? $this->model_tool_image->resize($product_info['image'], $this->config->get('theme_default_image_related_width'), $this->config->get('theme_default_image_related_height')) : false;
$price = (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) ? $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->config->get('config_currency')) : false;
$special = ((float)$product_info['special']) ? $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->config->get('config_currency')) : false;
$rating = ($this->config->get('config_review_status')) ? (int)$product_info['rating'] : false;
$data['products'][] = array(
'product_id' => $product_info['product_id'],
'thumb' => $image,
'name' => $product_info['name'],
'price' => $price,
'special' => $special,
'rating' => $rating,
'reviews' => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']),
'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']),
);
}
и модель:
public function getArticleProductRelated($simple_blog_article_id) {
$sql = $this->db->query("SELECT * FROM `" . DB_PREFIX . "simple_blog_article_product_related` WHERE simple_blog_article_id='" . (int)$simple_blog_article_id . "'");
return $sql->rows;
}