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


Публикации Vialex

62 публикаций создано Vialex (учитываются публикации только с 27-Июнь 23)



#147731 Кнопка "заказ В 1 Клик" Рядом С Кнопкой "корзина"

Отправлено от Vialex в 14 Июль 2014 - 14:16 в Общие вопросы

Просмотр сообщенияsupport 2.0 (09 Май 2013 - 16:27) писал:

Здравствуйте, загрузите к себе на сайт прикрепленный файл. Теперь зайдите в файл main.js и в самом конце добавьте
// Быстрый заказ
function quickorder(formSelector) {
// Находим форму, которую отправляем на сервер, для добавления товара в корзину
var formBlock = $($(formSelector).get(0));
// Проверка на существование формы отправки запроса на добавление товара в корзину
if(1 > formBlock.length || formBlock.get(0).tagName != 'FORM') {
alert('Не удалось найти форму добавления товара в корзину');
return false;
}
// Получаем данные формы, которые будем отправлять на сервер
var formData = formBlock.serializeArray();
// Сообщаем серверу, что мы пришли через ajax запрос
formData.push({name: 'ajax_q', value: 1});
// Так же сообщим ему, что нужно сразу отобразить форму быстрого заказа
formData.push({name: 'fast_order', value: 1});
// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
$.ajax({
type : "POST",
cache : false,
url : formBlock.attr('action'),
data : formData,
success: function(data) {
var width = $(window).width() * 0.8;
if(width < 800) width = 'auto';
$.fn.nyroModalManual({
		 content: data,
		 gallery: null,
		 resizable: true,
		 autoSizable: true,
		 windowResize: true,
		 width: width,
		 minHeight: 230
});
}
});
return false;
}

теперь зайдите в шаблон HTML и после
<!-- Скрипты магазина -->
вставьте
<link rel="stylesheet" href="{FORALL_STYLES_PATH}fancybox/2.1.4/jquery.fancybox.css" />
<script src="{FORALL_STYLES_PATH}fancybox/2.1.4/jquery.fancybox.pack.js"></script>

теперь зайдите в шаблон Товар и найдите строчку
<a class="more-link" onclick="$('.goodsDataForm').submit(); return false;" title="Положить &laquo;{GOODS_NAME}&raquo; в корзину" href="#">В корзину</a><br /><br />
сразу после нее (нажмите enter и переместитесь на пустую строчку) вставьте
<a class="more-link" onclick="quickorder('.goodsDataForm'); return false;" title="Положить &laquo;{GOODS_NAME}&raquo; в корзину" href="#">Быстрый заказ</a><br /><br />

теперь зайдите в шаблон Товары и найдите
<form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{goods.MIN_PRICE_NOW_ID}" class="goodsListForm">
			 <p>
			 <input type="hidden" name="hash" value="{HASH}" />
			 <input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" />
			 <input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" />
			 <a class="readmore" onclick="$('#goodsListFormId{goods.MIN_PRICE_NOW_ID}').submit(); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Купить</a>
			 </p>
		 </form>
сразу после него вставьте
<form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{goods.MIN_PRICE_NOW_ID}" class="goodsListForm">
			 <p>
			 <input type="hidden" name="hash" value="{HASH}" />
			 <input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" />
			 <input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" />
			 <a class="readmore" onclick="quickorder('#goodsListFormId{goods.MIN_PRICE_NOW_ID}'); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Быстрый заказ</a>
			 </p>
		 </form>
не получилось найти в шаблоне "товар" нужную строчку. помогите настроить для моей темы (вроде Осень)
1. "заказать обратный звонок"
2. оформление заказа шаг 1 из шаг 4 заменить на одну форму, как в форме "Быстрое оформление заказа"
3. и где изменить надпись
Ваш заказ успешно оформлен!

Спасибо.

Редактирую. Не надо, все уже решил.



#198481 Изменение Типа Выбора Модификации

Отправлено от Vialex в 09 Май 2015 - 00:13 в Страница товара

1. Подскажите пожалуйста, а как переставить фильтры (последовательность)
Изображение



2. и как убрать фильтры внизу... НЕ НА ВЕРХУ, А ВНИЗУ страницы.


Изображение

Заранее спасибо, с уважением.

p.s. C праздником всех, Товарищи!



#198511 Изменение Типа Выбора Модификации

