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


Публикации Юля123

1000 публикаций создано Юля123 (учитываются публикации только с 04-Июль 23)



#221682 Отзывы О Магазине

Отправлено от Юля123 в 28 Декабрь 2015 - 17:46 в A/b тестирование

Просмотр сообщенияApostolofD (28 Декабрь 2015 - 15:48) писал:

Здравствуйте, перешел на тему спорт. Вопрос как убрать:

Здравствуйте,
1) Изменяем название сверху. В шаблоне HTML найдите код:

<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><strong itemprop="name">{GOODS_NAME}</strong></li>

И замените на код:

<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><strong itemprop="name">{% IF GOODS_NAME=tovar %}Отзывы {%ELSE%}{GOODS_NAME}{%ENDIF%}</strong></li>

2) Убираем блок с изображением и описанием. В шаблоне  Товар найдите код:

<form action="{CART_ADD_GOODS_MODIFICATION_URL}" method="post" class="goodsDataForm">

и заменяем на код:

<form action="{CART_ADD_GOODS_MODIFICATION_URL}" method="post" class="goodsDataForm" {% IF GOODS_NAME= tovar %} style="display:none;" {%ENDIF%}>

3) Убираем вкладку "условия доставки"

В шаблоне Товар найдите код:

{% IFNOT goods_delivery_empty %}<li><a href="javascript:tabSwitch(3);" id="tab_3">Условия доставки</a></li>{% ENDIF %}

и замените на код:

{% IFNOT goods_delivery_empty %} {% IFNOT GOODS_NAME= tovar %}  <li><a href="javascript:tabSwitch(3);" id="tab_3">Условия доставки</a></li>{%ENDIF%}{% ENDIF %}



#236615 Отзывы О Магазине

Отправлено от Юля123 в 11 Май 2016 - 17:14 в A/b тестирование

Просмотр сообщенияApostolofD (11 Май 2016 - 16:34) писал:

Здравствуйте, перешел на «Инфинити» помогите убрать

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

Чтобы реализовать страницу отзывов для слайдера Инфинити, в шаблоне Товар в самом начале строку:

{% IFNOT GOODS_NAME = tovar%}

далее в самом конце добавьте код:

