Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Absens

Новачок
  
  • Публікації

    8
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем Absens

  1. Думаю достаточно и будет и того, чтобы в шаблоне товара поменять пункт опций "input" на например "div" для chekbox.

    ( тут: \catalog\view\theme\название темы\template\product\product.twig)

    Правда таком случае у всех чекбоксов не будет возможности выбора, т.е. не только у этой опции. Если нужно чтобы только у одной опции с типом "флажок" не было возможности выбора, потребуется отдельно для нее прописать вывод в шаблоне (пример скорее всего на форуме есть), либо через javascript найти эту опцию и убрать возможность выбора.

    • +1 1
  2. 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>

     

  3. понял) язык один на сайте, поэтому языковое многообразие не учитывал. Хотя вряд ли конечно когда-нибудь будет дополнительный язык

  4. Почему неправильно?

    Просто в модуле записывается в option_description, да и описание опции от другого модуля тоже туда записывается. Мне кажется некритично.

  5. 4 минуты назад, Dimasscus сказал:

    посмотрите ка реализовано например в категории. и сделайте по аналогии

    да, я пробовал, но не знаю как сделать так, чтобы путь до выбранной картинки сохранился в базе. С текстовыми полями все более-менее ясно, но похоже что для картинок надо дописать что-то в модели или контроллере.

  6. Есть бесплатный модуль (с opencart.com) добавляющий описание к общему пункту опций (во вложении).

    Модуль рабочий, все записывается в базу куда надо.

    Необходимо переделать поле с описанием - в поле выбора картинки в админке. Т.е. должно быть как на скрине.

    Картинка должна записываться в столбец image в таблице option_description.

    Подозреваю что реализуется просто, но понимания пока не хватает.

    Кто готов помочь, напишите, обсудим стоимость работы.

     

    Суть проблемы описал тут: 

     

    Снимок.JPG

    optiondescription3x.ocmod.zip

  7. Добрый день! Пробую сделать так, чтобы и у общего пункта опций была возможность добавить картинку (суть на скрине ниже). В некоторых случаях бывает полезно, если товары сложные.

    Нашел для этой цели бесплатный плагин, который добавляет описание к опции (во вложении).

    При переделке в модуле текстовой формы в форму загрузки картинки, возникла проблема. Картинка не сохраняется в базе. Подозреваю что проблема в 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);

     

    С текстовыми полями все понятно, но с полем картинки пока не ясно) Пробовал делать по аналогии полей с картинками в категории и продукте, но похоже что-то упускаю. 

    Снимок.JPG

    optiondescription3x.ocmod.zip

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.