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


Как Обязать Писать Фамилию


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

#1 kukushka2802

kukushka2802

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 62 сообщений
  • ГородМосква

Отправлено 07 Февраль 2011 - 22:59

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

#2 support

support

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

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 08 Февраль 2011 - 19:22

Как вариант - переименовать поле "Представьтесь" на ФИО, либо сделать 2 поля и на js склеивать их вместе в момент сохранения заказа. Для этого зайдите в редактор тем ("Сайт" -> "Редактор тем") откройте файл "Оформление заказа" найдите встроенным поиском браузера (CTRL+F) код:
<tr>
  <td class="cell1"><label for="contactPerson">Представьтесь пожалуйста:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>

И замените его на
<tr>
  <td class="cell1"><label for="contactPerson">Фамилия:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>
<tr>
  <td class="cell1"><label for="contactPersonName">Имя:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPersonName" name="form[contact][person_name]" class="required" value=""></td>
</tr>

И измените js логику при отправке данных на следующую страницу, заменив вот этот код:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

На этот:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}" onsubmit="$('#contactPerson').val($('#contactPerson').val() + ' ' + $('#contactPersonName').val());"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

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

#3 kukushka2802

kukushka2802

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 62 сообщений
  • ГородМосква

Отправлено 08 Февраль 2011 - 21:52

спасибо

#4 Art-t

Art-t

    Новичок

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

Отправлено 15 Февраль 2011 - 20:41

меня же интересует как наоборот убрать обязательство указывать телефон? что стереть?

#5 support

support

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

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 20 Февраль 2011 - 20:17

К сожалению поле телефона удалить нельзя, его можно лишь скрыть.
Причин несколько:
1) По полю телефона производится поиск клиентов, по этому полю они группируются и находятся.
2) На телефон указанный в этом поле клиенту отправляется SMS о принятии заказа, и дальнейшей работе с ним, для разгрузки операторов на тарифе "Экстра" например

Поэтому поле является обязательным для заполнения. Но его можно скрыть и при этом заполнить случайными данными, чтобы клиенты не группировались по одинаковому телефону.
Например по умолчанию код оформления заказа в разделе "Сайт" > "Редактор тем" шаблон "Оформление заказа" выглядит так:
<tr>
  <td class="cell1"><label for="contactPerson">Представьтесь пожалуйста:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>
<tr>
  <td class="cell1"><label for="contactPhone">Контактный телефон:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPhone" name="form[contact][phone]" class="required" value="{ORDER_FORM_CONTACT_PHONE}"></td>
</tr>
<tr>
  <td class="cell1"><label for="contactEmail">Электропочта:<span class="red contactRegisterNeedElement" {% IFNOT ORDER_FORM_CONTACT_WANT_REGISTER %}style="display:none;"{% ENDIF %}>*</span></label></td>
  <td class="cell2"><input id="contactEmail" name="form[contact][email]" class="email" value="{ORDER_FORM_CONTACT_EMAIL}" /></td>
</tr>

Для изменения и удаления поля контактного телефона можно изменить этот код так:
<tr>
  <td class="cell1"><label for="contactPerson">Представьтесь пожалуйста:<span class="red">*</span></label></td>
  <td class="cell2">
	<input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}">
	<input type="hidden" id="contactPhone" name="form[contact][phone]" class="required" value="{ORDER_FORM_CONTACT_PHONE}{RAND}-{CURRENT_TIME}">
  </td>
</tr>
<tr>
  <td class="cell1"><label for="contactEmail">Электропочта:<span class="red contactRegisterNeedElement" {% IFNOT ORDER_FORM_CONTACT_WANT_REGISTER %}style="display:none;"{% ENDIF %}>*</span></label></td>
  <td class="cell2"><input id="contactEmail" name="form[contact][email]" class="email" value="{ORDER_FORM_CONTACT_EMAIL}" /></td>
</tr>
После этого поле ввода телефона исчезнет и не будет отображаться на этом этапе. Останется только лишь удалить на этапе подтверждения заказа код подтверждения телефона в том же шаблоне "Оформление заказа":
<tr>
  <td class="cell1"><p><span>Телефон для связи</span></p></td>
  <td class="cell2">{ORDER_FORM_CONTACT_PHONE}</td>
</tr>

Далее в шаблоне "Просмотр заказа" потребуется удалить вот этот код:
<tr>
  <td class="cell1"><p><span>Телефон для связи:</span></p></td>
  <td class="cell2">{ORDER_CONTACT_PHONE}</td>
