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

Как в каталоге вывести атрибуты в карточке товаров?

День добрый!

Суть вопроса: на странице категорий в opencart 3 выводятся товары - добавить решили в карточки товаров их атрибуты.
Но возникла проблема - атрибуты подгружаются одного товара и показываются во всех, при фильтрации (срабатывает JS) обновляются атрибуты (видимо берется следующий product_id) и снова у всех товаров одинаковые атрибуты - но по факту они разные естественно.
Понимаю что проблема в том, что не хватает цикла внутри товара по атрибутам, но сколько не пробовал ничего не получилось.
Подскажите что где добавить и прописать пожалуйста!

Код HTML (упрощенный):
{% if products %}
          {% for product in products %}
           <div class="product-details">
 					<div class="dop_atr">
							{% if product.product_atributes %}
								{% for product_atribute in product.product_atributes %}
									{{ product_atribute.name }}: {{ product_atribute.text }}.
								{% endfor %}
							{% endif %}
				</div>
                  </div>
       {% endfor %}
  {% endif %}


Код Контроллера (часть кода убрал, чтоб не засорять - не влияет на резл:
//products
			$data['products'] = array();
...
			$results = $this->model_catalog_product->getProducts($filter_data);

			foreach ($results as $result) {
				
...
				
				$product_atributes = $this->model_catalog_product->getProductCatAttributes($result['product_id']);

				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'product_atributes' => $product_atributes,
					...
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);
			}


Код Модели (часть кода):
public function getProductCatAttributes($product_id) {
		
		$query = $this->db->query("SELECT ad.name, pa.text FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (ad.attribute_id = pa.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ad.name");

		return $query->rows;
	}
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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