Нужно вывести кубики изображений цветов товаров, как на скрине, для 1.5. Направьте пожалуйста, как сделать? Решения, которые встречал для старых версий не работают. Модуль такой не нахожу. Важно то, что нужно вывести дефолтную опцию "изображения", т.к. есть модули которые создают новый тип опции с указанием цветов виде кода #fffccc. Такое не подходит, т.к. там картинки с текступами.
Vivec, разве этот модуль не подойдет вам? http://wmasteru.ru/threads/Платные-модули-для-opencart-бесплатно.4506/page-78#post-140347
Этот модуль добавляет неуместный функционал, что-то вроде взаимозависимых опций, с настройками. У меня куда более банальная потребность - просто продублировать опцию в категорию)
Использовать для такой задачи модули - это перебор. В /catalog/controller/product/category.php находите строку PHP: $this->data['products'][] = array( Перед ней добавляете: PHP: $product_options = $this->model_catalog_product->getProductOptions($result['product_id']); И получаете все опции товара, если они у него есть, которые дальше можно подставить в массив $this->data['products'] для вывода в шаблон. Только это существенно добавит нагрузку.
Dotrox, пробую таким образом: Вставил PHP: $product_options = $this->model_catalog_product->getProductOptions($result['product_id']); Далее к $this->data['products'][] = array( добавил PHP: 'options' => $product_options, Потом в шаблоне категории, как обсуждалось в похожей теме, добавил: PHP: <?php if ($product['options']) { ?> <div class="options"> <?php foreach ($product['options'] as $option) { ?> <?php if ($option['type'] == 'image') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <div class="option-image"> <?php foreach ($option['option_value'] as $option_value) { ?> <label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] ?>" /></label> <?php } ?> </div> </div> <?php } ?> <?php } ?> </div><?php } ?> Но, ни опций, ни ошибок не вывелось. Могли бы подсказать ошибку? (по php пока в первом класе)
Если задача только вывести доступные цвета, а не делать их выбор прямо в категории, то большая часть этого кода не нужна, а если нужен выбор, то нужно намного больше. Сделайте в контроллере так: PHP: $option_images = array();foreach($product_options as $option){ if ($option['type'] == 'image') { $option_images[] = $this->model_tool_image->resize($option['image'], 25, 25); }} Потом массив $option_images передаёте в шаблон, как вы это сделали с $product_options, и простым циклом там выводите из него изображения. PHP: <?php foreach ($product['options'] as $option_img) { ?> <img src="<?php echo $option_img; ?> /><?php } ?> Только для начала проверьте, что у вас в $product_options выгружается.
Спасибо, что относитесь со вниманием к моему вопросу! Да, только вывести доступные цвета. Итак, внёс в контроллере: PHP: $option_images = array();foreach($product_options as $option){ if ($option['type'] == 'image') { $option_images[] = $this->model_tool_image->resize($option['image'], 25, 25); }} перед PHP: $this->data['products'][] = array( Добавил послу к списку: PHP: 'options' => $option_images, В шаблоне вставил PHP: <?php foreach ($product['options'] as $option_img) { ?> <img src="<?php echo $option_img; ?> /><?php } ?> Ничего не вывелось, но выбило с полсотни ошибок: Код: Invalid argument supplied for foreach() in Z:\home\localhost\www\site\vqmod\vqcache\vq2-catalog_controller_product_category.php on line 361 Смотрю, этом месте этот же код: PHP: $option_images = array();foreach($product_options as $option){ if ($option['type'] == 'image') { $option_images[] = $this->model_tool_image->resize($option['image'], 25, 25); }}
Эм, ну я думал, проверку на то, что $product_options не пустой вы и сами додумаетесь добавить. Полный код выглядит так: PHP: $product_options = $this->model_catalog_product->getProductOptions($result['product_id']);$option_images = array();if(!empty($product_options)){ foreach($product_options as $option){ if ($option['type'] == 'image') { $option_images[] = $this->model_tool_image->resize($option['image'], 25, 25); } }} И сделайте всё же дамп $product_options ($this->log->write($product_options)), потому что та название индексов или степень вложенности может отличаться и код всё равно работать не будет пока не подогнать его под содержимое $product_options.