</tr>

И в личном кабинете, в шаблоне "ЛК Информация о заказе" вот этот код:
<tr>
  <td><label>Телефон:</label></td>
  <td>{CLIENT_ORDER_PHONE}</td>
</tr>

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

#6 Art-t

Art-t

    Новичок

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

Отправлено 21 Февраль 2011 - 18:55

Спасибо! все получилось!!

#7 Igork

Igork

    Продвинутый пользователь

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

Отправлено 12 Март 2011 - 11:35

при изменении логики:

>
И измените js логику при отправке данных на следующую страницу, заменив вот этот код:
<form
  {% IF ORDER_STAGE_NUM=1 %}
    action="{ORDER_STAGE_CONTACTS_URL}"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
    action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
    action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
    action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>


На этот:
<form
  {% IF ORDER_STAGE_NUM=1 %}
    action="{ORDER_STAGE_CONTACTS_URL}" onsubmit="$('#contactPerson').val($('#contactPerson').val() + ' ' + $('#contactPerson').val('#contactPersonName'));"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
    action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
    action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
    action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"

при нажатии кнопки далее в первом поле появляется надпись [object Object]

Прикрепленные изображения

  • Безимени-1.jpg


#8 support

support

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

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 12 Март 2011 - 15:23

Вообще говоря подобная логика работы - это скорее фикс и могут возникать различные ошибки. Я та понимают что ошибка здесь в этой записи:
$('#contactPerson').val('#contactPersonName')
тут наверное должно быть:
$('#contactPerson').val()
. Если изменить код по идее ошибка исчезнет.

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

#9 Samonr

Samonr

    Новичок

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

Отправлено 20 Июль 2011 - 09:26

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

#10 Vaccina

Vaccina

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

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

Отправлено 21 Июль 2011 - 02:23

Данный код можно скопировать из поиска, это будет

onblur="this.value=(this.value=='') ? 'Поиск' : this.value;" onfocus="this.value=(this.value=='Поиск') ? '' : this.value;"
который добавляется к текстовому полю.

В вашем случае нужно сделать:

Найти в шаблоне "Оформление заказа"

<textarea id="deliveryComment" name="form[delivery][comment]" {% IF SETTINGS_ORDER_FIELDS_COMMENT=1 %}class="required"{% ENDIF %}>{ORDER_FORM_DELIVERY_COMMENT}</textarea>

далее заменить на

<textarea id="deliveryComment" name="form[delivery][comment]" {% IF SETTINGS_ORDER_FIELDS_COMMENT=1 %}class="required"{% ENDIF %} onblur="this.value=(this.value=='') ? 'введите дополнительный номер телефона, коды купонов на скидку и т.д' : this.value;" onfocus="this.value=(this.value=='введите дополнительный номер телефона, коды купонов на скидку и т.д') ? '' : this.value;">введите дополнительный номер телефона, коды купонов на скидку и т.д{ORDER_FORM_DELIVERY_COMMENT}</textarea>

далее найти

<textarea id="deliveryAddress" name="form[delivery][address]" {% IF SETTINGS_ORDER_FIELDS_ADDRESS=1 %}class="required"{% ENDIF %}>{ORDER_FORM_DELIVERY_ADDRESS}</textarea>

и заменить на

<textarea id="deliveryAddress" name="form[delivery][address]" {% IF SETTINGS_ORDER_FIELDS_ADDRESS=1 %}class="required"{% ENDIF %} onblur="this.value=(this.value=='') ? 'введите ближайшее метро, улицу, дом, корпус, подъезд, домофон, этаж, квартиру' : this.value;" onfocus="this.value=(this.value=='введите ближайшее метро, улицу, дом, корпус, подъезд, домофон, этаж, квартиру') ? '' : this.value;">введите ближайшее метро, улицу, дом, корпус, подъезд, домофон, этаж, квартиру{ORDER_FORM_DELIVERY_ADDRESS}</textarea>


#11 2A-manager

2A-manager

    Продвинутый пользователь

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

Отправлено 15 Октябрь 2011 - 19:50