Отправлено от Vialex в 09 Май 2015 - 09:10 в Страница товара

 Vaccina (09 Май 2015 - 01:20) писал:

В конце шаблона Товары найдите и удалите:
<div class="views">
			 <label>Вид списка:</label>
			 {% IF GOODS_VIEW_TYPE=2 %}
			 <a onclick="goods_view_type_change('goods_view_type=1')" title="Отображать список товаров в виде таблицы с 3-мя товарами на одну строку" class="grid"></a>
			 <a title="Список товаров категории &laquo;{% IF IS_FULL_CATALOG %}Каталог{% ELSE %}{CATEGORY_NAME}{% ENDIF %}&raquo; сейчас отображается в виде списка, где один товар занимает одну строку" class="list-active"></a>
			 {% ELSE %}
			 <a title="Список товаров категории &laquo;{% IF IS_FULL_CATALOG %}Каталог{% ELSE %}{CATEGORY_NAME}{% ENDIF %}&raquo; сейчас отображается в виде таблицы, по 3 товара на строку" class="grid-active"></a>
			 <a onclick="goods_view_type_change('goods_view_type=2')" title="Отображать список товаров в виде списка" class="list"></a>
			 {% ENDIF %}
		 </div>
		
		 <!-- Поле выбора сортировки -->
		 {% IF goods_show_order_fields %}
			 <div class="sort-by">
			 <label>Сортировать по:</label>
			 <span class="select-box">
				 <select name="goods_search_field_id" onchange="this.form.submit();">
				 {% FOR goods_order_fields %}
					 <option value="{goods_order_fields.ID}" {% IF goods_order_fields.SELECTED %}selected="selected"{% ENDIF %}>{goods_order_fields.NAME}</option>
				 {% ENDFOR %}
				 </select>
			 </span>
			 </div>
		 {% ENDIF %}
	
		 <!-- Блок возможности изменения лимитов выдачи -->
		 {% IF goods_show_per_page %}
			 <div class="limit">
			 <label>Показывать по:</label>
			 <span class="select-box">
				 <select name="per_page" onchange="this.form.submit();">
				 {% FOR goods_per_page_list %}
					 <option value="{goods_per_page_list.LIMIT}" {% IF goods_per_page_list.SELECTED %}selected="selected"{% ENDIF %}>{goods_per_page_list.LIMIT}</option>
				 {% ENDFOR %}
				 </select>
			 </span>
			 <label>результатов</label>
			 </div>
		 {% ENDIF %}
		 <!-- /Блок возможности изменения лимитов выдачи -->

далее найдите:
<!-- Блок изменения вида списка и поля сортировки -->
		 <div class="views">
			 <label>Вид списка:</label>
			 {% IF GOODS_VIEW_TYPE=2 %}
			 <a onclick="goods_view_type_change('goods_view_type=1')" title="Отображать список товаров в виде таблицы с 3-мя товарами на одну строку" class="grid"></a>
			 <a title="Список товаров категории &laquo;{% IF IS_FULL_CATALOG %}Каталог{% ELSE %}{CATEGORY_NAME}{% ENDIF %}&raquo; сейчас отображается в виде списка, где один товар занимает одну строку" class="list-active"></a>
			 {% ELSE %}
			 <a title="Список товаров категории &laquo;{% IF IS_FULL_CATALOG %}Каталог{% ELSE %}{CATEGORY_NAME}{% ENDIF %}&raquo; сейчас отображается в виде таблицы, по 3 товара на строку" class="grid-active"></a>
			 <a onclick="goods_view_type_change('goods_view_type=2')" title="Отображать список товаров в виде списка" class="list"></a>
			 {% ENDIF %}
		 </div>

перенесите его, поставив после:
<option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option>
					 {% ENDFOR %}
					 </select>
				 </span>
				 </div>
			 {% ENDFOR %}
			
			 {% ENDIF %}
			 <div class="clear"></div>
		 </div>
		 </form>
	 {% ENDIF %}
	 <!-- END Если в тарифном плане подключен модуль фильтров по товарам -->
	 <!-- /Верхний блок, изменяющий отображение данных выдачи товаров -->

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



#198421 Изменение Типа Выбора Модификации

Отправлено от Vialex в 08 Май 2015 - 11:02 в Страница товара

 Vaccina (02 Май 2012 - 20:48) писал:

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