{% ELSE %}
	<!--  Отзывы  -->
	<!-- Если в тарифном плане подключен модуль отзывов о товаре -->
	{% IF TARIFF_FEATURE_GOODS_OPINION %}
	  <!-- Если не выключен модуль отзывов о товаре -->
	  {% IFNOT SETTINGS_OPINION_DISABLE %}
	  <div id="content_4" class="tab-content f-fix" >
		<div id="goodsDataOpinionBlock" class="goodsDataOpinion">
		  <!-- Если отзывов по товару вообще нет, ни положительных ни отрицательных -->
		  {% IF opinion_list_empty_without_filter %}
			<div class="goodsDataOpinionMessage empty"><p>Отзывов пока не было. Вы можете <a href="#goodsDataOpinionAdd" class="goodsDataOpinionShowAddForm">оставить его первым</a></p></div>
		  <!-- Если по товару есть хотя бы один отзыв -->
		  {% ELSE %}
		  <div class="goodsDataOpinionBody">
			<!-- Верхняя навигация (Фильтры и страницы) -->
			<div class="goodsDataOpinionListNavigateTop">
			  <!-- Фильтры отзывов -->
			  <a class="button button2 allOpinions active">Все ({GOODS_OPINION_RATING_CNT_ALL})</a>
			  <a class="button button2 goodOpinions">Положительные ({GOODS_OPINION_RATING_CNT_GOOD})</a>
			  <a class="button button2 badOpinions">Отрицательные ({GOODS_OPINION_RATING_CNT_BAD})</a>
			  <a href="#goodsDataOpinionAdd" class="goodsDataOpinionShowAddForm button">Оставить отзыв</a>
			</div>
			<!-- END Верхняя навигация (Фильтры и страницы) -->
			<!-- Если отзывов по товару не было с учетом фильтра по настроению отзыва -->
			{% IFNOT opinion_list_empty %}
			<!-- Список отзывов о товарах -->
			<div class="goodsDataOpinionList" itemprop="review" itemscope itemtype="http://schema.org/Review">
			  {% FOR opinion_list %}
				<div class="{% IF opinion_list.GENERALLY_IS_GOOD %}good{% ELSE %}bad{% ENDIF %} bord">
				  <div class="cell1 col-sm-3 col-xs-12" >
					<strong itemprop="author" class="goodsDataOpinionListClient {% IF opinion_list.CLIENT_ID %}auth{% ENDIF %}">{opinion_list.NAME}</strong>
					{% IF opinion_list.RATING %}
					  <div class="rating-box" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
						<meta itemprop="worstRating" content = "1">
						<meta itemprop="bestRating" content = "10">
						<meta itemprop="ratingValue" content = "{opinion_list.RATING}">
						<meta itemprop="reviewCount" content = "{opinion_list.OPINION_RATING_CNT_ALL}">
						<div class="rating" style="width:{opinion_list.RATING}0%" alt="{opinion_list.RATING}" title="Рейтинг товара"></div>
					  </div>
					{% ENDIF %}
					<span class="goodsDataOpinionListDate">
					  <meta itemprop="datePublished" content="{opinion_list.DATE | date("Y-m-d")}">
					  <span class="time text-italic">{opinion_list.DATE}</span>
					</span>
					{% IF opinion_list.DELETE_URL %}
					  <a href="{opinion_list.DELETE_URL}?return_to={CURRENT_URL | urlencode}%3Fgenerally_is_good%3D{GOODS_OPINION_GENERALLY_IS_GOOD | urlencode}%26page={OPINION_PAGES_LIST_CURRENT}#show_tab_4" class="button button2 small" onclick="alert('Вы действительно хотите удалить отзыв?')">Удалить</a>
					{% ENDIF %}
				  </div>
				  <div class="cell2 col-sm-9 col-xs-12">
					{% IF opinion_list.TITLE %}<div class="goodsDataOpinionListTitle"><strong><span itemprop="name">{opinion_list.TITLE}</span></strong></div>{% ENDIF %}
					{% IF opinion_list.ACCOMPLISHMENTS %}<div class="goodsDataOpinionListDesc"><strong>Достоинства:</strong><span itemprop="description">{opinion_list.ACCOMPLISHMENTS | nl2br}</span></div>{% ENDIF %}
					{% IF opinion_list.LIMITATIONS %}<div class="goodsDataOpinionListDesc"><strong>Недостатки:</strong><span itemprop="description">{opinion_list.LIMITATIONS | nl2br}</span></div>{% ENDIF %}
					{% IF opinion_list.COMMENT %}<div class="goodsDataOpinionListDesc"><strong>Комментарий:</strong><span itemprop="reviewBody">{opinion_list.COMMENT | nl2br}</span></div>{% ENDIF %}
					{% IF opinion_list.ANSWER %}<div class="goodsDataOpinionListTableAnswer"> <span>{opinion_list.ANSWER | nl2br}</span></div>{% ENDIF %}
				  </div>
				</div>
			  {% ENDFOR %}
			</div>
			<!-- END Список отзывов о товаре -->
			<!-- Нижняя навигация (страницы) -->
			<div class="goodsDataOpinionListNavigateBottom">
			  <!-- Страницы отзывов -->
			  {% IF opinion_show_pages %}
				<div class="pager">
				  <ul class="pages">
				  <span class="title">Страницы: </span>
				  {% FOR opinion_pages_list %}
					{% IF opinion_pages_list.CURRENT %}
					  <li class="current"><span>{opinion_pages_list.PAGE}</span></li>
					{% ELSE %}
					  <li> <a href="{GOODS_OPINION_PAGINATE_URL}&page={opinion_pages_list.PAGE}#show_tab_4">{opinion_pages_list.PAGE}</a></li>
					{% ENDIF %}
				  {% ENDFOR %}
				  </ul>
				</div>
			  {% ENDIF %}
			</div>
			<!-- END Нижняя навигация (страницы) -->
			{% ENDIF %}
		  </div>
		  {% ENDIF %}
		  <!-- END Если по товару есть хотя бы один отзыв -->
		 
		  <!-- Форма добавления нового отзыва о товаре -->
		  <form action="{CURRENT_URL}" method="post" class="goodsDataOpinionAddForm">
			<div id="goodsDataOpinionAdd">
			  <div id="goodsDataOpinionAddBlock" {% IFNOT FORM_GOODS_ID %}style="display:none"{% ENDIF%}>	
				<input type="hidden" name="hash" value="{HASH}" />
				<input type="hidden" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_FROM}]" value="{GOODS_FROM}" />
				<input type="hidden" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_ID}]" value="{GOODS_ID}" />
				<!-- Набор полей которые не видит пользователь, но видят боты. Когда они их заполняют мы точно знаем, что их прислал нам бот и мы не сохраняем подобный отзыв о товаре, а боту отправившему отзыв сообщаем, что отзыв добавлен успешно, но будет отображён здесь после прохождения модерации -->
				{ANTISPAM_CODE}
				<h3>Новый отзыв о магазине</h3>
				<div class="goodsDataOpinionAddTable form">
				  {% IF TARIFF_FEATURE_CLIENT_ROOM %}
				  {% IFNOT CLIENT_IS_LOGIN %}
				  <div class="goodsDataOpinionMessage">
					<p>Ваши знания будут оценены посетителями сайта, если Вы <a href="{USER_LOGIN_URL}" class="link-more">авторизуетесь</a> перед написанием отзыва.</p>
				  </div> 
				  {% ENDIF %}
				  {% ENDIF %}
				  <!-- Форма добавления отзыва о товаре -->
				  {% IFNOT CLIENT_IS_LOGIN %}
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_name">Ваше имя</label>
					<input type="text" id="goods_opinion_name" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_NAME}]"  value="{FORM_GOODS_OPINION_NAME}" maxlength="255" class="inputText"/>
				  </div>
				  {% ENDIF %}
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_title">Заголовок</label>
					<input type="text" id="goods_opinion_title" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_TITLE}]" value="{FORM_GOODS_OPINION_TITLE}" maxlength="255" class="inputText" />
				  </div>
				  <div class="goodsDataOpinionBlock">
					<label>Оценка товара</label>
					<div class="goodsDataOpinionRating">
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="1" {% IF FORM_GOODS_OPINION_RATING=1 %}checked="checked"{% ENDIF %} title="Ужасный" />
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="2" {% IF FORM_GOODS_OPINION_RATING=2 %}checked="checked"{% ENDIF %} title="Очень плохой"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="3" {% IF FORM_GOODS_OPINION_RATING=3 %}checked="checked"{% ENDIF %} title="Плохой"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="4" {% IF FORM_GOODS_OPINION_RATING=4 %}checked="checked"{% ENDIF %} title="ниже среднего"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="5" {% IF FORM_GOODS_OPINION_RATING=5 %}checked="checked"{% ENDIF %} title="Средний"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="6" {% IF FORM_GOODS_OPINION_RATING=6 %}checked="checked"{% ENDIF %} title="Выше среднего"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="7" {% IF FORM_GOODS_OPINION_RATING=7 %}checked="checked"{% ENDIF %} title="Хороший"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="8" {% IF FORM_GOODS_OPINION_RATING=8 %}checked="checked"{% ENDIF %} title="Очень хороший"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="9" {% IF FORM_GOODS_OPINION_RATING=9 %}checked="checked"{% ENDIF %} title="Отличный"/>
					<input name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_RATING}]" type="radio" value="10" {% IF FORM_GOODS_OPINION_RATING=10 %}checked="checked"{% ENDIF %} title="Превосходный"/>
					</div>
					<span class="goodsDataOpinionMsg"></span>
				  </div>
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_accomplishments">Достоинства</label>
					<textarea id="goods_opinion_accomplishments" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_ACCOMPLISHMENTS}]" cols="100" rows="3" class="textarea">{FORM_GOODS_OPINION_ACCOMPLISHMENTS}</textarea>
				  </div>
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_limitations">Недостатки</label>
					<textarea id="goods_opinion_limitations" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_LIMITATIONS}]" cols="100" rows="3" class="textarea">{FORM_GOODS_OPINION_LIMITATIONS}</textarea>
				  </div>
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_comment">Комментарий</label>
					<textarea id="goods_opinion_comment" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_COMMENT}]" cols="100" rows="3" class="textarea">{FORM_GOODS_OPINION_COMMENT}</textarea>
				  </div>
				  <div class="goodsDataOpinionBlock">
					<label for="goods_opinion_generally_is_good1">В целом Ваш отзыв</label>
					<div class="generally">
					  <input id="goods_opinion_generally_is_good1" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_GENERALLY_IS_GOOD}]" type="radio" value="1" {% IF FORM_GOODS_OPINION_GENERALLY_IS_GOOD=1 %}checked="checked"{% ENDIF %}/> <label for="goods_opinion_generally_is_good1">Положительный</label>
					  <br/>
					  <input id="goods_opinion_generally_is_good0" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_GENERALLY_IS_GOOD}]" type="radio" value="0" {% IF FORM_GOODS_OPINION_GENERALLY_IS_GOOD=0 %}checked="checked"{% ENDIF %}/> <label for="goods_opinion_generally_is_good0">Отрицательный</label>
					</div>
				  </div>
				  {% IF USE_CAPTCHA %}
					<div class="goodsDataOpinionBlock">
					  <label for="opinion_captcha_string" title="Введите код с картинки">Введите код</label>
					  <div class="goodsDataOpinionCaptcha">
						<input type="text" id="opinion_captcha_string" name="form[{ANTISPAM_FORM_FIELD_NAME_CAPTCHA_STRING}]" autocomplete="off" class="captcha inputText" value="{FORM_}" />
						<img src="{CAPTCHA_URL}" class="goodsDataOpinionCaptchaImg" alt="Код" title="Проверочный код, который нужно ввести в соседнее поле" />
						<i class="fa fa-refresh goodsDataOpinionCaptchaRefresh"></i>
					  </div>
					</div>
				  {% ENDIF %}
				  <!-- Кнопка отправки формы -->
				  <div class="clear">
					<button type="button" title="Отменить" class="goodsDataOpinionFormReset">Отменить</button>
					<button type="button" title="Добавить отзыв о &laquo;{GOODS_NAME}&raquo;" class="button" onclick="$('.goodsDataOpinionAddForm').submit()">Добавить отзыв</button>
				  </div>
				</div>
			  </div>
			</div>
		  </form>
		  <!-- Дабы добавляющий увидел результат добавления изменим хэш -->
		  {% IF FORM_GOODS_ID %}<script type="text/javascript">document.location.hash="goodsDataOpinionAdd"</script>{% ENDIF %}
		  </div>
	  </div>
	  {% ENDIF %}
	  <!-- END Если не выключен модуль отзывов о товаре -->
	{% ENDIF %}
	<!-- END  Если в тарифном плане подключен модуль отзывов о товаре -->
{%ENDIF%}



#220314 Отзывы На Первой Странице

Отправлено от Юля123 в 14 Декабрь 2015 - 17:52 в Предложения по улучшению сервиса

Просмотр сообщенияspectredes (14 Декабрь 2015 - 17:39) писал:

Спасибо! Все получилось, но стиль, который был пропал, его можно как-то вернуть?


Там же попробуйте удалить код:

$(good).append($('<div>').addClass('contentTbodyNewsBlockItem')
.append($('<span>').addClass('contentTbodyNewsBlockItemTitle')
.html($(this).find('.goodsDataOpinionListTableClient').html()))
.append($('<div>').addClass('newsListBlockItemPreview')
.html($(this).find('.ceil2').html()))
.append($('<em>').addClass('contentTbodyNewsBlockItemTime')
.html($(this).find('.goodsDataOpinionListTableDate').html()))



#220307 Отзывы На Первой Странице

Отправлено от Юля123 в 14 Декабрь 2015 - 16:57 в Предложения по улучшению сервиса

Просмотр сообщенияspectredes (13 Декабрь 2015 - 18:44) писал:

Здравствуйте! Проблема в следующим, не могу отрегулировать количество отзывов на главной, почему-то по инструкции прописать в скрипт

$(html).find('.good').each(function(index) {
if(index > 1) return;
$(good).append($('<div>').addClass('contentTbodyNewsBlockItem')

не помогло. Где я ошибся? Заранее спасибо! Скрипты спрятаны в main.js

Здравствуйте, попробуйте в main.js заменить  код :
$(function() {
var url = 'http://vapeluxe.ru/goods/otzivi';
var id = '#insert-goods-opinion-list'; // Из примера это insert-goods-opinion-list
var injid = '#inject-goods-opinion-list'; // Из примера это inject-goods-opinion-list
if(id && injid && $(id).length) {
		 $.get(url, function(html) {
		 $(id).html($(html).find(injid).html());
});
}
});
function filterOpinionHTML(html) {
var good = $('<div>').addClass('contentTbodyNewsBlock');
$(html).find('.good').each(function(index) {
if(index > 1) return;
$(good).append($('<div>').addClass('contentTbodyNewsBlockItem')
			 .append($('<span>').addClass('contentTbodyNewsBlockItemTitle')
				 .html($(this).find('.goodsDataOpinionListTableClient').html()))
			 .append($('<div>').addClass('newsListBlockItemPreview')
				 .html($(this).find('.ceil2').html()))
.append($('<em>').addClass('contentTbodyNewsBlockItemTime')
				 .html($(this).find('.goodsDataOpinionListTableDate').html()))
);
});
return($('<div>').addClass('contentTbodyNews').append(good));

на код:

$(function() {
var url = '/goods/otzivi';
var id = '#insert-goods-opinion-list';
var injid = '#inject-goods-opinion-list';
if(id && injid && $(id).length) {
$.get(url, function(html) {
$(id).html(filterOpinionHTML($(html).find(injid).html()));
});
}
});
function filterOpinionHTML(html) {
var good = $('<div>').addClass('contentTbodyNewsBlock');
$(html).find('.good').each(function(index) {
if(index > 1) return;
$(good).append($('<div>').addClass('contentTbodyNewsBlockItem')
.append($('<span>').addClass('contentTbodyNewsBlockItemTitle')
.html($(this).find('.goodsDataOpinionListTableClient').html()))
.append($('<div>').addClass('newsListBlockItemPreview')
.html($(this).find('.ceil2').html()))
.append($('<em>').addClass('contentTbodyNewsBlockItemTime')
.html($(this).find('.goodsDataOpinionListTableDate').html()))
);
});
return($('<div>').addClass('contentTbodyNews').append(good));
}



#237703 Выпадающее Меню

Отправлено от Юля123 в 20 Май 2016 - 09:23 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (20 Май 2016 - 09:10) писал:

спасибо, а можно блок на картинке сместить правее, что бы не было наложения?

В main.css найдите код:

.footnote {position: relative;float: right;}

и замените на код:
.footnote {position: relative;float: left;}

если подвинуть к левому блоку.

QIP Shot - Screen 341.png

Либо можно подвинуть немного, с помощью отступов:
.footnote {position: relative;float: right;}

замените на код:
.footnote {position: relative;float: right;margin-right:20%;}

QIP Shot - Screen 342.png

Выберите нужный вариант.



#237369 Выпадающее Меню

Отправлено от Юля123 в 18 Май 2016 - 13:07 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (18 Май 2016 - 11:06) писал:

хотелось бы увеличить в размерах телефон и значок корзины процентов на 20

Здравствуйте, в main.css найдите код:

#contactInfo td {padding:0px;text-align:center !important;font-size: 18px;}

свойство font-size отвечает за размер шрифта, в данном случае у телефона. Увеличивайте значение 18 на нужное Вам.

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

  #cartInfo a img {margin-top: -20px;vertical-align: middle;}

и замените на код:

  #cartInfo a img {margin-top: -20px;vertical-align: middle;width: 70px;}

у свойства width изменяйте значение на нужное Вам.



#237420 Выпадающее Меню

Отправлено от Юля123 в 18 Май 2016 - 18:04 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (18 Май 2016 - 14:50) писал:

спаасибо, еще пару вопросов

В шаблоне HTML найдите код:

<div class="menu_bottom">
<span></span>
<a>г.Стерлитамак</a>
<a>8 (960) 388 22 88, 8 (987) 131 9000</a><a>ул. Профсоюзная 18</a><a> (около Стройландии на Соде)
</div>

</a>

</div>

</div>
		
	 <div class="footnote">
				 &copy; 2001 &laquo;{SETTINGS_STORE_NAME}&raquo;&nbsp;&nbsp;&nbsp;{SETTINGS_STORE_ORG_NAME}<br />
	 Все права защищены <br />
	 {SETTINGS_STORE_REGION}<br />
	 {SETTINGS_STORE_HTML_CODE}<br />
	 {COPYRIGHT_FOR_DESIGN_MOKKO}
</div>

и замените на код:

<div class="menu_bottom">
<span></span>
<a>г.Стерлитамак</a>
<a>8 (960) 388 22 88, 8 (987) 131 9000</a><a>ул. Профсоюзная 18</a><a> (около Стройландии на Соде)
</div>

</a>

</div>
<div class="footnote">
				 &copy; 2001 &laquo;{SETTINGS_STORE_NAME}&raquo;&nbsp;&nbsp;&nbsp;{SETTINGS_STORE_ORG_NAME}<br />
	 Все права защищены <br />
	 {SETTINGS_STORE_REGION}<br />
	 {SETTINGS_STORE_HTML_CODE}<br />
	 {COPYRIGHT_FOR_DESIGN_MOKKO}
</div>
</div>
		

далее в main,css найдите код:

#menu_footer {
width: 960px;
height: 250px;
margin: auto;
}
.menu_bottom {
margin: 0 20px;
display: inline-table;
text-align: left;
}


и замените на код:

#menu_footer {
width: 960px;
margin: 20px auto;
}
.menu_bottom {
margin: 0 20px;
text-align: left;
float: left;
}



далее в коде:

.menu_bottom a {
display: block;
line-height: 30px;
text-align:left;
}

изменяйте значение 30, чтобы уменьшить межстрочный интервал.

далее код:

.footnote {
position: relative;
}

замените на код:
.footnote {
position: relative;
float: right;
}

Должно получится так:

QIP Shot - Screen 335.png



#237605 Выпадающее Меню

Отправлено от Юля123 в 19 Май 2016 - 17:25 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (19 Май 2016 - 16:05) писал:

получилось как на картинке и еще вопрос как удалить выпадающее меню

В шаблоне HTML найдите код:

  <div id="mainNav" class="nav">
<ul>
{% FOR menu %}
		 <li class="first">
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=1%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				{% FOR header_vanna %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_vanna.links.URL}" {% IF menu.header_vanna.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_vanna.links.TITLE %}title="{menu.header_vanna.links.TITLE}"{% ENDIF %}>{menu.header_vanna.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=2%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				{% FOR header_stroika %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_stroika.links.URL}" {% IF menu.header_stroika.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_stroika.links.TITLE %}title="{menu.header_stroika.links.TITLE}"{% ENDIF %}>{menu.header_stroika.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=3%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				{% FOR header_otoplenie %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_otoplenie.links.URL}" {% IF menu.header_otoplenie.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_otoplenie.links.TITLE %}title="{menu.header_otoplenie.links.TITLE}"{% ENDIF %}>{menu.header_otoplenie.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=4%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				 {% FOR header_conditions %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_conditions.links.URL}" {% IF menu.header_conditions.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_conditions.links.TITLE %}title="{menu.header_conditions.links.TITLE}"{% ENDIF %}>{menu.header_conditions.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=5%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				 {% FOR header_okna %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_okna.links.URL}" {% IF menu.header_okna.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_okna.links.TITLE %}title="{menu.header_okna.links.TITLE}"{% ENDIF %}>{menu.header_okna.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=6%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				 {% FOR header_tepliypol %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_tepliypol.links.URL}" {% IF menu.header_tepliypol.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_tepliypol.links.TITLE %}title="{menu.header_tepliypol.links.TITLE}"{% ENDIF %}>{menu.header_tepliypol.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		   <li> {% FOR header %}{% FOR links %}{%IF menu.header.links.index=7%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				 {% FOR header_uslugi %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_uslugi.links.URL}" {% IF menu.header_uslugi.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_uslugi.links.TITLE %}title="{menu.header_uslugi.links.TITLE}"{% ENDIF %}>{menu.header_uslugi.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		   <li> {% FOR header %}{% FOR links %}{%IF menu.header.links.index=8%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 <ul>
				 {% FOR header_rasprodaga %}
				 {% FOR links %}
						 <li>
						 <a href="{menu.header_rasprodaga.links.URL}" {% IF menu.header_rasprodaga.links.SELECTED %}class="selected"{% ENDIF %} {% IF menu.header_rasprodaga.links.TITLE %}title="{menu.header_rasprodaga.links.TITLE}"{% ENDIF %}>{menu.header_rasprodaga.links.NAME}</a>
						 </li>
				 {% ENDFOR %}
				 {% ENDFOR %}
		 </ul>
		 </li>
		
{% ENDFOR %}
</ul>
</div>

и замените на код:

<div id="mainNav" class="nav">
<ul>
{% FOR menu %}
		 <li class="first">
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=1%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>

		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=2%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}
		 </li>

		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=3%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=4%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=5%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>
		 <li>
		 {% FOR header %}{% FOR links %}{%IF menu.header.links.index=6%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>
		   <li> {% FOR header %}{% FOR links %}{%IF menu.header.links.index=7%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>
		   <li> {% FOR header %}{% FOR links %}{%IF menu.header.links.index=8%}<a href="{menu.header.links.URL}" title="{menu.header.links.TITLE}">{menu.header.links.NAME}</a>{%ENDIF%}{% ENDFOR %}{% ENDFOR %}

		 </li>

{% ENDFOR %}
</ul>
</div>


По вопросу футера - произвела Вам изменения.



#237728 Выпадающее Меню

Отправлено от Юля123 в 20 Май 2016 - 12:05 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (20 Май 2016 - 10:31) писал:

спасибо, есть еще вопрос как поменять цвет текста и как убрать с сайта раздел "статьи"

В разделе Сайт-Новости в выпадающем списке выберите "каталог статей", те статьи что у Вас есть либо полностью удалите. нажав на крестик напротив обеих, либо поставьте галочку в поле "Скрывать на сайте".

В main.css найдите код:
a:link, a:visited {
  color: white;
  text-decoration: none;
}

и измените цвет white в этом коде, например на #000 - черный.



#239461 Выпадающее Меню

Отправлено от Юля123 в 07 Июнь 2016 - 16:50 в Изменение общей стилистики

Просмотр сообщенияДмитрий Шумский (07 Июнь 2016 - 15:55) писал:

Аккаунт - SL-357668

Подскажите пожалуйста, как сделать выпадающий каталог товаров справа.

Спасибо!

Здравствуйте, вы после изменения меню какие либо изменения производили на сайте по дизайну? Если нет, тогда Вам достаточно восстановить бекап за 4 июня, и уже в этом бекапе найдите и удалите код:

В main.css вместо кода:
#nav{padding:0 0 36px 7px; margin:0; font-size:20px;}/* Все уровни */
#nav li { text-align:left; position:relative; }
#nav li.over { z-index:999; }
#nav li.parent {}
#nav li a { display:block; text-decoration:none; }
#nav li a:hover { text-decoration:none; }
#nav li a span { display:block; white-space:nowrap; cursor:pointer; }
#nav li ul a span { white-space:normal; }
/* 1й уровень вложенности */
#nav li {}
#nav li a{padding:0 0 0; font-weight:bold; color:#CDCDCD; line-height:normal;}
#nav li a:hover { color:#333333; }
#nav li.over a,
#nav li.active a { color:#333333; }
/* 2й уровень вложенности */
#nav ul { position:absolute; width:15em; top:0px; right:-10000px; border:0; padding:0; background:#B2B2B2; font-size:12px;}
#nav ul li { float:none; border-bottom:1px solid #FFF; }
#nav ul li.last { border-bottom:0; }
#nav ul li a { float:none; padding:3px 9px; font-weight:normal; color:#050505 !important; }
#nav ul li a:hover { color:#FFF !important; background:#333333; }
#nav ul li.active a,
#nav ul li.over a { color:#FFF !important; background:#333333; }
/* 3й и последующие уровни... Можно писать таких стилей сколько угодно, до бесконечности... */
#nav ul ul { top:0px; }
/* Видимое меню */
#nav li.over ul { right:200px; }
#nav li.over ul li.over ul { right:15em; }
#nav li.over ul ul { right:-10000px; }
#nav li.over .indent-class{margin-left:230px;}
/********** Navigation > */


добавьте код:

#nav li { text-align:left; position:relative; }
/* 2й уровень вложенности */
#nav ul { position:absolute; width:15em; top:-30px; right:-10000px; border:0; padding:0;  font-size:12px;}
#nav ul li { float:none; border-bottom:1px solid #FFF; }
#nav ul li.last { border-bottom:0; }
#nav ul li a { float:none; padding:3px 9px; font-weight:normal; }
#nav ul li a:hover { color:#FFF !important; background:#333333; }
#nav ul li.active a{ color:#FFF !important; background:#333333; }
/* 3й и последующие уровни... Можно писать таких стилей сколько угодно, до бесконечности... */
#nav ul ul { top:0px; }
/* Видимое меню */
#nav li.over ul { right:0px; }
#nav li.over ul li.over ul { right:15em; }
#nav li.over ul ul { right:-10000px; }
#nav li.over .indent-class{margin-left:230px;}
/********** Navigation > */


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


Если что-то изменяли, тогда повторите изменения описанные выше и также замените в main,css код.



#217876 Выпадающее Меню

Отправлено от Юля123 в 23 Ноябрь 2015 - 15:31 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (23 Ноябрь 2015 - 14:50) писал:

У меня тема Мокко, в изначальном шаблоне имеется каталог товаров слева, но в результате многих работ его сейчас нет, теперь хочу вернуть каталог товаров обратно

Попробуйте в шаблоне HTML найти код:

<td id="leftMenuBlockWrap" style="display:none;">

и замените на код:

<td id="leftMenuBlockWrap">



#217858 Выпадающее Меню

Отправлено от Юля123 в 23 Ноябрь 2015 - 13:25 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (23 Ноябрь 2015 - 13:15) писал:

спасибо, все получилось. А можно еще вопрос: возможно ли вернуть каталог товаров слева так, что бы весь сайт не покорежило?

Здравствуйте. Уточните, пожалуйста, что Вы имеете в виду.



#237782 Выпадающее Меню

Отправлено от Юля123 в 20 Май 2016 - 16:46 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (20 Май 2016 - 16:40) писал:

спасибо, еще вопрос на картинке

В main.css в коде:

.goodsListItemName {
		line-height: 1.2em;
		padding: 0px 2px;
		margin: 0px;
		height: 80px;
		overflow: hidden;
}

у свойства height изменяйте значение на нужное Вам. Это высота названия

Далее в код:

.goodsListItemPriceNew {
		padding-top: 20px;
		font-size: 17px;
}

замените на код:

.goodsListItemPriceNew {
		padding-top: 10px;
		font-size: 17px;
}


и в коде:
.goodsListItemBlock {
		height: 240px;
		margin: 5px;
		overflow: hidden;
}

также изменяйте высоту - это высота карточки товара в каталоге



#217899 Выпадающее Меню

Отправлено от Юля123 в 23 Ноябрь 2015 - 17:50 в Изменение общей стилистики

Просмотр сообщенияVilenskiy85 (23 Ноябрь 2015 - 15:59) писал:

Получилось, спасибо, есть маленький момент, как его поправить, страница немного вышла за размеры


Здравствуйте, в main.css найдите код:

.categoryDescriptionBlock {
		margin-top: -40px;
}

и замените на код:

.categoryDescriptionBlock {
		margin-top: -40px;
		width: 87%;
}


добавьте код:

.htmlDataBlock img {
	width: 80%;
}
.htmlDataBlock table img {
	width: 94% !important;
	height: 78% !important;
}



Найдите код:

table {
  width: auto;
  border-collapse: collapse;
}

и замените на код:

table {
  width: auto !important;
  border-collapse: collapse;
}



#231767 Сделал Всплывающее Окно - Делюсь С Вами

Отправлено от Юля123 в 24 Март 2016 - 16:25 в Главная

Просмотр сообщенияchebsalyt (23 Март 2016 - 17:17) писал:

Как сделать чтобы у посетителя окно выходило раз в ё день?

т.е. зашёл он один раз, увидел окно, закрыл его или перешёл по ссылке и в течении дня окно у него больше не выходит. Окно у него выйдет если он зайдёт на следующий день.

Заранее благодарен!

Здравствуйте, можно сделать, что один раз всплывало окошко, инструкция здесь: http://forum.storela...ами/#entry50607

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



#213464 Помогите Правильно Отредактировать Шаблон Mokko!

Отправлено от Юля123 в 19 Октябрь 2015 - 10:58 в Изменение общей стилистики

Просмотр сообщенияdfysdbu (19 Октябрь 2015 - 07:51) писал:

Спасибо!
Подскажите как поправить вот этот блок ни чего не могу с ним поделать

Изображение

Здравствуйте, попробуйте, пожалуйста в Редакторе шаблонов -> стили -> main.css изменить следующий код:

#menu_my li ul li {
float: right;
margin: 0;
/* width: 300px;
height: 200px;
overflow: hidden;*/
min-width: 460px;
max-height: 470px;
height: auto;
text-align: left;
background: #5AA7D7;/*#F2F2F2;*/
/*color:black;*/
right: 160px;
bottom:10px;
box-shadow: -5px 5px 10px rgba(0, 0, 0, 0.5);
border-radius: 10px;
border: 2px solid #6CB8E5;
z-index:1000;
}


на вот этот код:

#menu_my li ul li {
	float: right;
	margin: 0;
	min-width: 460px;
	max-height: 470px;
	height: auto;
	text-align: left;
	background: #5AA7D7;
	/* color: black; */
	right: 160px;
	bottom: 10px;
	box-shadow: -5px 5px 10px rgba(0, 0, 0, 0.5);
	border-radius: 10px;
	border: 2px solid #6CB8E5;
	z-index: 1000;
	padding-left: 15px;
}



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

Отправлено от Юля123 в 29 Февраль 2016 - 17:06 в Страница товара

Просмотр сообщенияКарамелька (29 Февраль 2016 - 16:55) писал:

Попробовала на примере водолазок убрать комбинации размер+цвет= 0,(как на ползунках)но теперь невозможно выбрать размер,у которого все цвета кроме салатового в наличии.

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



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

Отправлено от Юля123 в 24 Февраль 2016 - 15:22 в Страница товара

Просмотр сообщенияКарамелька (24 Февраль 2016 - 14:50) писал:

Поменяла весь код,теперь выдаёт ошибку



кеш чистила после обновлений.


Ну тогда можно заменить полностью на стандартный код.

// Отправляет ошибку на сервер, для того, чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
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');
	  // Если кнопку уже нажали, видимо отправка формы производилась по нажатию на кнопку enter, не допускаем этого.
	  if($(SubmitButton.get(0)).attr('disabled')) {
		return false;
	  }
	  // Устанавливаем на кнопку отправки формы блокировку повторной оптравки
	  SubmitButton.attr('disabled', true);
	  // Через 10 секунд блокировка отправки формы снимается.
	  setTimeout('SubmitButton.attr("disabled", false);', 10000);
	}
  }).validate();
  // Отправка формы по Ctrl+Enter
  $('form').bind('keypress', function(e){
	if((e.ctrlKey) && ((e.which==10)||(e.which==13))) {$(this).submit();}
  // Отправка данных формы по нажатию на Enter в случае если курсор находится в input полях (В некоторых браузерах при нажатии по enter срабатывает клик по первому submit полю, которое является кнопкой назад. Для этого написан этот фикс)
  }).find('input').bind('keypress', function(e){
	if(((e.which==10)||(e.which==13))) { try{$(this.form).submit();} catch(e){} return false; }
  });
 
  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.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();
	$(obj).each(function(i){
	  properties[i] = parseInt($(this).val());
	});
	return properties.sort(function(a,B){return a - b}).join('_');
  }
 
 
  var
	// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
   
	// Запоминаем блоки с информацией по модификациям, для ускорения работы
	goodsDataModifications = $('div.goodsDataMainModificationsList');
 
 
  // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
  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),
		  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);
	   } 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();
  });
  var
	// Минимальное значение цены для фильтра
	priceFilterMinAvailable = parseInt($('.goodsFilterPriceRangePointers .min').text())
	// Максимальное значение цены для фильтра
	,priceFilterMaxAvailable = parseInt($('.goodsFilterPriceRangePointers .max').text())
	// Максимальное значение цены для фильтра
	,priceSliderBlock = $('#goods-filter-price-slider')
	// Поле ввода текущего значения цены "От"
	,priceInputMin = $( "#goods-filter-min-price" )
	// Поле ввода текущего значения цены "До"
	,priceInputMax = $( "#goods-filter-max-price" )
	// Блок с кнопкой, которую есть смысл нажимать только тогда, когда изменялся диапазон цен.
	,priceSubmitButtonBlock = $( ".goodsFilterPriceSubmit" )
  ;
  // Изменяет размер ячеек с ценой, т.к. у них нет рамок, есть смысл менять размеры полей ввода, чтобы они выглядили как текст
  function priceInputsChangeWidthByChars() {
	// Если есть блок указания минимальной цены
	if(priceInputMin.length) {
	  priceInputMin.css('width', (priceInputMin.val().length*7 + 3) + 'px');
	  priceInputMax.css('width', (priceInputMax.val().length*7 + 3) + 'px');
	}
  }
  // Слайдер, который используется для удобства выбора цены
  priceSliderBlock.slider({
	range: true,
	min: priceFilterMinAvailable,
	max: priceFilterMaxAvailable,
	values: [
	  parseInt($('#goods-filter-min-price').val())
	  ,parseInt($('#goods-filter-max-price').val())
	],
	slide: function( event, ui ) {
	  priceInputMin.val( ui.values[ 0 ] );
	  priceInputMax.val( ui.values[ 1 ] );
	  priceSubmitButtonBlock.show();
	  priceInputsChangeWidthByChars();
	}
  });
  // При изменении минимального значения цены
  priceInputMin.keyup(function(){
	var newVal = parseInt($(this).val());
	if(newVal < priceFilterMinAvailable) {
	  newVal = priceFilterMinAvailable;
	}
	priceSliderBlock.slider("values", 0, newVal);
	priceSubmitButtonBlock.show();
	priceInputsChangeWidthByChars();
  });
  // При изменении максимального значения цены
  priceInputMax.keyup(function(){
	var newVal = parseInt($(this).val());
	if(newVal > priceFilterMaxAvailable) {
	  newVal = priceFilterMaxAvailable;
	}
	priceSliderBlock.slider("values", 1, newVal);
	priceSubmitButtonBlock.show();
	priceInputsChangeWidthByChars();
  });
  // Обновить размеры полей ввода диапазона цен
  priceInputsChangeWidthByChars();
 
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.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
});
});



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

Отправлено от Юля123 в 24 Февраль 2016 - 14:38 в Страница товара

Просмотр сообщенияКарамелька (24 Февраль 2016 - 13:30) писал:

Сделала,ничего не поменялось в плане выбора размера и цвета,так и падает в корзину по умолчанию маленький размер и цвет,который присвоен ему.
НО добавилось вот что:при добавлении товара в корзину меня перекидывает на страницу с корзиной,раньше было окно-Вы добавили в корзину то,то и то.

Попробуйте весь файл 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();
	$(obj).each(function(i){
	  properties[i] = parseInt($(this).val());
	});
	return properties.sort(function(a,B){return a - b}).join('_');
  }
 
 
  var
	// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
   
	// Запоминаем блоки с информацией по модификациям, для ускорения работы
	goodsDataModifications = $('div.goodsDataMainModificationsList');
 
 
  // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
  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),
		  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);
	   } 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
		});
});



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

Отправлено от Юля123 в 24 Февраль 2016 - 13:15 в Страница товара

Просмотр сообщенияКарамелька (24 Февраль 2016 - 12:33) писал:

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

Потом попробовала последовать совету № 7 этой темы- http://forum.storela...ра-модификации/

не получилось у меня и я всё вернула назад.Затем пробовала совет 41,

http://forum.storela...ии/page__st__40

тоже не получилось,выдал ошибку,всё откатила назад.

Попробуйте в main.js код:

  // Функция собирает свойства в строку, для определения модификации товара
  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);
		});
  });


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

  // Функция собирает свойства в строку, для определения модификации товара
  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 = $('form.goodsDataForm select[name="form[properties][]"]'),
   
	// Запоминаем блоки с информацией по модификациям, для ускорения работы
	goodsDataModifications = $('div.goodsDataMainModificationsList');
 
 
  // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
  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),
		  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);
	   } else {
		 // Отправим запись об ошибке на сервер
		 sendError('no modification by slug '+slug);
		 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
	   }
	  
	   // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
	   updateVisibility(y);
	});
  });



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

Отправлено от Юля123 в 24 Февраль 2016 - 17:06 в Страница товара

Просмотр сообщенияКарамелька (24 Февраль 2016 - 15:41) писал:

Может я что-то не так делаю,но после замены на стандартный код и чистки кеша,опять ошибка.

Произвела Вам изменения, создала бекап (24.02.2016 17:05:20).



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

Отправлено от Юля123 в 29 Февраль 2016 - 16:07 в Страница товара

Просмотр сообщенияКарамелька (29 Февраль 2016 - 15:11) писал:

Ап,ап,ап


Здравствуйте, у Вас работало на двух товарах таким образом, потому что товара с такими модификациями не было вообще, имеется ввиду комбинации размер+цвет (нет такой модификации желтый цвет размера 86 у товара ползунки) Поэтому там товара для заказа недоступен, у всех остальных товаров модификации присутствуют.



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

