Absens
-
Публікації
8 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем Absens
-
-
1 час назад, fanatic сказал:
получилось?
Получилось, в базу запись идет) когда понял что надо записать в таблицу option все стало гораздо яснее)
Правда пока не получается подтянуть thumb картинки после сохранения опции, хотя вроде все правильно делаю.
<modification> <name>Options image</name> <version>1.0</version> <code>options_image_extension</code> <author>test</author> <link>test</link> <file path="admin/view/template/catalog/option_form.twig"> <operation> <search><![CDATA[<label class="col-sm-2 control-label" for="input-sort-order">]]></search> <add position="before" offset="1"><![CDATA[ <div class="form-group"> <label class="col-sm-2 control-label" for="input-image">Картинка</label> <div class="col-sm-10"> <a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="{{ thumb }}" alt="" title="" data-placeholder="{{ placeholder }}" /></a> <input type="hidden" name="image" value="{{ image }}" id="input-image" /> </div> </div> ]]></add> </operation> </file> <file path="admin/model/catalog/option.php"> <operation> <search><![CDATA[public function getTotalOptions() {]]></search> <add position="after"><![CDATA[$this->createtable();]]></add> </operation> <operation> <search><![CDATA[public function getTotalOptions() {]]></search> <add position="before"><![CDATA[ public function createtable(){ $this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX ."product_option_value_data` (`product_option_value_data_id` int(11) NOT NULL AUTO_INCREMENT, `product_option_value_id` INT(11) NOT NULL,`product_id` INT(11) NOT NULL, `image` varchar(255) NOT NULL,`model` varchar(255) NOT NULL,`sku` varchar(255) NOT NULL, PRIMARY KEY(`product_option_value_data_id`))"); $query = $this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "option` LIKE 'image'"); if(!$query->num_rows){ $this->db->query("ALTER TABLE `" . DB_PREFIX . "option` ADD `image` varchar(255) NOT NULL AFTER `type`"); } } ]]></add> </operation> <operation> <search><![CDATA[sort_order = '" . (int)$data['sort_order'] . "']]></search> <add position="replace"><![CDATA[sort_order = '" . (int)$data['sort_order'] . "',image = '" . $this->db->escape($data['image']) . "']]></add> </operation> </file> <file path="admin/controller/catalog/option.php"> <operation> <search><![CDATA[protected function getForm() {]]></search> <add position="after"><![CDATA[ if (isset($this->request->post['image'])) { $data['image'] = $this->request->post['image']; } elseif (!empty($option_info)) { $data['image'] = $option_info['image']; } else { $data['image'] = ''; } $this->load->model('tool/image'); if (isset($this->request->post['image']) && is_file(DIR_IMAGE . $this->request->post['image'])) { $data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100); } elseif (!empty($option_info) && is_file(DIR_IMAGE . $option_info['image'])) { $data['thumb'] = $this->model_tool_image->resize($option_info['image'], 100, 100); } else { $data['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100); ]]></add> </operation> </file> </modification>
-
20 минут назад, fanatic сказал:
получилось?
сейчас попробую все правильно сделать
-
понял) язык один на сайте, поэтому языковое многообразие не учитывал. Хотя вряд ли конечно когда-нибудь будет дополнительный язык
-
Почему неправильно?
Просто в модуле записывается в option_description, да и описание опции от другого модуля тоже туда записывается. Мне кажется некритично.
-
4 минуты назад, Dimasscus сказал:
посмотрите ка реализовано например в категории. и сделайте по аналогии
да, я пробовал, но не знаю как сделать так, чтобы путь до выбранной картинки сохранился в базе. С текстовыми полями все более-менее ясно, но похоже что для картинок надо дописать что-то в модели или контроллере.
-
Есть бесплатный модуль (с opencart.com) добавляющий описание к общему пункту опций (во вложении).
Модуль рабочий, все записывается в базу куда надо.
Необходимо переделать поле с описанием - в поле выбора картинки в админке. Т.е. должно быть как на скрине.
Картинка должна записываться в столбец image в таблице option_description.
Подозреваю что реализуется просто, но понимания пока не хватает.
Кто готов помочь, напишите, обсудим стоимость работы.
Суть проблемы описал тут:
-
Добрый день! Пробую сделать так, чтобы и у общего пункта опций была возможность добавить картинку (суть на скрине ниже). В некоторых случаях бывает полезно, если товары сложные.
Нашел для этой цели бесплатный плагин, который добавляет описание к опции (во вложении).
При переделке в модуле текстовой формы в форму загрузки картинки, возникла проблема. Картинка не сохраняется в базе. Подозреваю что проблема в model или в controller.
Делаю так:
Model в admin
<file path="admin/model/catalog/option.php"> <operation> <search><![CDATA[public function getTotalOptions() {]]></search> <add position="after"><![CDATA[$this->createtable();]]></add> </operation> <operation> <search><![CDATA[public function getTotalOptions() {]]></search> <add position="before"><![CDATA[ public function createtable(){ $this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX ."product_option_value_data` (`product_option_value_data_id` int(11) NOT NULL AUTO_INCREMENT, `product_option_value_id` INT(11) NOT NULL,`product_id` INT(11) NOT NULL, `image` varchar(255) NOT NULL,`model` varchar(255) NOT NULL,`sku` varchar(255) NOT NULL, PRIMARY KEY(`product_option_value_data_id`))"); $query = $this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "option_description` LIKE 'image'"); if(!$query->num_rows){ $this->db->query("ALTER TABLE `" . DB_PREFIX . "option_description` ADD `image` varchar(255) NOT NULL AFTER `name`"); } } ]]></add> </operation> <operation> <search><![CDATA[name = '" . $this->db->escape($value['name']) . "']]></search> <add position="replace"><![CDATA[name = '" . $this->db->escape($value['name']) . "',image = '" . $this->db->escape($value['image']) . "']]></add> </operation> <operation> <search><![CDATA['name' => $result['name']]]></search> <add position="replace"><![CDATA['name' => $result['name'],'image' => $result['image']]]></add> </operation> </file>
View в admin
<file path="admin/view/template/catalog/option_form.twig"> <operation> <search><![CDATA[<label class="col-sm-2 control-label" for="input-sort-order">]]></search> <add position="before" offset="1"><![CDATA[ <div class="form-group"> <label class="col-sm-2 control-label" for="input-image">Картинка</label> <div class="col-sm-10"> <a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="{{ thumb }}" alt="" title="" data-placeholder="{{ placeholder }}" /></a> <input type="hidden" name="image" value="{{ image }}" id="input-image" /> </div> </div> ]]></add> </operation> </file>
И в controller в admin подозреваю надо добавить это
if (isset($this->request->post['image'])) { $data['image'] = $this->request->post['image']; } elseif (!empty($module_info)) { $data['image'] = $module_info['image']; } else { $data['image'] = ''; } $this->load->model('tool/image'); if (isset($this->request->post['image']) && is_file(DIR_IMAGE . $this->request->post['image'])) { $data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100); } elseif (!empty($module_info) && is_file(DIR_IMAGE . $module_info['image'])) { $data['thumb'] = $this->model_tool_image->resize($module_info['image'], 100, 100); } else { $data['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100);
С текстовыми полями все понятно, но с полем картинки пока не ясно) Пробовал делать по аналогии полей с картинками в категории и продукте, но похоже что-то упускаю.
Как отключить возможность выбора опций определенному типу опций?
в Opencart 3.x: Загальні питання
Опубліковано:
Думаю достаточно и будет и того, чтобы в шаблоне товара поменять пункт опций "input" на например "div" для chekbox.
( тут: \catalog\view\theme\название темы\template\product\product.twig)
Правда таком случае у всех чекбоксов не будет возможности выбора, т.е. не только у этой опции. Если нужно чтобы только у одной опции с типом "флажок" не было возможности выбора, потребуется отдельно для нее прописать вывод в шаблоне (пример скорее всего на форуме есть), либо через javascript найти эту опцию и убрать возможность выбора.