Перейти к содержанию
View in the app

A better way to browse. Learn more.

Русскоязычное сообщество Opencart

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

В связи с блокировкой банка QIWI оплата через сайт не возможна.
Для оплаты и получения дополнений просьба писать в личные сообщения 
Admin*у
или в Телеграмм https://t.me/pascha_opencart
После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

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

Последние посетители 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.