Отправлено от Юля123 в 25 Апрель 2016 - 14:19 в Страница товара

Просмотр сообщенияpromser (22 Апрель 2016 - 20:08) писал:

В продолжение темы цен "от и до" - сейчас заметил один баг, помогите разобраться.
Ситуация такая - есть товар с несколькими модификациями и ценами со скидкой. Получается на карточке товара при таком раскладе цена от и до и потом одна перечеркнутая (старая) цена. В общем надо сделать так, чтобы на карточке товара при цене от и до не появлялась старая цена (если она есть), но при этом если товар с одной модификацией (без цены от и до) и ценой со скидкой, то тут пусть старая (перечеркнутая) цена выводится. Надеюсь, что понятно выразился)

Здравствуйте, извините за ожидание, пришлите, пожалуйста, ссылку на такой товар, у которого цена "от .. до..." и старая цена указывается.



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

Отправлено от Юля123 в 14 Апрель 2016 - 15:42 в Страница товара

Просмотр сообщенияpromser (14 Апрель 2016 - 15:08) писал:

1. Что касается модификаций вроде теперь работает отлично. По крайней мере пока проблем не нашел.
Единственное хотел уточнить - возможно ли сделать так, чтобы выбор модификации совершался не только кликом на "точку", а и чтобы название модификации было кликабельное?
2.Что касается цен "от и до" - на главной странице теперь товары с ценами "от и до", но вот при наведении на товар когда карточка товара переворачивается цена по прежнему фиксированная. И в каталоге товаров тоже нет "от и до". Помогите пожалуйста с реализацией. Спасибо.

