[/spoil]
по этому для каждой опции с разной маленькой картинкой у меня создавались отдельные опции.
Если вы используйте модуль openstock, то у меня есть решение такой проблемы:
Заменить код в файле catalog/mode/catalog/product.tpl:
[spoil]
PHP:
foreach ($product_option_query->rows as $product_option) {
if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {
$product_option_value_data = array();
$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");
[/spoil]
Заменить на:
[spoil]
PHP:
foreach ($product_option_query->rows as $product_option) {
if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {
$product_option_value_data = array();
$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");
foreach ($product_option_value_query->rows as $product_option_value) {
/* Доделки */ if ($product_option_value['image']=="no_image.jpg" ||$product_option_value['image']=="") {
$sql = "
SELECT `image`
FROM `" . DB_PREFIX . "product_option_relation`
WHERE `var` = '".$product_option_value['product_option_value_id']."'
AND `product_id` = '".$product_id."'
LIMIT 1";
$image_option = $this->db->query($sql);
if($image_option->num_rows) {
$product_option_value['image'] = $image_option->row['image'];
}
if (empty($product_option_value['image'])){
$sql = "
SELECT `image`
FROM `" . DB_PREFIX . "product_option_relation`
WHERE `var` LIKE '".$product_option_value['product_option_value_id']."%'
AND `product_id` = '".$product_id."'
LIMIT 1";
$image_option = $this->db->query($sql);
if($image_option->num_rows) {
$product_option_value['image'] = $image_option->row['image'];
}
}
if (!$product_option_value['image']) {
$product_option_value['image'] = 'color-product/'.$product_option_value['name'].'.jpg';
if (empty($product_option_value['image'])){
$product_option_value['image'] = "no_image.jpg";
}
}
/* Доделки */
[/spoil]
Небольшое разъяснение по данному коду:
1. Модуль openstok содержит таблицу
Для просмотра ссылки Войди или Зарегистрируйся в которой хранятся больше картинки опции (которые мы будем использовать в уменьшенном виде на странице товара, для вывода маленьких картинок опции)
2. В списке опции, в админке создаем одну опции, для примера "черный", не загружать картинку для нее, и дублировать опции не нужно.
3. Картинку мы не загружали, по тому, что все маленькие картинки мы будем получать из oc_product_option_relation
4.Для каждого товара(у которых есть большие картинки опции) нужно будет загружать их на страницу openstosk в товаре:
[spoil]