Хотела добавить строку заполнния городского телефона а у меня в файле js нет таких строк(
вот что есть
ge img'),
        
        
// В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
		MainImageIdObject = $('.goodsDataMainImage input'),
		
		// Получаем идентификатор этого изображения из соседнего input поля
		GoodsImageIconId = $(this).parent().find('input').attr("rel");
	
	// Изменяем главное изображение
	MainImage.attr('src',MediumImageUrl);
	
	// Изменяем идентификатор главного изображения
	MainImageIdObject.attr("rel",GoodsImageIconId);
	
	return false;
  });

  // Функция собирает свойства в строку, для определения модификации товара
  function getSlugFromGoodsDataFormModificationsProperties(obj) {
	var properties = new Array();
	$(obj).each(function(i){
	  properties[i] = parseInt($(this).val());
	});
	return properties.sort(function(a,B){return a - b}).join('_');
  }
  
  
  var goodsDataProperties = $('.goodsDataForm [name="form[properties][]"]');
  
  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(){
	$(this).change(function(){
	  var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
		  modificationBlock			 = $('.goodsDataMainModificationsList[rel="'+slug+'"]'),
		  modificationId				= parseInt(modificationBlock.find('[name="id"]').val()),
		  modificationArtNumber		 = modificationBlock.find('[name="art_number"]').val(),
		  modificationPriceNow		  = parseFloat(modificationBlock.find('[name="price_now"]').val()),
		  modificationPriceNowFormated  = modificationBlock.find('.price_now_formated').html(),
		  modificationPriceOld		  = parseFloat(modificationBlock.find('[name="price_old"]').val()),
		  modificationPriceOldFormated  = modificationBlock.find('.price_old_formated').html(),
		  modificationRestValue		 = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
		  modificationDescription	   = modificationBlock.find('.description').html(),
		  modificationMeasureId		 = parseInt(modificationBlock.find('[name="measure_id"]').val()),
		  modificationMeasureName	   = modificationBlock.find('[name="measure_name"]').val(),
		  modificationMeasureDesc	   = modificationBlock.find('[name="measure_desc"]').val(),
		  modificationMeasurePrecision  = modificationBlock.find('[name="measure_precision"]').val(),
		  modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
		  goodsModificationId		   = $('.goodsDataMainModificationId'),
		  goodsPriceNow				 = $('.goodsDataMainModificationPriceNow'),
		  goodsPriceOld				 = $('.goodsDataMainModificationPriceOld'),
		  goodsAvailable				= $('.goodsDataMainModificationAvailable'),
		  goodsAvailableTrue			= goodsAvailable.find('.available-true'),
		  goodsAvailableFalse		   = goodsAvailable.find('.available-false'),
		  goodsArtNumberBlock		   = $('.goodsDataMainModificationArtNumber'),
		  goodsArtNumber				= goodsArtNumberBlock.find('span');
		  goodsCompareAddButton		 = $('.goodsDataCompareButton.add');
		  goodsCompareDeleteButton	  = $('.goodsDataCompareButton.delete');
		  goodsModDescriptionBlock	  = $('.goodsDataMainModificationsDescriptionBlock');
	   
	   // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
	   if(modificationBlock.length) {
		 // Цена товара
		 goodsPriceNow.html(modificationPriceNowFormated);
  
		 // Старая цена товара
		 if(modificationPriceOld>modificationPriceNow) {
		  goodsPriceOld.html(modificationPriceOldFormated);
		 } else {
		   goodsPriceOld.html('');
		 }
		 
		 // Есть ли товар есть в наличии
		 if(modificationRestValue>0) {
		   goodsAvailableTrue.show();
		   goodsAvailableFalse.hide();
		 // Если товара нет в наличии
		 } else {
		   goodsAvailableTrue.hide();
		   goodsAvailableFalse.show();
		 }
		 // Если товар есть в списке сравнения
		 if(modificationIsHasInCompareList>0) {
		   goodsCompareAddButton.hide();
		   goodsCompareDeleteButton.show();
		 // Если товара нет в списке сравнения
		 } else {
		   goodsCompareAddButton.show();
		   goodsCompareDeleteButton.hide();
		 }
		 
		 // Покажем артикул модификации товара, если он указан
		 if(modificationArtNumber.length>0) {
		   goodsArtNumberBlock.show();
		   goodsArtNumber.html(modificationArtNumber);
		 // Скроем артикул модификации товара, если он не указан
		 } else {
		   goodsArtNumberBlock.hide();
		   goodsArtNumber.html('');
		 }

		 // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
		 if(modificationDescription.length > 0) {
		   goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
		 } else {
		   goodsModDescriptionBlock.hide().html();
		 }
		 
		 
		 // Идентификатор товарной модификации
		 goodsModificationId.val(modificationId);
		 window.location.hash = '?modification='+modificationId;
	   } else {
		 // Отправим запись об ошибке на сервер
		 sendError('no modification by slug '+slug);
		 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
	   }
	});
  });
  
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
	window.location.href = $(this).attr('rel') +
	($(this).attr('rel').indexOf( '?' ) > -1 ? '&' : '?') +
	'id='+
	$('.goodsDataMainModificationId').val()+
	'&from='+
	$('input[name="form[goods_from]"]').val();
	return false;
  });
  
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){

	// Галлерея фотографий для данной модификации товаров
	var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),

	// Главное изображение товара, которое сейчас стоит у товара
	galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),

	// Изображение по которому нужно кликнуть в галлерее изображений
	ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
	
	// Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
	ImageIngallery.nyroModalManual({
	  gallery: 'gallery' +  $(this).attr('rel')
	});

	return false;
  });
  
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
	var checked = true,
		checkboxes = $('.CompareCheckbox:not(.invert)');

	checkboxes.each(function(){
	  if($(this).attr('checked')) {
		checked = false;
		return false;
	  }
	});
	
	checkboxes.each(function(){
	  $(this).attr('checked', checked);
	});
	
	$(this).attr('checked', checked);
  });
  
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){

	$('.CompareGoodsTableTbodyComparisonLine').each(function(){
	  var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
	  if(CheckedCheckbox.length>0) {
		$(this).hide();
	  }
	});

	// отменяем выделение характеристик товаров
	$('.CompareCheckbox').attr('checked',false);

	return false;
  });
  
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	return false;
  });
  
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
	$('.CompareGoodsTableTbodyComparisonLine.same').hide();

	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
	function () { $(this).addClass('hover'); }, 
	function () { $(this).removeClass('hover'); }
  );
  
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
	var CompareCheckbox = $(this).parent().find('.CompareCheckbox');

	if(CompareCheckbox.attr('checked')) {
	  CompareCheckbox.attr('checked', false);
	} else {
	  CompareCheckbox.attr('checked', true);
	}
  });

  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
	ChangePasswordFieldType(this, $('#sites_client_pass'));
	return false;
  });
  
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
	ChangePasswordFieldType(this, $('#contactPassWord'));
	return false;
  });

  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
	caps_lock_on:function(){$("#caps_lock").show();},
	caps_lock_off:function(){$("#caps_lock").hide();}
  });
  
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
	if($(this).attr("checked")) {
	  $('.contactRegisterNeedElement').show();
	  $('#contactEmail, #contactPassWord').addClass('required');
	} else {
	  $('.contactRegisterNeedElement').hide();
	  $('#contactEmail, #contactPassWord').removeClass('required');
	}
  });

  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
	$('.goodsDataOpinionTableRating').stars({
	  inputType: "input",
	  split: 2,
	  captionEl: $(".goodsDataOpinionMsg"),
	  cancelShow: false
	});
  }
  
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
	if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
	  $('#goodsDataOpinionAddBlock').show('blind');
	} else {
	  $('#goodsDataOpinionAddBlock').hide('blind');
	  return false;
	}
  });

  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
	$('#goodsDataOpinionAddBlock').hide('blind');
  });

  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
	RefreshImageAction(this,1,1);
	$('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
	return false;
  });
  
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
  
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
	
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
  
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
	
	var 
	  deliveryId = $(this).attr('deliveryid')
	  ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
	  ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
	  ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
	  ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
	  ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	;

	// Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	if('true' == $(this).attr('rel')) {
	  $(this).attr('checked', false);
	  $(this).attr('rel', 'false');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.show();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.hide();
	  
	// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	} else {
	  $('.deliveryZoneRadio').attr('rel', 'false');
	  $(this).attr('rel', 'true');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.hide();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	  
	  // Выделяем вариант доставки к которому относится зона доставки
	  deliveryBlock.attr('checked', true);
	}
	
  });

   $("#deliveryConvenientDate").datepicker({
	dayNames		: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	dayNamesMin	  : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	closeText		: 'Готово',
	currentText	  : 'Сегодня' ,
	duration		: '',
	monthNames	  : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
	monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	yearRange		: "-6:+6",
	dateFormat	  : 'dd.mm.yy',
	minDate		 : new Date(),
	firstDay		: 1
  });
});


