Добрый день! Пробую сделать так, чтобы и у общего пункта опций была возможность добавить картинку (суть на скрине ниже). В некоторых случаях бывает полезно, если товары сложные.
Нашел для этой цели бесплатный плагин, который добавляет описание к опции (во вложении).
При переделке в модуле текстовой формы в форму загрузки картинки, возникла проблема. Картинка не сохраняется в базе. Подозреваю что проблема в 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);
С текстовыми полями все понятно, но с полем картинки пока не ясно) Пробовал делать по аналогии полей с картинками в категории и продукте, но похоже что-то упускаю.
optiondescription3x.ocmod.zip