Задать вопрос
@Mracula

Где делается проверка массива товаров opencart перед выводом в шаблон?

На опенкарте 2.3 стоит модуль Симпл блог, в этом модуле есть возможность добавлять к статье связанные товары.
Проблема в следующем:
Если добавить в связанные товары, товар со статусом "отключено" то естественно товар не появляется в статье но место под него появляется 62b27e14cd3ee139886083.png
Также формируется 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&amp;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;
		}
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы