Перейти к содержимому


Изменение Модификации Товара


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#1 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 06 Август 2014 - 01:32

Здравствуйте. можно ли реализовать вид модификации из данной темы http://forum.storela...ра-модификации/

#2 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 06 Август 2014 - 01:57

Да, можно. Изменения описанные в указанной вами теме форума подойдут для любой темы оформления, главное заменяйте только необходимую часть кода, а не все приведенные там блоки (в некоторых сообщениях могут быть приведены полные коды main.js или шаблона "Товар").

#3 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 06 Август 2014 - 22:20

Просмотр сообщенияСake (06 Август 2014 - 01:57) писал:

Да, можно. Изменения описанные в указанной вами теме форума подойдут для любой темы оформления, главное заменяйте только необходимую часть кода, а не все приведенные там блоки (в некоторых сообщениях могут быть приведены полные коды main.js или шаблона "Товар").
боюсь изменю необходимую часть, помоги пожалуйста именно с кодом из моей темы сделать такой вид модификации.

#4 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 07 Август 2014 - 00:01

Уточняю, в данной инструкции говорится об изменении всего кода шаблона или обновление всего кода шаблона на другой, так вот это мы не выполняем.
Реализуйте поэтапно, то есть сначала выполняем данную инструкцию:
http://forum.storela...ации/#entry4330

#5 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 08 Август 2014 - 21:56

Просмотр сообщенияVaccina (07 Август 2014 - 00:01) писал:

Уточняю, в данной инструкции говорится об изменении всего кода шаблона или обновление всего кода шаблона на другой, так вот это мы не выполняем.
Реализуйте поэтапно, то есть сначала выполняем данную инструкцию:
http://forum.storela...ации/#entry4330
код немного другой. в моем шаблоне он такой, поэтому непонятно что заменять, был бы очень признателен в помощи
мой код:
                            <!-- Модификации товара -->
                            <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
                                 {% FOR goods_modifications_properties %}
                                    <div class="mod goodsDataMainModificationsBlockProperty">
                                       {% FOR values %}
                                           {% IF goods_modifications_properties.values.first %}
                                           <div class="title b">{goods_modifications_properties.NAME}:</div>
                                           <div class="select">
                                               <select name="form[properties][]">
                                           {% ENDIF %}
                                                   <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
                                                   <!-- Если это последний элемент в списке -->
                                           {% IF goods_modifications_properties.values.last %}
                                               </select>
                                           {% ENDIF %}
                                           </div>
                                       {% ENDFOR values %}
                                   </div>
                                {% ENDFOR goods_modifications_properties %}
                                <div class="clear"></div>
                            </div>
                            <!-- Модификации товара-Конец -->

#6 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 09 Август 2014 - 04:59

Попробуйте:
{% IF goods_modifications_properties.values.first %}
										 <div class="title b">{goods_modifications_properties.NAME}:</div>
										 {% ENDIF %}
												 <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
заменить на:
{% IF goods_modifications_properties.values.first %}
										 <div class="title b">{goods_modifications_properties.NAME}:</div>
										 {% ENDIF %}
<input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br />


#7 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 09 Август 2014 - 11:19

Просмотр сообщенияVaccina (09 Август 2014 - 04:59) писал:

Попробуйте:
{% IF goods_modifications_properties.values.first %}
										 <div class="title b">{goods_modifications_properties.NAME}:</div>
										 {% ENDIF %}
												 <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
заменить на:
{% IF goods_modifications_properties.values.first %}
										 <div class="title b">{goods_modifications_properties.NAME}:</div>
										 {% ENDIF %}
<input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br />
не получается, блоки описание, доставки вообще пропали и вид модификации не тотСнимок экрана 2014-08-09 в 12.19.50.png

#8 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 10 Август 2014 - 08:32

Просмотр сообщенияvadim777 (09 Август 2014 - 11:19) писал:

не получается, блоки описание, доставки вообще пропали и вид модификации не тотПрикрепленный файл Снимок экрана 2014-08-09 в 12.19.50.png
Здравствуйте, найдите в шаблоне Товар код
 <div class="tabsHeaders">
			<!-- Если есть какое-либо описание товара -->
			{% IF GOODS_DESCRIPTION_LARGE || GOODS_SEO_DESCRIPTION_SHORT || GOODS_SEO_DESCRIPTION_LARGE %}
				<dt class="active tab" title="Описание &laquo;{GOODS_NAME}&raquo;"><h3>Описание</h3></dt>
			{% ENDIF %}
			
			<!-- Блок описания вариантов доставки -->
			{% IFNOT goods_delivery_empty %}
				<dt class="tab" title="Условия доставки &laquo;{GOODS_NAME}&raquo;"><h3>Условия доставки</h3></dt>
			{% ENDIF %}
			<!-- Сопутствующие товары. Выводим только если есть сопутствующие товары -->
			{% IFNOT related_goods_empty %}
				<dt class="tab" title="Сопутствующие товары &laquo;{GOODS_NAME}&raquo;"><h3>Сопутствующие товары</h3></dt>
			{% ENDIF %}
замените на

 <div class="tabsHeaders">
			<!-- Если есть какое-либо описание товара -->
			{% IF GOODS_DESCRIPTION_LARGE || GOODS_SEO_DESCRIPTION_SHORT || GOODS_SEO_DESCRIPTION_LARGE %}
				<dt class="active tab" title="Описание &laquo;{GOODS_NAME}&raquo;"><h3>Описание</h3></dt>
			{% ENDIF %}
			{% IFNOT goods_features_empty %}
				<dt class="tab" title="Характеристики &laquo;{GOODS_NAME}&raquo;"><h3>Характеристики</h3></dt>
			{% ENDIF %}
			<!-- Блок описания вариантов доставки -->
			{% IFNOT goods_delivery_empty %}
				<dt class="tab" title="Условия доставки &laquo;{GOODS_NAME}&raquo;"><h3>Условия доставки</h3></dt>
			{% ENDIF %}
			<!-- Сопутствующие товары. Выводим только если есть сопутствующие товары -->
			{% IFNOT related_goods_empty %}
				<dt class="tab" title="Сопутствующие товары &laquo;{GOODS_NAME}&raquo;"><h3>Сопутствующие товары</h3></dt>
			{% ENDIF %}


#9 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 14 Август 2014 - 20:23

в общем не реализовать как понимаю вид модификаций в строку? ни одно из решений не помогло.

#10 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 15 Август 2014 - 01:05

Попробуйте делать следующие изменения  - понадобится изменить структуру модификаций в шаблоне "Товар", т.е заменить выпадающий select на кнопку radio. Найдите в вашем шаблоне "Товар" следующий код

<!-- Модификации товара -->
							<div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
								 {% FOR goods_modifications_properties %}
									<div class="mod goodsDataMainModificationsBlockProperty">
									   {% FOR values %}
										   {% IF goods_modifications_properties.values.first %}
										   <div class="title b">{goods_modifications_properties.NAME}:</div>
										   <div class="select">
											   <select name="form[properties][]">
										   {% ENDIF %}
												   <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
												   <!-- Если это последний элемент в списке -->
										   {% IF goods_modifications_properties.values.last %}
											   </select>
										   {% ENDIF %}
										   </div>
									   {% ENDFOR values %}
								   </div>
								{% ENDFOR goods_modifications_properties %}
								<div class="clear"></div>
							</div>
							<!-- Модификации товара-Конец -->

и замените его на

<!-- Модификации товара -->
							<div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
								 {% FOR goods_modifications_properties %}
									<div class="mod goodsDataMainModificationsBlockProperty">
									   {% FOR values %}
										   {% IF goods_modifications_properties.values.first %}
										   <div class="title b">{goods_modifications_properties.NAME}:</div>
										   <div class="select">
										   {% ENDIF %}
												   <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME}
												   <!-- Если это последний элемент в списке -->
										   </div>
									   {% ENDFOR values %}
								   </div>
								{% ENDFOR goods_modifications_properties %}
								<div class="clear"></div>
							</div>
							<!-- Модификации товара-Конец -->

после этого в файле main.js найдите код

// Функция собирает свойства в строку, для определения модификации товара
	function getSlugFromGoodsDataFormModificationsProperties(obj) {
		var properties = new Array();
		$(obj).each(function(i) {
			properties[i] = parseInt($(this).val());
		});
		return properties.sort(function(aaa, bbb) {
			return aaa - bbb
		}).join('_');
	}
   
	var
	// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
	// Запоминаем блоки с информацией по модификациям, для ускорения работы
	goodsDataModifications = $('div.ModificationsList');
	// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
	function updateVisibility(y) {
		// Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
		goodsDataProperties.each(function(j) {
			// Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
			if (j != y) {
				// Проходим по всем значениям текущего свойства модификации товара
				$(this).find('option').each(function() {
					// Записываем временный массив свойств, которые будем использовать для проверки существования модификации
					var checkProperties = new Array();
					$(goodsDataProperties).each(function(i) {
						checkProperties[i] = parseInt($(this).val());
					});
					// Пытаемся найти модификацию соответствующую выбранным значениям свойств
					checkProperties[j] = parseInt($(this).attr('value'));
					// Собираем хэш определяющий модификацию по свойствам
					slug = checkProperties.sort(function(a, B) {
						return a - b
					}).join('_');
					// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
					if (!goodsDataModifications.filter('[rel="' + slug + '"]').length) {
						$(this).attr('disabled', true);
					// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
					} else {
						$(this).attr('disabled', false);
					}
				});
			}
		});
	}
	// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
	// Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
	updateVisibility(0);
	// Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
	updateVisibility(1);
	// Изменение цены товара при изменении у товара свойства для модификации
	goodsDataProperties.each(function(y) {
		$(this).change(function() {
		   
			var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),

и заменить его на код

// Функция собирает свойства в строку, для определения модификации товара
	function getSlugFromGoodsDataFormModificationsProperties(obj) {
		var properties = new Array();
		var reset_arr = new Array();
		$(obj).each(function(i){
		  if($(this).is(':checked')){
				properties[i] = parseInt($(this).val());}
		});
		for(var i in properties) {
		 if(properties[i]) {
		  reset_arr.push(properties[i]);
		 }
		}
		return reset_arr.sort(function(aaa,bbb){return aaa - bbb}).join('_');
	}
   
	var
	// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	goodsDataProperties = $('form.goodsDataForm input[name="form[properties][]"]'),
	// Запоминаем блоки с информацией по модификациям, для ускорения работы
	goodsDataModifications = $('div.ModificationsList');
	// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
	function updateVisibility(y) {
		// Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
		goodsDataProperties.each(function(j) {
			// Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
			if (j != y) {
				// Проходим по всем значениям текущего свойства модификации товара
				$(this).each(function() {
					// Записываем временный массив свойств, которые будем использовать для проверки существования модификации
					var checkProperties = new Array();
					$(goodsDataProperties).each(function(i) {
						checkProperties[i] = parseInt($(this).val());
					});
					// Пытаемся найти модификацию соответствующую выбранным значениям свойств
					checkProperties[j] = parseInt($(this).attr('value'));
					// Собираем хэш определяющий модификацию по свойствам
					slug = checkProperties.sort(function(aaa, bbb) {
						return aaa - bbb
					}).join('_');
					// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
					if (!goodsDataModifications.filter('[rel="' + slug + '"]').length &&
						!goodsDataModifications.filter('[rel="' + checkProperties[0] + '"]').length) {
						$(this).attr('disabled', true);
					// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
					} else {
						$(this).attr('disabled', false);
					}
				});
			}
		});
	}
	// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
	// Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
	updateVisibility(0);
	// Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
	updateVisibility(1);
	// Изменение цены товара при изменении у товара свойства для модификации
	goodsDataProperties.each(function(y) {
		$(this).click(function() {
		   
			var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),


#11 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 15 Август 2014 - 11:38

Просмотр сообщенияСake (15 Август 2014 - 01:05) писал:

Попробуйте делать следующие изменения  - понадобится изменить структуру модификаций в шаблоне "Товар", т.е заменить выпадающий select на кнопку radio. Найдите в вашем шаблоне "Товар" следующий код


как теперь сделать их не вертикально, а горизонтально. и еще серьезная проблема: описание съехалоСнимок экрана 2014-08-15 в 12.40.25.png

#12 batta

batta

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 1 142 сообщений
  • ГородНижний Новгород

Отправлено 15 Август 2014 - 11:54

Просмотр сообщенияvadim777 (15 Август 2014 - 11:38) писал:

как теперь сделать их не вертикально, а горизонтально. и еще серьезная проблема: описание съехалоПрикрепленный файл Снимок экрана 2014-08-15 в 12.40.25.png
Здравствуйте.
В main.css
dt.tab.active h3 {
border-bottom: 0px;
background: #395169;
font-weight: bold;
padding: 10.4px 18px;
}
измените на
dt.tab.active h3 {
border-bottom: 0px;
background: #395169;
font-weight: bold;
padding: 10.5px 18px;
}
Уточните, пожалуйста, что нужно переместить горизонтально?

#13 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 15 Август 2014 - 12:22

Просмотр сообщенияbatta (15 Август 2014 - 11:54) писал:

Здравствуйте.
В main.css
dt.tab.active h3 {
border-bottom: 0px;
background: #395169;
font-weight: bold;
padding: 10.4px 18px;
}
измените на
dt.tab.active h3 {
border-bottom: 0px;
background: #395169;
font-weight: bold;
padding: 10.5px 18px;
}
Уточните, пожалуйста, что нужно переместить горизонтально?
не помогло.
выбор модификаций, сейчас он вертикально.

#14 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 15 Август 2014 - 19:37

Просмотр сообщенияbatta (15 Август 2014 - 11:54) писал:


Уточните, пожалуйста, что нужно переместить горизонтально?

проблема с описанием отпала.
теперь выбор модификаций осталось сделать в строку горизонтально. жду помощи

#15 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 15 Август 2014 - 20:08

Просмотр сообщенияvadim777 (15 Август 2014 - 19:37) писал:

проблема с описанием отпала.
теперь выбор модификаций осталось сделать в строку горизонтально. жду помощи

Здравствуйте.

Добавьте в main.css код
.mod.goodsDataMainModificationsBlockProperty .select {
float: left;
margin-right: 5px;
}


#16 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 15 Август 2014 - 20:53

Просмотр сообщенияDanil (15 Август 2014 - 20:08) писал:

Здравствуйте.

Добавьте в main.css код
.mod.goodsDataMainModificationsBlockProperty .select {
float: left;
margin-right: 5px;
}
небольшой косяк: слово размер не на своем местеСнимок экрана 2014-08-15 в 21.54.14.png

#17 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 15 Август 2014 - 21:12

Просмотр сообщенияvadim777 (15 Август 2014 - 20:53) писал:

небольшой косяк: слово размер не на своем местеПрикрепленный файл Снимок экрана 2014-08-15 в 21.54.14.png

Найдите в шаблоне Товар этот код
<!-- Модификации товара -->
													 <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
																 {% FOR goods_modifications_properties %}
																	 <div class="mod goodsDataMainModificationsBlockProperty">
																		 {% FOR values %}
																				 {% IF goods_modifications_properties.values.first %}
																				 <div class="title b">{goods_modifications_properties.NAME}:</div>
																				 <div class="select">
																				 {% ENDIF %}
																								 <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME}
																								 <!-- Если это последний элемент в списке -->
																								 {% IF goods_modifications_properties.values.first %}
																				 </div>{% ENDIF %}
																		 {% ENDFOR values %}
																 </div>
															 {% ENDFOR goods_modifications_properties %}
															 <div class="clear"></div>
													 </div>
													 <!-- Модификации товара-Конец -->
И замените на
<!-- Модификации товара -->
													 <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
																 {% FOR goods_modifications_properties %}
																	 <div class="mod goodsDataMainModificationsBlockProperty">
																		 {% FOR values %}
																				 {% IF goods_modifications_properties.values.first %}
																				 <div class="title b">{goods_modifications_properties.NAME}:</div>
																				 <br>
																				 <div class="select">
																				 {% ENDIF %}
																								 <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME}
																								 <!-- Если это последний элемент в списке -->
																								 {% IF goods_modifications_properties.values.first %}
																				 </div>{% ENDIF %}
																		 {% ENDFOR values %}
																 </div>
															 {% ENDFOR goods_modifications_properties %}
															 <div class="clear"></div>
													 </div>
													 <!-- Модификации товара-Конец -->


#18 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 15 Август 2014 - 21:17

Просмотр сообщенияDanil (15 Август 2014 - 21:12) писал:


огромное спасибо. и последне, нельзя реализовать кнопки не кружком, как сейчас, а примерно вот так Снимок экрана 2014-08-15 в 22.00.25.png

#19 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 15 Август 2014 - 23:43

подобный вопрос обсуждался у нас на форуме и имеет инструкцию:
http://forum.storela...120#entry137350

#20 vadim777

vadim777

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 302 сообщений

Отправлено 17 Август 2014 - 20:45

Просмотр сообщенияVaccina (15 Август 2014 - 23:43) писал:

подобный вопрос обсуждался у нас на форуме и имеет инструкцию:
http://forum.storela...120#entry137350
там тема сияние, не могу найти то что там написано.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных