Данное решение для Опенкарта 3.х
Допустим если есть желание менять цвет иконки у продукта если он есть в закладках
будем проверять и создавать массив
$this->session->data['wishlist']
Почему создавать? При регистрации/авторизации он будет пуст
Итак, идем в контроллер header.php
там уже есть вот такой код
if ($this->customer->isLogged()) {
$this->load->model('account/wishlist');
$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), $this->model_account_wishlist->getTotalWishlist());
} else {
$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0));
}
после
$this->load->model('account/wishlist');
добавить
$p_wishlist = $this->model_account_wishlist->getWishlist();
if( !empty($p_wishlist) ) {
foreach( $p_wishlist as $val ) {
if( isset($this->session->data['wishlist']) && !in_array($val['product_id'], $this->session->data['wishlist']) ) {
$this->session->data['wishlist'][] = $val['product_id'];
}
}
}
Допустим будем проверять на странице категории
в контроллере category.php находим вот такой код
$data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1,
'rating' => $result['rating'],
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
);
добавляем в массив значение
'is_not' => ( isset($this->session->data['wishlist']) && in_array($result['product_id'], $this->session->data['wishlist']) ) ? true : false,
в итоге вот так выходит
$data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1,
'rating' => $result['rating'],
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
'is_not' => ( isset($this->session->data['wishlist']) && in_array($result['product_id'], $this->session->data['wishlist']) ) ? true : false
);
Теперь на фронте в шаблоне делаем проверку
{% if product.is_not %}
есть в закладках
{% else %}
нет продукта в закладках
{% endif %}
В общем всё. Далее, думаю сами разберетесь что куда вставить в проверке на фронте