Просмотр сообщенияsupport (08 Февраль 2011 - 19:22) писал:

Как вариант - переименовать поле "Представьтесь" на ФИО, либо сделать 2 поля и на js склеивать их вместе в момент сохранения заказа. Для этого зайдите в редактор тем ("Сайт" -> "Редактор тем") откройте файл "Оформление заказа" найдите встроенным поиском браузера (CTRL+F) код:
<tr>
  <td class="cell1"><label for="contactPerson">Представьтесь пожалуйста:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>

И замените его на
<tr>
  <td class="cell1"><label for="contactPerson">Фамилия:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>
<tr>
  <td class="cell1"><label for="contactPersonName">Имя:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPersonName" name="form[contact][person_name]" class="required" value=""></td>
</tr>

И измените js логику при отправке данных на следующую страницу, заменив вот этот код:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

На этот:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}" onsubmit="$('#contactPerson').val($('#contactPerson').val() + ' ' + $('#contactPersonName').val());"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

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


#12 Vaccina

Vaccina

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

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

Отправлено 16 Октябрь 2011 - 04:38

Вам нужно только изменить шаблон "Оформление заказа" т.е в файле main.js вам ничего менять не нужно.

#13 2A-manager

2A-manager

    Продвинутый пользователь

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

Отправлено 16 Октябрь 2011 - 10:38