Обновленный файл main.js

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
var img=document.createElement('img');
img.src = 'http://storeland.ru/error/js?desc='+encodeURIComponent(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(){

// Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
$('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').submit(function(){
if($(this).valid()) {
SubmitButton = $(this).find('input:submit, button:submit').attr('disabled', true);
setTimeout('SubmitButton.attr("disabled", false);', 10000);
}
}).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, .goodsListForm').submit(function(){

$(this).nyroModalManual({
formIndicator: 'ajax_q', // Value added when a form is sent
minWidth: 450, // Minimum width
minHeight: 140, // 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();
var reset_arr = new Array();
$(obj).find('input[type="radio"]').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(a,B){return a - b}).join('_');
}


var
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio'),

// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.goodsDataMainModificationsList');


// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
function updateVisibility (y) {
// Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
goodsDataProperties.each(function(j){
// Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
if( j != y ) {
// Проходим по всем значениям текущего свойства модификации товара
$(this).find('input[type="radio"]').each(function(){
// Записываем временный массив свойств, которые будем использовать для проверки существования модификации
//var checkProperties = new Array();
/*$(goodsDataProperties).each(function(i){
if($(this).is(':checked'))
checkProperties[i] = parseInt($(this).val());
});*/
// Пытаемся найти модификацию соответствующую выбранным значениям свойств
//checkProperties[j] = parseInt($(this).attr('value'));
// Собираем хэш определяющий модификацию по свойствам
//slug = checkProperties.sort(function(a,B){return a - b}).join('_');
slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties);
// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
$(this).attr('disabled', 'disabled');
// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
} else {
$(this).removeAttr('disabled');
}
});
}
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
updateVisibility (0);

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
$(this).find('input[type="radio"]').click(function(){
var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
modificationBlock = goodsDataModifications.filter('[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('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
}

// Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
updateVisibility(y);
});
});

// Кнопка добавления товара на сравнение сравнения товаров
$('.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
	});
});

В данном новом файле было сделано несколько изменений.

Блок в шаблоне "Товар" должен выглядеть следующим образом

{% FOR goods_modifications_properties %}
<td class="goodsDataMainModificationsBlockProperty">
<!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь -->
{% FOR values %}

<!-- Если это первый элемент в списке -->
{% IF goods_modifications_properties.values.first %}
<span class="goodsDataMainModificationsRadio">
<strong>{goods_modifications_properties.NAME}:</strong><br />
{% ENDIF %}

<input type="radio" name="form[properties][{goods_modifications_properties.ID}]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br />

{% IF goods_modifications_properties.values.last %}
</span>
{% ENDIF %}

{% ENDFOR %}

</td>

{goods_modifications_properties.index | is_divided("2","</tr><tr>","")}
{% ENDFOR %}

Для старого файла main.js попробуйте обновить функцию
getSlugFromGoodsDataFormModificationsProperties
, переменную
goodsDataProperties
, а так же цикл

goodsDataProperties.each(function(y){
$(this).find('input[type="radio"]').click(function(){
var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),

делаю последовательно,и вот когда заменил блок в шаблоне Товар вылезает ошибкаИзображение

помогите пожалуйста



#204033 Изменение Типа Выбора Модификации

Отправлено от Vialex в 06 Июль 2015 - 15:02 в Страница товара

"Ben, i need help" (из к/ф "Брат - 2")

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


Изображение



#204691 Изменение Типа Выбора Модификации

Отправлено от Vialex в 13 Июль 2015 - 15:49 в Страница товара

АУ! Помогите пожалуйста #251 не смог найти и решить самостоятельно!!!



#148297 Полезная Информация Для Повышения Продаж

Отправлено от Vialex в 17 Июль 2014 - 12:24 в Предложения по улучшению сервиса

Добавил код, ничего не изменилось, так же



#148223 Полезная Информация Для Повышения Продаж

Отправлено от Vialex в 17 Июль 2014 - 02:54 в Предложения по улучшению сервиса

Просмотр сообщенияAlexandr (01 Февраль 2014 - 12:57) писал:

Маска появилась и работает, но ошибка js осталась.

Просмотр сообщенияСake (01 Февраль 2014 - 02:47) писал:

В данном случае проблема вероятно связана с различием использования версий jQuery, т.е библиотека рассчитана на немного более старшую версию, чем используется у вас на сайте. В данном случае вероятно будет проще изменить некоторые вызовы внутри библиотеки jquery.inputmask.js. Откройте данный файл для редактирования и найдите в нем все строки с использованием

.prop(

и замените на

.attr(

А у меня не появляется маска, только +7 и вот http://joxi.ru/kBDHU_3JTJB0DlvWruk
В чем может быть проблема?



#148546 Полезная Информация Для Повышения Продаж

Отправлено от Vialex в 18 Июль 2014 - 20:12 в Предложения по улучшению сервиса

Просмотр сообщенияСake (17 Июль 2014 - 23:16) писал:

На данный момент в вашем шаблоне "Быстрый заказ" предложенный код отсутствует. Если вы ранее его добавляли и не заметили результата, то попробуйте его добавить повторно, только у же в виде кода

<script>
$(function() {
setTimeout(function() {
$("#contactPhone").inputmask("+7(999)9999999");
}, 800);
});
</script>

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

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

<label for="sites_client_phone" class="required">Укажите номер телефона, по которому мы сможем с Вами связаться*</label>

        <div class="input-box">

        <input type="text" id="contactPhone" name="form[contact][phone]" value="+7{ORDER_FORM_CONTACT_PHONE}" maxlength="14" class="required input-text"/>

Спасибо ))) Хороших выходных!

Просмотр сообщенияSL-227422 (18 Июль 2014 - 20:10) писал:

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

<label for="sites_client_phone" class="required">Укажите номер телефона, по которому мы сможем с Вами связаться*</label>

<div class="input-box">

<input type="text" id="contactPhone" name="form[contact][phone]" value="+7{ORDER_FORM_CONTACT_PHONE}" maxlength="14" class="required input-text"/>

Спасибо ))) Хороших выходных!

Ах, нет. Когда нажимаешь оформить корзину, появляется ошибка http://joxi.ru/W1XJU_3JTJD0RzCAXaQ
Что не так?



#148606 Полезная Информация Для Повышения Продаж

Отправлено от Vialex в 19 Июль 2014 - 12:18 в Предложения по улучшению сервиса

Просмотр сообщенияСake (18 Июль 2014 - 23:24) писал:

У вас по всей видимости появляется ошибка

ReferenceError: yaCounter25568927 is not defined

которая связана с счетчиком яндекса. Данная ошибка на оформление заказа не влияет. Вы можете отключить визуальное уведомление об ошибках путем замены в шаблоне "HTML" строки

{% IF JAVASCRIPT_BUG_HUNTING_URL %}

на строку

{% IFNOT JAVASCRIPT_BUG_HUNTING_URL %}

Спасибо. Заменил. все ок.



#148213 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 17 Июль 2014 - 01:24 в Другое

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



#148298 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 17 Июль 2014 - 12:35 в Другое

Заработала! Добавил еще required="required" и к телефону, получилось так:

<div class="customer-name">
<div class="field name-firstname">
<label for="callback_person" class="required">Представьтесь пожалуйста<em>*</em></label>
<div class="input-box">
<input id="callback_person" size="24" type="text" class="light" name="form[{ANTISPAM_FORM_FIELD_NAME_CALLBACK_PERSON}]"
value="{FORM_CALLBACK_PERSON}" maxlength="50" class="required" required="required" />
</div>
</div>

<div class="field name-lastname">
<label for="callback_phone" class="required">Телефон<em>*</em></label>
<div class="input-box">
<input id="callback_phone" size="24" type="text" class="light" name="form[{ANTISPAM_FORM_FIELD_NAME_CALLBACK_PHONE}]"
value="{FORM_CALLBACK_PHONE}" maxlength="255" class="required input-text" required="required" />
</div>
</div>
</div>

Спасибо всем за участие!
Теперь, когда не заполняя поля, нажимаем отправить, получаем вот что http://joxi.ru/P5nHU_3JTJB6DimGcqA



#148159 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 16 Июль 2014 - 17:23 в Другое

помогите, хелп!



#147753 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 14 Июль 2014 - 18:13 в Другое

Спасибо. все сделал, всё получилось. Подскажите пожалуйста,
1) а как мне переместить кнопку под телефоны?
2) можно ли сделать так, чтобы она не открывалось отдельным окном, а появлялось всплывающем окном? (как при "быстром заказе")



#147751 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 14 Июль 2014 - 17:47 в Другое

сделал как написано появилась полоса разделитель блоков, и ничего больше нет помогите!



#148073 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 16 Июль 2014 - 11:38 в Другое

попробовал, все равно пропускает без заполнения полей ((



#147767 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 14 Июль 2014 - 19:19 в Другое

Спасибо DARS, разобрался. а как с этим
2) можно ли сделать так, чтобы она (обратный звонок) не открывалось отдельным окном, а появлялось всплывающем окном? (как при "быстром заказе")



#147886 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 15 Июль 2014 - 09:19 в Другое

Спасибо, Castiel! Заработала как надо.



#147963 Обратный Звонок Для Шаблона Осень

Отправлено от Vialex в 15 Июль 2014 - 16:46 в Другое

Добрый вечер! обнаружил, что в "форма обратного звонка" пропускает, если даже поля не заполнены. В редакторе шаблонов в шаблоне вроде прописано
                <label for="callback_person" class="required">Представьтесь пожалуйста<em>*</em></label>
                <div class="input-box">
                  <input id="callback_person" size="24" type="text" class="light" name="form[{ANTISPAM_FORM_FIELD_NAME_CALLBACK_PERSON}]" value="{FORM_CALLBACK_PERSON}" maxlength="50" class="required"/>
                </div>
              </div>
              <div class="field name-lastname">
                <label for="callback_phone" class="required">Телефон<em>*</em></label>

Форма пока находится на сайте находится внизу в левом углу. Чего еще не дописал?



#147779 Обязательное заполнение емэйла

Отправлено от Vialex в 14 Июль 2014 - 20:08 в Оформление заказа

телефон - поле обязательное, мне хотелось бы ФИО сделать необязательным (пусть будут числа). Спасибо заранее за ответ.



#147765 Обязательное заполнение емэйла

Отправлено от Vialex в 14 Июль 2014 - 19:15 в Оформление заказа

Добрый вечер! Подскажите пожалуйста как в форме быстрого заказа "ФИО" сделать не обязательным полем? на форуме не нашел про телефон (про email много и такие коды )))



#147883 Обязательное заполнение емэйла

Отправлено от Vialex в 15 Июль 2014 - 09:06 в Оформление заказа

Просмотр сообщенияСake (15 Июль 2014 - 04:47) писал:

Найдите в вашем шаблоне "Быстрый заказ" следующий код

<label for="reg_name" class="required">ФИО*</label>
	 <div class="input-box">
		 <input id="reg_name" name="form[contact][person]" value="{ORDER_FORM_CONTACT_PERSON}" maxlength="100" class="required light" type="text"/>
	 </div>

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

<label for="reg_name">ФИО</label>
	 <div class="input-box">
		 <input id="reg_name" name="form[contact][person]" value="{ORDER_FORM_CONTACT_PERSON}" maxlength="100" class="light" type="text"/>
	 </div>

далее найдите код

// Если форма невалидна не отправляем её на сервер
	 if(!$(this).valid()) {
	 return false;
	 }

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

// Если форма невалидна не отправляем её на сервер
	 if(!$(this).valid()) {
	 return false;
	 }
var person = $(this).find('[name="form[contact][person]"]');
	 if (!person.val().length) {
	 person.val('undefined');
	 }

Спасибо Cake, всё получилось.



#147757 Оформление Заказа

Отправлено от Vialex в 14 Июль 2014 - 18:24 в Оформление заказа

Спасибо. я не сразу понял что такое 149. Все получилось ))



#147749 Оформление Заказа

Отправлено от Vialex в 14 Июль 2014 - 17:22 в Оформление заказа

Просмотр сообщенияСake (25 Июнь 2014 - 04:12) писал:

Найдите в вашем шаблоне "Корзина" кнопку

<input type="submit" title="Перейти к оформлению заказа" class="exclusive" onclick="$('.cartForm').append('<input type=\'hidden\' name=\'next_step\' value=\'1\' />').submit();return false;" value="Оформить заказ" />

и замените её на

<input type="submit" name="next_step" title="Перейти к оформлению заказа" class="exclusive" onclick="$('.cartForm').append('<input type=\'hidden\' name=\'next_step\' value=\'1\' />');return false;" value="Оформить заказ" />

кнопка не реагирует ((



#174410 Убрать Надписи В Каталоге

Отправлено от Vialex в 22 Ноябрь 2014 - 15:55 в Каталог товаров

Хорошо, что вы кому-то исправили... А напишите пожалуйста, как?
Спасибо.