Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

3 способа улучшения опций в OpenCart


Рекомендуемые сообщения

В этом посте  мы расскажем вам о трех способах, которые с легкостью помогут вам изменить карточку товара:

1. Добавление описания для опции

2. Добавление количества на складе для опций продукта

3. Удаление цены в опциях

Предложенная реализация придаст вашей странице продукта более четкий, информативный и аккуратный вид, который, несомненно, произведет положительное впечатление на ваших клиентов. 

Добавление описания для опции

options_opencart2.png

Добавление описания к опциям продукта является хорошим способом для того, чтобы дать своим клиентам четкое представление о различных видах продукции, которую может предложить ваш интернет-магазин. Обеспечение клиентов информацией - это всегда хорошая идея, потому что это даст им более глубокое понимание того, что ожидать, когда они закажут вашу продукцию. Это, с другой стороны, приведет к увеличению доверия и уверенности в вашем магазине.

Ниже мы покажем вам, как можно реализовать эту функцию в простой и быстрой форме.

Создание OCMod файла

Процедура начинается с создания ocmod файла, используя любой текстовый редактор. Сохраните файл как namebyyourchoice.ocmod.xml и не забывайте, что расширение ocmod.xml является обязательным.

<modification>
	<name>Add description to product options</name>
	<version>1.0</version>
	<link></link>
	<author></author>
	<code>add_description_to_product_options</code>
	
	<file path="admin/language/*/catalog/option.php">
		<operation>
			<search><![CDATA[$_['entry_sort_order']    = 'Sort Order';]]></search>
			<add position="after"><![CDATA[$_['entry_description']  = 'Description:';]]></add>
		</operation>
	</file>

	<file path="admin/controller/catalog/option.php">
		<operation>
			<search><![CDATA[$data['entry_sort_order'] = $this->language->get('entry_sort_order');]]></search>
			<add position="after"><![CDATA[
				$data['entry_description'] = $this->language->get('entry_description');
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[public function index() {]]></search>
			<add position="after"><![CDATA[
			$query = $this->db->query("DESC " . DB_PREFIX . "option_value_description description");
			if (!$query->num_rows) {
				$this->db->query("ALTER TABLE " . DB_PREFIX . "option_value_description ADD description TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL");
			}
			]]></add>
		</operation>
	</file>

	<file path="admin/model/catalog/option.php">
		<operation>
			<search><![CDATA[
			$this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value_id . "', language_id = '" . (int)$language_id . "', option_id = '" . (int)$option_id . "', name = '" . $this->db->escape($option_value_description['name']) . "'");
			]]></search>
			<add position="replace"><![CDATA[
			$this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value_id . "', language_id = '" . (int)$language_id . "', option_id = '" . (int)$option_id . "', name = '" . $this->db->escape($option_value_description['name']) . "', description = '" . $this->db->escape($option_value_description['description']) . "'");
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[
			$option_value_description_data[$option_value_description['language_id']] = array('name' => $option_value_description['name']);
			]]></search>
			<add position="replace"><![CDATA[
			$option_value_description_data[$option_value_description['language_id']] = array('name' => $option_value_description['name'], 'description' => $option_value_description['description']);
			]]></add>
		</operation>
	</file>

	<file path="admin/view/template/catalog/option_form.tpl">
		<operation>
			<search><![CDATA[
				<label class="col-sm-2 control-label" for="input-sort-order"><?php echo $entry_sort_order; ?></label>
			]]></search>
			<add position="before"><![CDATA[
				<label class="col-sm-2 control-label" for="input-sort-order"><?php echo $entry_description; ?></label>
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[
				<td colspan="3"></td>
			]]></search>
			<add position="replace"><![CDATA[
			<td colspan="4"></td>
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[
				<td class="text-left required"><?php echo $entry_option_value; ?></td>
			]]></search>
			<add position="after"><![CDATA[
				<td class="text-left">Option Value Description</td>
			]]></add>
		</operation>		
		
		<operation>
			<search><![CDATA[
				<td class="text-left required"><?php echo $entry_option_value; ?></td>
			]]></search>
			<add position="replace"><![CDATA[
				<td class="text-left required" style="width:30%;"><?php echo $entry_option_value; ?></td>
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[
				<?php echo $footer; ?>
			]]></search>
			<add position="after"><![CDATA[
				<script type="text/javascript">
                    <?php foreach ($languages as $language) { ?>
                        $("#description-<?php echo $option_value_row; ?>-<?php echo $language['language_id']; ?>").summernote({height: 100});
                    <?php } ?>
                </script>
			]]></add>
		</operation>
					
					
		<operation>
			<search><![CDATA[
				<td class="text-left"><a href="" id="thumb-image<?php echo $option_value_row; ?>" data-toggle="image" class="img-thumbnail"><img src="<?php echo $option_value['thumb']; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a>
			]]></search>
			<add position="before"><![CDATA[
			<!--ProductOption Description Start-->
				<td class="text-left">
					<div class="tabbable"> 
						<div class="tab-navigation">
							<ul class="nav nav-tabs mainMenuTabs">
								<?php $class="active";  foreach ($languages as $language) { ?>
									<li class="<?php echo $class; ?>"><a href="#tab-<?php echo $language['code']; ?>" data-toggle="tab"><img src="view/image/flags/<?php echo $language['image']; ?>"/></a></li>
								<?php  $class="";}?>
							</ul>
                     	 </div>
						<div class="tab-content">
							<?php $class=" active"; foreach ($languages as $language) { ?>
								<div id="tab-<?php echo $language['code']; ?>" language-id="<?php echo $language['language_id']; ?>" class="row-fluid tab-pane<?php echo $class; ?> language"><div>
                             	<textarea language-id="<?php echo $language['language_id']; ?>" name="option_value[<?php echo $option_value_row; ?>][option_value_description][<?php echo $language['language_id']; ?>][description]" id="description-<?php echo $option_value_row; ?>-<?php echo $language['language_id']; ?>"><?php echo isset($option_value['option_value_description'][$language['language_id']]) ? $option_value['option_value_description'][$language['language_id']]['description'] : ''; ?></textarea>
                        	<?php $class="";} ?>
                      	</div>
                    </div>
				</td>
				<script type="text/javascript">
                    <?php foreach ($languages as $language) { ?>
                        $("#description-<?php echo $option_value_row; ?>-<?php echo $language['language_id']; ?>").summernote({height: 100});
                    <?php } ?>
                </script>
			<!--ProductOption Description End-->
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[
				 html += '  <td class="text-left"><a href="" id="thumb-image' + option_value_row + '" data-toggle="image" class="img-thumbnail"><img src="<?php echo $placeholder; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a><input type="hidden" name="option_value[' + option_value_row + '][image]" value="" id="input-image' + option_value_row + '" /></td>';
			]]></search>
			<add position="before"><![CDATA[
				html += '<td class="text-left">';
				html += '	<div class="tabbable">';
				html += '		<div class="tab-navigation">';
				html += '			<ul class="nav nav-tabs mainMenuTabs">';
				<?php $class="active";  foreach ($languages as $language) { ?>
				html += '    <li class="<?php echo $class; ?>"><a href="#tab-<?php echo $language['code']; ?>" data-toggle="tab"><img src="view/image/flags/<?php echo $language['image']; ?>"/></a></li>';
				<?php  $class="";}?>
				html += '  			</ul>';
				html += '  </div>';
				
				html += '	<div class="tab-content">'
				<?php $class="active"; foreach ($languages as $language) { ?>
				html += '		<div id="tab-<?php echo $language['code']; ?>" language-id="<?php echo $language['language_id']; ?>" class="row-fluid tab-pane<?php echo $class; ?> language"><div>';
				html += '			<textarea language-id="<?php echo $language['language_id']; ?>" name="option_value[<?php echo $option_value_row; ?>][option_value_description][<?php echo $language['language_id']; ?>][description]" id="description-<?php echo $option_value_row; ?>-<?php echo $language['language_id']; ?>"><?php echo isset($option_value['option_value_description'][$language['language_id']]) ? $option_value['option_value_description'][$language['language_id']]['description'] : ''; ?></textarea>';
				<?php $class="";} ?>
				html += '		</div>';
				html += '	</div>';
				html += '</td>';
			]]></add>
		</operation>
	</file>

	<file path="catalog/controller/product/product.php">
		<operation>
			<search><![CDATA[$data['text_tags'] = $this->language->get('text_tags');]]></search>
			<add position="after"><![CDATA[
				$data['text_view'] = $this->language->get('text_view');
			]]></add>
		</operation>
		
		<operation>
			<search><![CDATA['name'                    => $option_value['name'],]]></search>
			<add position="after"><![CDATA[
			'description'             => html_entity_decode($option_value['description'], ENT_QUOTES, 'UTF-8'),
			]]></add>
		</operation>
	</file>

	<file path="catalog/language/*/product/product.php">
		<operation>
			<search><![CDATA[$_['text_error']               = 'Product not found!';]]></search>
			<add position="after"><![CDATA[
			$_['text_view']         = 'view more';
			]]></add>
		</operation>
	</file>

	<file path="catalog/model/catalog/product.php">
		<operation>
			<search><![CDATA['name'                    => $product_option_value['name'],]]></search>
			<add position="after"><![CDATA[
			'description'             => (isset($product_option_value['description']) ? $product_option_value['description'] : ''),
			]]></add>
		</operation>
	</file>

	<file path="catalog/view/theme/*/template/product/product.tpl">
		<operation>
			<search><![CDATA[(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)]]></search>
			<add position="after"><![CDATA[
				 <?php } ?>
				 <?php if(isset($option_value) && $option_value['description']) { ?>
                        <a class="view" id="<?php echo $option_value['option_value_id']; ?>"> View more </a>
                        <div id="desc_<?php echo $option_value['option_value_id']; ?>" style="display:none">
                            <?php echo $option_value['description'] ?>
                        </div>
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[
				 <?php echo $footer; ?>
			]]></search>
			<add position="before"><![CDATA[
 				<script>
                    $(document).ready(function(){
    				$('.view').hover(function(){  
					 $("#desc_".concat(this.id)).fadeIn(500)
    					},function(){
     				  $("#desc_".concat(this.id)).fadeOut(500)
   						})
					});
				</script>
			]]></add>
		</operation>
	</file>
</modification>

Добавление количества на складе для опций продукта

options_qu.png

В дополнение к описанию параметров продукта, добавление количества товара к вашей продукции также увеличивает количество информации о продукции доступной для Ваших клиентов. Кроме того, эта реализация может иметь положительное влияние на показатели переходов. А  ограниченный объем количества создает ощущение срочности, уменьшает колебания и, таким образом, повышает готовность к покупке.

<modification>
	<name>Add product quantity to product options</name>
	<version>1.0</version>
	<link></link>
	<author></author>
	<code>quantity_to_product_options</code>
	
	
	<file path="catalog/view/theme/*/template/product/product.tpl">
		<operation>
			<search><![CDATA[ (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)]]></search>
			<add position="after"><![CDATA[
				<?php } if (isset($option_value['quantity']) && $option_value['quantity'] > 10) { ?>
					&nbsp;[<?php echo $option_value['quantity']; ?>&nbsp;<?php echo $text_pcs; ?>]
				<?php } elseif ($option_value['quantity']) { ?>
					&nbsp;[<span style="color: #F00"><?php echo str_replace('{quant}', $option_value['quantity'], $text_only); ?></span>]
			]]></add>
		</operation>
	</file>
	
	<file path="catalog/controller/product/product.php">
		<operation>
			<search><![CDATA['name'                    => $option_value['name'],]]></search>
			<add position="after"><![CDATA['quantity' => $option_value['quantity'],]]></add>
		</operation>
		
		<operation>
			<search><![CDATA[$data['entry_qty'] = $this->language->get('entry_qty');]]></search>
			<add position="after"><![CDATA[
				$data['text_pcs'] = $this->language->get('text_pcs');
				$data['text_only'] = $this->language->get('text_only');
			]]></add>
		</operation>
	</file>
	
	<file path="catalog/language/*/product/product.php">
		<operation>
			<search><![CDATA[$_['entry_qty']                = 'Qty';]]></search>
			<add position="after"><![CDATA[
				$_['text_pcs']		= 'pcs.';
				$_['text_only']		= ' Only {quant} pcs. left ';
			]]></add>
		</operation>
	</file>
	
</modification>

Изменение цвета

Когда наличие товара - менее 10 штук, цвет количества становится красным. Это может быть изменено путем добавления цвета в следующем фрагменте кода:

<span style="color: #F00"><?php echo str_replace('{quant}', $option_value['quantity'],$text_only); ?></span>

 

Удаление цены в опциях
Еще одно небольшое изменение - это удаление цены у опции товара.

options_noprice.png

Для большинства розничных продавцов эта функция весьма позитивна. Однако, для некоторых покупателей эта функция нежелательна, ведь когда они делают заказ и выбирают опцию товара - в корзине видят цену выше основной. Тем не менее, если вы готовы "принять этот риск», необходимо следовать ранее упомянутым шагам и использовать следующий код:

<modification>
	<name>Remove option price</name>
	<version>1.0</version>
	<link></link>
	<author></author>
	<code>remove_option_price</code>

	<file path="catalog/view/theme/*/template/product/product.tpl">
		<operation>
			<search><![CDATA[<?php foreach ($option['product_option_value'] as $option_value) { ?>]]></search>
			<add position="after"><![CDATA[<?php unset($option_value['price']); $option_value['price'] ="";?>]]>
			</add>
		</operation>
	</file>
	
</modification>

Вывод:

Конечный результат, который вы получите после применения трех модификаций, должен быть похож на этот:

options_end.png

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

 

prod_options_add_descr.xml prod_options_add_quantity.xml prod_options_remove_price.xml

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...