Здравствуйте,
1) в шаблоне Товар найдите код:

<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 />

и замените на код:

<label><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} </label><br />


2) Для хитов продаж в шаблоне HTML найдите код (627строка):
<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_favorites_goods.NAME}" href="{index_page_favorites_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_favorites_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">
<span class="price">{index_page_favorites_goods.MIN_PRICE_NOW | money_format}</span>

и замените на код:
<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_favorites_goods.NAME}" href="{index_page_favorites_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_favorites_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">
 <span class="price">
{% IF index_page_favorites_goods.MAX_PRICE_NOW>index_page_favorites_goods.MIN_PRICE_NOW %}
от {index_page_favorites_goods.MIN_PRICE_NOW | money_format} до {index_page_favorites_goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{index_page_favorites_goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>


Далее для новинок, найдите код(769 строка):

<!-- описание товара -->
							<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_new_goods.NAME}" href="{index_page_new_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_new_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">
									<span class="price">{index_page_new_goods.MIN_PRICE_NOW | money_format}</span>

и замените на код:

<!-- описание товара -->
							<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_new_goods.NAME}" href="{index_page_new_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_new_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">					  
 <span class="price">
{% IF iindex_page_new_goods.MAX_PRICE_NOW>index_page_new_goods.MIN_PRICE_NOW %}
от {index_page_new_goods.MIN_PRICE_NOW | money_format} до {index_page_new_goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{index_page_new_goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>


Далее для товаров на главной код :

<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_goods.NAME}" href="{index_page_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">
									<span class="price">{index_page_goods.MIN_PRICE_NOW | money_format}</span>

замените на код:

<div class="product-hover">
							  <h3 class="product-name">
								<a title="{index_page_goods.NAME}" href="{index_page_goods.URL_MIN_PRICE_NOW | url_amp}">{index_page_goods.NAME}</a>
							  </h3>
							  <div class="price">
								<div class="price-box">
								  <span class="product-price">
<span class="price">
{% IF index_page_goods.MAX_PRICE_NOW>index_page_goods.MIN_PRICE_NOW %}
от {index_page_goods.MIN_PRICE_NOW | money_format} до {index_page_goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{index_page_goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>

Для каталога, нужно перейти в шаблоне Товары и найти код (встречается 2 раза, заменить нужно везде):

<span class="price">{goods.MIN_PRICE_NOW | money_format}</span>

и замените на код:

<span class="price">
{% IF goods.MAX_PRICE_NOW>goods.MIN_PRICE_NOW %}
от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>



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

Отправлено от Юля123 в 25 Апрель 2016 - 19:35 в Страница товара

Просмотр сообщенияpromser (25 Апрель 2016 - 18:31) писал:

Ссылка http://аква-дом.рф/c...y-dlya-bassejna
Товары Кобра и Рондо с акционными ценами.

Спасибо, в шаблоне Товары найдите код:
								<span class="price">
{% IF goods.MAX_PRICE_NOW>goods.MIN_PRICE_NOW %}
от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>
								{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
								  <span class="price-old">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</span>
								{% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
								  <span class="price-old">{goods.MIN_PRICE_OLD | money_format}</span>
								{% ENDIF %}

и замените на код:
								<span class="price">
{% IF goods.MAX_PRICE_NOW>goods.MIN_PRICE_NOW %}
от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>
{% IF goods.MAX_PRICE_NOW < goods.MIN_PRICE_NOW %}
								{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
								  <span class="price-old">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</span>
								{% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
								  <span class="price-old">{goods.MIN_PRICE_OLD | money_format}</span>
								{% ENDIF %}
								 {% ENDIF %}

и код:

						  <span class="price">
{% IF goods.MAX_PRICE_NOW>goods.MIN_PRICE_NOW %}
от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>
						{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
						  <span class="price-old">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</span>
						{% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
						  <span class="price-old">{goods.MIN_PRICE_OLD | money_format}</span>
						{% ENDIF %}

замените на код:

						  <span class="price">
{% IF goods.MAX_PRICE_NOW>goods.MIN_PRICE_NOW %}
от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}
{% ELSE %}
{goods.MIN_PRICE_NOW | money_format}
{% ENDIF %}
</span>
{% IF goods.MAX_PRICE_NOW<goods.MIN_PRICE_NOW %}
						{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
						  <span class="price-old">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</span>
						{% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
						  <span class="price-old">{goods.MIN_PRICE_OLD | money_format}</span>
						{% ENDIF %}
{% ENDIF %}