День добрый!
Суть вопроса: на странице категорий в 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;
}