у меня телефоны не склеиваются! я вижу только 1(((

Просмотр сообщенияVaccina (16 Октябрь 2011 - 04:38) писал:

Вам нужно только изменить шаблон "Оформление заказа" т.е в файле main.js вам ничего менять не нужно.


#14 Vaccina

Vaccina

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

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

Отправлено 17 Октябрь 2011 - 19:43

Пожалуйста, объясните по подробнее свою проблему.

#15 YulyaTsar

YulyaTsar

    Пользователь

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

Отправлено 22 Октябрь 2011 - 11:43

И измените js логику при отправке данных на следующую страницу, - что это значит? это в стилях и скриптах? но там нет такого кода.

#16 YulyaTsar

YulyaTsar

    Пользователь

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

Отправлено 22 Октябрь 2011 - 11:51

все понятно спасибо

#17 shpionsale

shpionsale

    Новичок

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

Отправлено 24 Октябрь 2011 - 17:29

Пытался изменить js логику, но, видимо, что-то пошло не так, потому что тот раздел, который нужно было заменить куда-то исчез. Что теперь делать?

Вот, это то, что есть:

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
  var img=document.createElement('img');
  img.src = 'http://storeland.ru/...IComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
  img.style.position = 'absolute';
  img.style.top = '-9999px';

  try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
  return false;
}

// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/\D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(\d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}

// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
  var
    // Ссылка по которой кликнули
    LObject = $(LinkObject),
    // Объект у которого изменяем тип с password на text
    IObject = $(InputObject),
    // Старый текст ссылки
    txtOld = LObject.text(),
    // Новый текст ссылки
    txtNew = LObject.attr('rel');

  // Если объекты не получены, завершим работу функции
  if( LObject.length==0 || IObject.length==0 ) {
    return false;
  }

  // Изменяем у ссылки текст со старого на новый
  LObject.html(txtNew);
  // Старый текст ссылки сохраняем в атрибуте rel
  LObject.attr('rel', txtOld);

  // Изменяем тип input поля
  if(IObject[0].type == 'text') {
    IObject[0].type = 'password';
  } else {
    IObject[0].type = 'text';
  }
}

// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
  if(cnt>13) {
    return false;
  }

  $(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
  num = (num==6)?0:num;
  setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}

$(document).ready(function(){
  // Кнопки на сайте если подгружен модуль Jquery.UI
  if(typeof($('input:submit, input.button').button) == "function" ) {
    $('input:submit, input.button').button();
  }

  // Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
  $('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').validate();

  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.order form input:submit[name="toprev"]').click(function(){
    var act = this.form.action;
    this.form.action = act + ( act.indexOf( '\?' ) > -1 ? '&' : '?' ) + 'toprev=1';
    this.form.submit();
    return false;
  });
  
  // Настройки галереи изображений
  $.nyroModalSettings({
    // из всех элементов с атрибут rel="gallery" будем создавать галерею
    gallery: 'gallery',
    // Включаем прокрутку с последнего изображения на первое
    galleryLoop: true
  });
  
  // Увеличение изображение при клике на него и открытие галереи изображений
  $('.goodsDataMainImage a, .goodsDataMainImageZoom a').click(function(){
        
        // Идентификатор главной картинки
    var goodsImageId = $('.goodsDataMainImage input').attr("rel"),
        
        // Маленькое изображение, по которому на самом деле будем кликать
        goodsImageIconElement = $('.goodsDataMainImagesIcon input[rel="'+goodsImageId+'"]').parent().find('a');

    // Для иконки изображения запустим галерею  
    goodsImageIconElement.nyroModalManual();
    return false;
  });
  
  // Добавление товара в корзину через ajax
  $('.goodsDataForm, .goodsToCartFromCompareForm').submit(function(){
    $(this).nyroModalManual({
      formIndicator: 'ajax_q',  // Value added when a form is sent
      minWidth: 420, // Minimum width
      minHeight: 150, // Minimum height
      gallery: null // Gallery name if provided
    });
    return false;
  });
  
  // Изменение главного изображения товара при нажатии на миниатюру
  $('.goodsDataMainImagesIcon a').click(function(){
        // Путь к среднему изображению
    var MediumImageUrl = $(this).find('img').attr('rel'),
        
        // Главное изображение, в которое будем вставлять новое изображение
        MainImage = $('.goodsDataMainImage img'),
        
        // В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
        MainImageIdObject = $('.goodsDataMainImage input'),
        
        // Получаем идентификатор этого изображения из соседнего input поля
        GoodsImageIconId = $(this).parent().find('input').attr("rel");
    
    // Изменяем главное изображение
    MainImage.attr('src',MediumImageUrl);
    
    // Изменяем идентификатор главного изображения
    MainImageIdObject.attr("rel",GoodsImageIconId);
    
    return false;
  });

  // Функция собирает свойства в строку, для определения модификации товара
  function getSlugFromGoodsDataFormModificationsProperties(obj) {
    var properties = new Array();
    $(obj).each(function(i){
      properties[i] = parseInt($(this).val());
    });
    return properties.sort(function(a,B){return a - b}).join('_');
  }
  
  
  var goodsDataProperties = $('.goodsDataForm [name="form[properties][]"]');
  
  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(){
    $(this).change(function(){
      var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
          modificationBlock             = $('.goodsDataMainModificationsList[rel="'+slug+'"]'),
          modificationId                = parseInt(modificationBlock.find('[name="id"]').val()),
          modificationArtNumber         = modificationBlock.find('[name="art_number"]').val(),
          modificationPriceNow          = parseFloat(modificationBlock.find('[name="price_now"]').val()),
          modificationPriceNowFormated  = modificationBlock.find('.price_now_formated').html(),
          modificationPriceOld          = parseFloat(modificationBlock.find('[name="price_old"]').val()),
          modificationPriceOldFormated  = modificationBlock.find('.price_old_formated').html(),
          modificationRestValue         = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
          modificationDescription       = modificationBlock.find('.description').html(),
          modificationMeasureId         = parseInt(modificationBlock.find('[name="measure_id"]').val()),
          modificationMeasureName       = modificationBlock.find('[name="measure_name"]').val(),
          modificationMeasureDesc       = modificationBlock.find('[name="measure_desc"]').val(),
          modificationMeasurePrecision  = modificationBlock.find('[name="measure_precision"]').val(),
          modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
          goodsModificationId           = $('.goodsDataMainModificationId'),
          goodsPriceNow                 = $('.goodsDataMainModificationPriceNow'),
          goodsPriceOld                 = $('.goodsDataMainModificationPriceOld'),
          goodsAvailable                = $('.goodsDataMainModificationAvailable'),
          goodsAvailableTrue            = goodsAvailable.find('.available-true'),
          goodsAvailableFalse           = goodsAvailable.find('.available-false'),
          goodsArtNumberBlock           = $('.goodsDataMainModificationArtNumber'),
          goodsArtNumber                = goodsArtNumberBlock.find('span');
          goodsCompareAddButton         = $('.goodsDataCompareButton.add');
          goodsCompareDeleteButton      = $('.goodsDataCompareButton.delete');
          goodsModDescriptionBlock      = $('.goodsDataMainModificationsDescriptionBlock');
      
       // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
       if(modificationBlock.length) {
         // Цена товара
         goodsPriceNow.html(modificationPriceNowFormated);
  
         // Старая цена товара
         if(modificationPriceOld>modificationPriceNow) {
          goodsPriceOld.html(modificationPriceOldFormated);
         } else {
           goodsPriceOld.html('');
         }
        
         // Есть ли товар есть в наличии
         if(modificationRestValue>0) {
           goodsAvailableTrue.show();
           goodsAvailableFalse.hide();
         // Если товара нет в наличии
         } else {
           goodsAvailableTrue.hide();
           goodsAvailableFalse.show();
         }
         // Если товар есть в списке сравнения
         if(modificationIsHasInCompareList>0) {
           goodsCompareAddButton.hide();
           goodsCompareDeleteButton.show();
         // Если товара нет в списке сравнения
         } else {
           goodsCompareAddButton.show();
           goodsCompareDeleteButton.hide();
         }
        
         // Покажем артикул модификации товара, если он указан
         if(modificationArtNumber.length>0) {
           goodsArtNumberBlock.show();
           goodsArtNumber.html(modificationArtNumber);
         // Скроем артикул модификации товара, если он не указан
         } else {
           goodsArtNumberBlock.hide();
           goodsArtNumber.html('');
         }

         // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
         if(modificationDescription.length > 0) {
           goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
         } else {
           goodsModDescriptionBlock.hide().html();
         }
        
        
         // Идентификатор товарной модификации
         goodsModificationId.val(modificationId);
         window.location.hash = '?modification='+modificationId;
       } else {
         // Отправим запись об ошибке на сервер
         sendError('no modification by slug '+slug);
         alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
       }
    });
  });
  
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
    window.location.href = $(this).attr('rel') +
    ($(this).attr('rel').indexOf( '\?' ) > -1 ? '&' : '?') +
    'id='+
    $('.goodsDataMainModificationId').val()+
    '&from='+
    $('input[name="form[goods_from]"]').val();
    return false;
  });
  
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){

    // Галлерея фотографий для данной модификации товаров
    var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),

    // Главное изображение товара, которое сейчас стоит у товара
    galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),

    // Изображение по которому нужно кликнуть в галлерее изображений
    ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
    
    // Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
    ImageIngallery.nyroModalManual({
      gallery: 'gallery' +  $(this).attr('rel')
    });

    return false;
  });
  
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
    var checked = true,
        checkboxes = $('.CompareCheckbox:not(.invert)');

    checkboxes.each(function(){
      if($(this).attr('checked')) {
        checked = false;
        return false;
      }
    });
    
    checkboxes.each(function(){
      $(this).attr('checked', checked);
    });
    
    $(this).attr('checked', checked);
  });
  
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){

    $('.CompareGoodsTableTbodyComparisonLine').each(function(){
      var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
      if(CheckedCheckbox.length>0) {
        $(this).hide();
      }
    });

    // отменяем выделение характеристик товаров
    $('.CompareCheckbox').attr('checked',false);

    return false;
  });
  
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
    $('.CompareGoodsTableTbodyComparisonLine:hidden').show();
    return false;
  });
  
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
    $('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
    $('.CompareGoodsTableTbodyComparisonLine:hidden').show();
    
    $(this).addClass('CompareGoodsTableFilterSelected');
    return false;
  });

  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
    $('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
    $('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
    $('.CompareGoodsTableTbodyComparisonLine.same').hide();

    $(this).addClass('CompareGoodsTableFilterSelected');
    return false;
  });

  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
    function () { $(this).addClass('hover'); },
    function () { $(this).removeClass('hover'); }
  );
  
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
    var CompareCheckbox = $(this).parent().find('.CompareCheckbox');

    if(CompareCheckbox.attr('checked')) {
      CompareCheckbox.attr('checked', false);
    } else {
      CompareCheckbox.attr('checked', true);
    }
  });

  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
    ChangePasswordFieldType(this, $('#sites_client_pass'));
    return false;
  });
  
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
    ChangePasswordFieldType(this, $('#contactPassWord'));
    return false;
  });

  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
    caps_lock_on:function(){$("#caps_lock").show();},
    caps_lock_off:function(){$("#caps_lock").hide();}
  });
  
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
    if($(this).attr("checked")) {
      $('.contactRegisterNeedElement').show();
      $('#contactEmail, #contactPassWord').addClass('required');
    } else {
      $('.contactRegisterNeedElement').hide();
      $('#contactEmail, #contactPassWord').removeClass('required');
    }
  });

  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
    $('.goodsDataOpinionTableRating').stars({
      inputType: "input",
      split: 2,
      captionEl: $(".goodsDataOpinionMsg"),
      cancelShow: false
    });
  }

  
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
    if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
      $('#goodsDataOpinionAddBlock').show('blind');
    } else {
      $('#goodsDataOpinionAddBlock').hide('blind');
      return false;
    }
  });

  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
    $('#goodsDataOpinionAddBlock').hide('blind');
  });

  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
    RefreshImageAction(this,1,1);
    $('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
    return false;
  });
  
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
    $(this)[0].form.submit();
  });

  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
    
    // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
    if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
      $('.deliveryZoneRadio:checked').click().attr('checked', false);
    }
  });
  
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
    
    var
      deliveryId = $(this).attr('deliveryid')
      ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
      ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
      ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
      ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
      ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
    ;

    // Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
    if('true' == $(this).attr('rel')) {
      $(this).attr('checked', false);
      $(this).attr('rel', 'false');
      
      // Показываем цену по умолчанию
      deliveryDefaultPriceBlock.show();
      // Скрываем цену образованную от зоны
      deliveryZonePriceBlock.hide();
      
    // Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
    } else {
      $('.deliveryZoneRadio').attr('rel', 'false');
      $(this).attr('rel', 'true');
      
      // Показываем цену по умолчанию
      deliveryDefaultPriceBlock.hide();
      // Скрываем цену образованную от зоны
      deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
      
      // Выделяем вариант доставки к которому относится зона доставки
      deliveryBlock.attr('checked', true);
    }
    
  });
  
  $("#deliveryConvenientDate").datepicker({
dayNames     : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
dayNamesMin   : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
closeText     : 'Готово',
currentText   : 'Сегодня' ,
duration     : '',
monthNames   : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
yearRange     : "-6:+6",
dateFormat   : 'dd.mm.yy',
minDate         : new Date(),
firstDay     : 1
});
});

#18 Vaccina

Vaccina

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

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

Отправлено 25 Октябрь 2011 - 16:04

Не совсем вас понимаю. Пожалуйста, объясните по подробнее. Там где говориться изменить js логику - это имеется в виду что нужно сделать правки в шаблоне "Оформление заказа" а не в файле main.js

#19 shpionsale

shpionsale

    Новичок

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

Отправлено 26 Октябрь 2011 - 20:30

Просмотр сообщенияVaccina (25 Октябрь 2011 - 16:04) писал:

Не совсем вас понимаю. Пожалуйста, объясните по подробнее. Там где говориться изменить js логику - это имеется в виду что нужно сделать правки в шаблоне "Оформление заказа" а не в файле main.js
Все понял, спасибо

#20 nvamillion

nvamillion

    Новичок

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

Отправлено 07 Ноябрь 2011 - 09:46

Просмотр сообщенияsupport (08 Февраль 2011 - 19:22) писал:

Как вариант - переименовать поле "Представьтесь" на ФИО, либо сделать 2 поля и на js склеивать их вместе в момент сохранения заказа. Для этого зайдите в редактор тем ("Сайт" -> "Редактор тем") откройте файл "Оформление заказа" найдите встроенным поиском браузера (CTRL+F) код:
<tr>
  <td class="cell1"><label for="contactPerson">Представьтесь пожалуйста:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>

И замените его на
<tr>
  <td class="cell1"><label for="contactPerson">Фамилия:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPerson" name="form[contact][person]" class="required" value="{ORDER_FORM_CONTACT_PERSON}"></td>
</tr>
<tr>
  <td class="cell1"><label for="contactPersonName">Имя:<span class="red">*</span></label></td>
  <td class="cell2"><input id="contactPersonName" name="form[contact][person_name]" class="required" value=""></td>
</tr>

И измените js логику при отправке данных на следующую страницу, заменив вот этот код:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

На этот:
<form 
  {% IF ORDER_STAGE_NUM=1 %}
	action="{ORDER_STAGE_CONTACTS_URL}" onsubmit="$('#contactPerson').val($('#contactPerson').val() + ' ' + $('#contactPersonName').val());"
  {% ELSEIF ORDER_STAGE_NUM=2 %}
	action="{ORDER_STAGE_DELIVERY_URL}"
  {% ELSEIF ORDER_STAGE_NUM=3 %}
	action="{ORDER_STAGE_PAYMENT_URL}"
  {% ELSEIF ORDER_STAGE_NUM=4 %}
	action="{ORDER_STAGE_CONFIRM_URL}"
  {% ENDIF %}
  method="post"
>

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

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




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

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