- Форум владельцев интернет-магазинов
- → Публикации Jason RND
Публикации Jason RND
51 публикаций создано Jason RND (учитываются публикации только с 01-Июль 23)
#145736 Ошибки В Шаблоне Пластик
Отправлено от Jason RND в 02 Июль 2014 - 12:43 в Другие ошибки витрины
#145624 Ошибки В Шаблоне Пластик
Отправлено от Jason RND в 01 Июль 2014 - 19:35 в Другие ошибки витрины
#156674 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 02 Сентябрь 2014 - 19:59 в Изменение общей стилистики
#156067 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 30 Август 2014 - 20:11 в Изменение общей стилистики
Появилась необходимость добавить еще один столбец к телу сайта ( ранее я разделял тело на 2 столбца с помощью support 2.0)
Вот его записи:
в шаблоне HTML найдите
<!-- контент -->
<div class="container" id="cpages">
<div class="content_page">
<table>
замените на
<!-- контент -->
<div class="container" id="cpages">
<div class="content_page">
<table style="border-spacing: 5px;border-collapse: separate;">
теперь в файле main.css найдите блок
.content_catalog {
padding-top: 80px;
vertical-align: top;
}
замените на
.content_catalog {
padding-top: 80px;
vertical-align: top;
background: #fff;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
теперь найдите
.content_body {
vertical-align:top;
}
замените на
.content_body {
background: #fff;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
далее найдите
.content_page {
background: url({ASSETS_IMAGES_PATH}cpage-top-bg.jpg) repeat 0px 20px;
min-height: 500px;
overflow:hidden;
padding-bottom: 2em;
margin-bottom: 20px;
}
замените на
.content_page {
min-height: 500px;
overflow:hidden;
padding-bottom: 2em;
margin-bottom: 20px;
}
Теперь необходимо добавить еще один столбец (для симметрии). Желаемое на скрине.
Заранее благодарен!
тыц
#156824 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 03 Сентябрь 2014 - 13:34 в Изменение общей стилистики
#156958 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 04 Сентябрь 2014 - 02:12 в Изменение общей стилистики
заменить на : .container {position:relative; width:1175px; margin:0pxauto;}
Спасибо за помощь!
#156928 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 03 Сентябрь 2014 - 21:00 в Изменение общей стилистики
Вот нужен второй такой cont.250 , только слева! (и получится, что тело сайта (BODY) разделено на 3! столбца! А у меня сейчас на 2!
Есои кто-то еще не понял вопрос - напишите.... Скрипт саппорта не просто так выкладывал....
#156908 Разделение Тела Сайта На Столбцы
Отправлено от Jason RND в 03 Сентябрь 2014 - 19:33 в Изменение общей стилистики
#153086 Смс И Предоплата
Отправлено от Jason RND в 15 Август 2014 - 17:00 в Предложения по улучшению сервиса
#153232 Смс И Предоплата
Отправлено от Jason RND в 16 Август 2014 - 15:12 в Предложения по улучшению сервиса
#142799 Создание Виджета И Rss
Отправлено от Jason RND в 11 Июнь 2014 - 16:49 в Личный опыт
Кстати, добавьте ресурс в список разрешенных... Спасибо!
#176416 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 02 Декабрь 2014 - 13:32 в Общие вопросы
Vaccina (02 Декабрь 2014 - 01:42) писал:
Я хочу ОТ ПРОИЗВОЛЬНОГО ПОСТОЯННОГО ЧИСЛА (например 50) отнять остаток товара на складе ( goodsDataMainModificationAvailable) и и получу количество проданного товара
Например 50 - 46 ( остаток на складе) = 4 (проданный товар)
т.е мне нужна формула, по которой будет выводиться проданный товар на странице товара рядом с ценой и скидкой.
Что-то подобное в биглионе http://www.biglion.r.../yahromasrp-80/ ( указано количество проданных купонов).
У вас в админке такого значения нет.
Примерно такая формула:
50 - goodsDataMainModificationAvailable = проданный товар ( не знаю как обозвать его goodsdata )
И нужно присвоить "Проданному товару значение goods
#176171 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 01 Декабрь 2014 - 12:35 в Общие вопросы
У нас есть в админке поле <div class="goodsDataMainModificationAvailable"> (это остаток товара)
Мне нужно привязать этот остаток к формуле по следующим параметрам:
Например:
50 (это неизменная цифра) - goodsDataMainModificationAvailable(допустим 46) = количество проданного товара! (получается 4)
И вот это количество проданного мне необходимо показывать в карточке товара.
Господа и дамы программисты! Вы же сможете! Для вас это семечки...
Заранее благодарен! ( Кодерхан и Вакцина - в вас особенно верю!)
#176595 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 03 Декабрь 2014 - 11:33 в Общие вопросы
Vaccina (03 Декабрь 2014 - 00:42) писал:
Страница товара:
Расположение: вместо "Осталось купонов"
#176821 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 04 Декабрь 2014 - 12:06 в Общие вопросы
Vaccina (04 Декабрь 2014 - 02:23) писал:
<div class="goodsDataMainModificationAvailable">
и замените её на
<div class="goodsDataMainModificationAvailable"> <div class="goodsDataMainModificationSold" data-restv="{GOODS_MOD_REST_VALUE}" style="display: none;">Продано товаров: <span>{GOODS_MOD_REST_VALUE}</span></div>
далее в файл main.js добавьте код
$(function() { var goodsModificationSold = $('.goodsDataMainModificationSold'); if (goodsModificationSold.length) { goodsModificationSold.find('span') .html(50 - parseInt(goodsModificationSold.data('restv'))).end().show(); } });
далее найдите код
goodsPriceSupplier.html(modificationPriceSupplierFormated);
и замените его на
goodsPriceSupplier.html(modificationPriceSupplierFormated); var goodsModificationSold = $('.goodsDataMainModificationSold'); if (goodsModificationSold.length) { goodsModificationSold.find('span') .html(50 - parseInt(modificationRestValue)).end().show(); }
Если строка "Осталось купонов" вам не нужна, то добавьте в файл стилей main.css
.goodsDataMainModificationAvailable .available-true { display: none !important; }
Vaccina, не вышло... вместо цифры выводится слово NaN (скрин прилагаю)
Админку вернул в рабочее состояние. Скрины изменений тоже прилагаю.
Также выкладываю "Товар" и "Main.js" в рабочем состоянии.
<div class="page-headline">
<div class="timerline">
<span id="timerOutput"></span><br/>
</div>
<h2 itemprop="name">{GOODS_NAME}</h2>
<meta itemprop="category" content="{% FOR upper_navigation %}{% IFNOT upper_navigation.first %} > {% ENDIF %}{upper_navigation.NAME}{% ENDFOR %}" />
</div>
<div class="pad-box">
<div class="goodsData">
<!-- Артикул, если указан -->
<div class="goodsDataMainModificationArtNumber" {% IFNOT GOODS_MOD_ART_NUMBER %}style="display:none"{% ELSE %}itemprop="identifier"{% ENDIF %}>
Артикул: <span>{GOODS_MOD_ART_NUMBER}</span>
</div>
<form action="{CART_ADD_GOODS_MODIFICATION_URL}" method="post" class="goodsDataForm cont700 hiden" >
<div>
<input type="hidden" name="hash" value="{HASH}" />
<input type="hidden" name="form[goods_from]" value="{GOODS_FROM}" />
<table class="goodsDataMain">
<tr>
<td class="goodsDataMainImageBlock">
<!-- Большое изображение -->
<div class="goodsDataMainImage">
{% IF GOODS_IMAGE_EMPTY %}
<img src="{ASSETS_IMAGES_PATH}no-photo-medium.png" alt="{GOODS_NAME}" title="Увеличить {GOODS_NAME}" />
{% ELSE %}
<a itemprop="image" href="{GOODS_IMAGE_LARGE}" target="_blank" title="Увеличить {GOODS_NAME}"><img class="cornerAll withBorder goods-image-medium" src="{GOODS_IMAGE_MEDIUM}" alt="{GOODS_NAME}" /></a>
{% ENDIF %}
<!-- Идентификатор изображения товара, используется для галереи изображений -->
<input type="hidden" rel="{GOODS_IMAGE_ID}" />
</div>
<!-- Ссылка на увеличение среднего изображения товара до большого. Появляется если у товара указано изображение -->
{% IFNOT GOODS_IMAGE_EMPTY %}
<div class="goodsDataMainImageZoom">
</div>
{% ENDIF %}
<!-- Другие изображения товара. Отображаются если есть изображения товара -->
{% IFNOT goods_images_empty %}
{% FOR goods_images %}
<!-- Заголовок и обёртка для изображений, которая позволяет не показывать уменьшенное изображение товара если оно у него лишь одно -->
{% IF goods_images.first %}
<div {% IF goods_images.length=1 %}style="display:none;"{% ENDIF %}>
<h5></h5>
{% ENDIF %}
<!-- Уменьшенное изображение товара -->
<div class="goodsDataMainImagesIcon left">
<a href="{goods_images.LARGE}" rel="gallery" target="_blank" title="{goods_images.NAME}"><img class="cornerAll withBorder goods-image-icon" rel="{goods_images.MEDIUM}" src="{goods_images.ICON}" alt="{goods_images.NAME}" /></a>
<!-- Идентификатор изображения товара, используется для галереи изображений -->
<input type="hidden" rel="{goods_images.ID}" />
</div>
<!-- В самом конце закрываем обёртку для списка маленьких изображений товара -->
{% IF goods_images.last %}
</div>
{% ENDIF %}
{% ENDFOR %}
{% ENDIF %}
</td>
<td>
<div class="goodsDataMainOrder cornerAll" itemscope itemprop="offerDetails" itemtype="http://data-vocabula...ary.org/Offer">
<table>
<!-- Блок с данными товара при выбранных параметрах. Берутся из модификаций товара -->
<tr>
<td class="goodsDataMainModificationDataBlock">
<!-- По этому значению производится заказ товара -->
<input type="hidden" name="form[goods_mod_id]" value="{GOODS_MOD_ID}" class="goodsDataMainModificationId" />
<!-- Цена сейчас -->
<span class="goodsDataMainModificationPriceNow" title="Цена сейчас" itemprop="price" content="{GOODS_MOD_PRICE_NOW}">
Цена купона {GOODS_MOD_PRICE_NOW | money_format}
</span><br />
<br />
<!-- Стоимость -->
<span class="goodsDataMainModificationPriceSuppler" title="Стоимость" itemprop="price" content="{GOODS_MOD_PRICE_SUPPLIER}">
Без купона {GOODS_MOD_PRICE_SUPPLIER | money_format}
</span> <br />
<!-- Выгода -->
<span class="goodsDataMainModificationPriceOld" title="Выгода" itemprop="price" content="{GOODS_MOD_PRICE_OLD}">
С купоном {GOODS_MOD_PRICE_OLD | money_format}
</span>
<!-- информация для поисковика о валюте товара -->
<meta itemprop="priceCurrency" content="{CURRENCY_CHAR_CODE}"/>
<!-- информация о числе товаров на складе -->
<meta itemprop="quantity" content="{GOODS_MOD_REST_VALUE}"/>
<!-- информация для поисковика о наличие товара. Отображается только при наличии товара на складе. Доступные значения: out_of_stock,in_stock,instore_only,preorder. -->
{% IF GOODS_MOD_REST_VALUE>0 %}
<span itemprop="availability" content="{% IF GOODS_MOD_REST_VALUE>0 %}in_stock{% ELSE %}out_of_stock{% ENDIF %}"></span>
{% ENDIF %}
<!-- Доступность товара -->
<div class="goodsDataMainModificationAvailable">
<div rel="true" class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>Осталось купонов: {GOODS_MOD_REST_VALUE} </div>
<div rel="false" class="available-false" {% IF GOODS_MOD_REST_VALUE>0 %}style="display:none;"{% ENDIF %}>Акция завершена</div>
</div>
</td>
<td class="goodsDataFormSubmitButton">
{% IF GOODS_MOD_REST_VALUE>0 && CART_COUNT_TOTAL=0 %}<a class="more-link cart_btn" onclick="$('.goodsDataForm').submit(); return false;"href="#" </a>{% ENDIF %}
<br /><br />
<!-- Если в тарифном плане подключен модуль сравнения товаров -->
{% IF TARIFF_FEATURE_GOODS_COMPARE %}
<!-- Если не выключен модуль сравнения товаров, то покажем кнопку сравнения товаров -->
{% IFNOT SETTINGS_COMPARE_DISABLE %}
<a class="goodsDataCompareButton add" {% IF GOODS_MOD_IS_HAS_IN_COMPARE_LIST %}style="display:none;"{% ENDIF %} rel="{COMPARE_ADD_URL}?return_to={CURRENT_URL | urlencode}" title="Добавить «{GOODS_NAME}» к списку сравнения с другими товарами" href="#" >Добавить к сравнению</a>
<a class="goodsDataCompareButton delete" {% IFNOT GOODS_MOD_IS_HAS_IN_COMPARE_LIST %}style="display:none;"{% ENDIF %} rel="{COMPARE_DELETE_URL}?return_to={CURRENT_URL | urlencode}" title="Убрать «{GOODS_NAME}» из списка сравнения с другими товарами" href="#" >Убрать из сравнения</a>
{% ENDIF %}
{% ENDIF %}
</td>
</tr>
<!-- Блок информации по акции действующей на товар, если таковая есть -->
{% IF GOODS_MOD_MAX_DISCOUNT_ID %}
<tr>
<td class="goodsDataMainDiscountBlock" colspan="2">
<DIV align="center" ID="countdown"></DIV>
<SCRIPT src="countdown.js" type="text/javascript" language="javascript"></SCRIPT>
<div itemprop="priceValidUntil" content="{GOODS_MOD_MAX_DISCOUNT_EXPIRED_AT | date("Y-m-d")}">
<!-- Акция на товар -->
<strong> Продажа купонов до {GOODS_MOD_MAX_DISCOUNT_EXPIRED_AT | date}.</strong><br />
</div>
</td>
</tr>
{% ENDIF %}
<!-- Блок выбора модификаций для текущей товарной позиции -->
<tr>
<td class="goodsDataMainModificationsBlock" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %} colspan="2">
<div>
<table>
<tr>
{% FOR goods_modifications_properties %}
<td class="goodsDataMainModificationsBlockProperty">
<!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь -->
{% FOR values %}
<!-- Если это первый элемент в списке -->
{% IF goods_modifications_properties.values.first %}
<strong>{goods_modifications_properties.NAME}:</strong><br />
<select name="form[properties][]">
{% ENDIF %}
<option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
<!-- Если это последний элемент в списке -->
{% IF goods_modifications_properties.values.last %}
</select>
{% ENDIF %}
{% ENDFOR %}
</td>
{goods_modifications_properties.index | is_divided("2","</tr><tr>","")}
{% ENDFOR %}
</tr>
</table>
<!-- Данные по модификациям для текущей товарной позиции -->
{% FOR goods_modifications %}
<div class="goodsDataMainModificationsList" rel="{goods_modifications.PROPERTIES_SLUG}">
<input type="hidden" name="id" value="{goods_modifications.ID}" />
<input type="hidden" name="art_number" value="{goods_modifications.ART_NUMBER}" />
<input type="hidden" name="price_now" value="{goods_modifications.PRICE_NOW}" />
<div class="price_now_formated" style="display:none">Цена купона {goods_modifications.PRICE_NOW | money_format}</div>
<input type="hidden" name="price_supplier" value="{goods_modifications.PRICE_SUPPLIER}" />
<div class="price_supplier_formated" style="display:none">Без купона {goods_modifications.PRICE_SUPPLIER | money_format}</div>
<input type="hidden" name="price_old" value="{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT}{% ELSE %}{goods_modifications.PRICE_OLD}{% ENDIF %}" />
<div class="price_old_formated" style="display:none">С купоном {goods_modifications.PRICE_OLD | money_format}</div>
<input type="hidden" name="rest_value" value="{goods_modifications.REST_VALUE}" />
<input type="hidden" name="measure_id" value="{goods_modifications.MEASURE_ID}" />
<input type="hidden" name="measure_name" value="{goods_modifications.MEASURE_NAME}" />
<input type="hidden" name="measure_desc" value="{goods_modifications.MEASURE_DESC}" />
<input type="hidden" name="measure_precision" value="{goods_modifications.MEASURE_PRECISION}" />
<input type="hidden" name="is_has_in_compare_list" value="{goods_modifications.IS_HAS_IN_COMPARE_LIST}" />
<div class="description" style="display:none">{goods_modifications.DESCRIPTION}</div>
</div>
{% ENDFOR %}
</div>
</td>
</tr>
<!-- Блок описания модификации -->
<tr>
<td class="goodsDataMainModificationsDescriptionBlock" {% IFNOT GOODS_MOD_DESCRIPTION %}style="display:none;"{% ENDIF %} colspan="2">
{GOODS_MOD_DESCRIPTION}
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</form>
<div class="banner_send">
<img src="http://st.roskupon.r...93/049/8.gif"/>
</div>
<script type="text/javascript">(function() {
if (window.pluso)if (typeof window.pluso.start == "function") return;
if (window.ifpluso==undefined) { window.ifpluso = 1;
var d = document, s = d.createElement('script'), g = 'getElementsByTagName';
s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
s.src = ('https:' == window.location.protocol ? 'https' : 'http') + '://share.pluso.ru/pluso-like.js';
var h=d[g]('body')[0];
h.appendChild(s);
}})();</script>
<div class="pluso" data-background="#ebebeb" data-options="big,square,line,horizontal,counter,theme=08" data-services="vkontakte,odnoklassniki,facebook,twitter,moimir,email"></div>
<br />
<br />
<!-- Блок описания товара. Показываем его есть описание товара -->
{% IF GOODS_DESCRIPTION_LARGE %}
<div class="htmlDataBlock" itemprop="description">
{GOODS_DESCRIPTION_LARGE}
</div>
{% ENDIF %}
<!-- END Блок описания товара. Показываем его есть описание товара -->
<!-- Короткое SEO-описание -->
{% IF GOODS_SEO_DESCRIPTION_SHORT %}
<p style="padding-top:1em;" itemprop="description">{GOODS_SEO_DESCRIPTION_SHORT}</p>
{% ENDIF %}
<!-- END Короткое SEO-описание -->
<!-- Полное SEO-описание -->
{% IF GOODS_SEO_DESCRIPTION_LARGE %}
<div style="padding-top:1em;" class="htmlDataBlock" itemprop="description">{GOODS_SEO_DESCRIPTION_LARGE}</div>
{% ENDIF %}
<!-- END Полное SEO-описание -->
</div>
<!-- Блок характеристик товара. Показываем его если указаны характеристики -->
{% IFNOT goods_features_empty %}
<h3>Характеристики {GOODS_NAME}</h3><br />
<table class="goodsDataFeatures">
<tr>
{% FOR goods_features%}
<td>
<p><span>{goods_features.NAME}</span></p>
</td>
<td>
{goods_features.VALUE}
</td>
{% IFNOT goods_features.last %}{goods_features.index | is_divided("2","</tr><tr>","")}{% ENDIF %}
{% ENDFOR %}
</tr>
</table><br /><br />
{% ENDIF %}
<!-- END Блок характеристик товара. Показываем его если указаны характеристики -->
</div>
<!-- Сопутствующие товары -->
{% IFNOT related_goods_empty %}
<h3>Сопутствующие товары</h3><br />
<table>
<tr>
{% FOR related_goods %}
<td class="goodsListItem">
<div class="goodsListItemBlock withBorder cornerAll">
<table class="goodsListItemImage">
<tr>
<td>
<a href="{related_goods.URL}" title="Перейти на страницу «{related_goods.NAME}»"><img class="goods-image-other" src="{% IF related_goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{related_goods.IMAGE_OTHER}{% ENDIF %}" alt="{related_goods.NAME}" /></a>
</td>
</tr>
</table>
<h3 class="goodsListItemName"><a href="{related_goods.URL}" title="Перейти на страницу «{related_goods.NAME}»">{related_goods.NAME}</a></h3>
<div class="goodsListItemPriceNew">
<a href="{related_goods.URL_MIN_PRICE_NOW}">{related_goods.MIN_PRICE_NOW | money_format}</a>
</div>
<div class="goodsListItemPriceOld">
{% IF related_goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>related_goods.MIN_PRICE_NOW %}
<a href="{related_goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{related_goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
{% ELSEIF related_goods.MIN_PRICE_OLD>related_goods.MIN_PRICE_NOW %}
<a href="{related_goods.URL_MIN_PRICE_OLD}" class="lineThrough">{related_goods.MIN_PRICE_OLD | money_format}</a>
{% ENDIF %}
</div>
</div>
</td>
{% IFNOT related_goods.last %}{related_goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
{% ENDFOR %}
</tr>
</table><br /><br />
{% ENDIF %}
<!-- END Сопутствующие товары -->
<!-- Если в тарифном плане подключен модуль отзывов о товаре -->
{% IF TARIFF_FEATURE_GOODS_OPINION %}
<!-- Если не выключен модуль отзывов о товаре -->
{% IFNOT SETTINGS_OPINION_DISABLE %}
<div class="goodsDataOpinion">
<h2 style="text-align: center;">Отзывы об акции</h2>
<br />
<!-- Если отзывов по товару вообще нет, ни положительных ни отрицательных -->
{% IF opinion_list_empty_without_filter %}
<div class="goodsDataOpinionMessage empty">Отзывов пока не было. Вы можете <a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm">оставить его первым</a></div>
<!-- Если по товару есть хотя бы один отзыв -->
{% ELSE %}
<table>
<!-- Верхняя навигация (Фильтры и страницы) -->
<thead>
<tr class="goodsDataOpinionListNavigateTop">
<td>
<!-- Среднее значение по результатам всех отзывов об этом товаре -->
{% IF GOODS_OPINION_RATING_VALUE_ROUND %}
<img src="{FORALL_IMAGES_PATH}stars/{GOODS_OPINION_RATING_VALUE_ROUND}.gif" alt="{GOODS_OPINION_RATING_VALUE_ROUND}" class="valignMiddle" style="padding-right:1em;" />
{% ELSE %}
<img src="{FORALL_IMAGES_PATH}stars/10.gif" alt="Рейтинг не определён" class="valignMiddle" style="padding-right:1em;" />
{% ENDIF %}
<!-- Фильтры отзывов -->
<span class="goodsDataOpinionAverageInfo">
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=-1 %}
Все ({GOODS_OPINION_RATING_CNT_ALL}) |
{% ELSE %}
<a href="{GOODS_OPINION_ALL_URL}">Все ({GOODS_OPINION_RATING_CNT_ALL})</a> |
{% ENDIF %}
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=1 %}
Положительные ({GOODS_OPINION_RATING_CNT_GOOD}) |
{% ELSE %}
<a href="{GOODS_OPINION_GOOD_URL}">Положительные ({GOODS_OPINION_RATING_CNT_GOOD})</a> |
{% ENDIF %}
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=0 %}
Отрицательные ({GOODS_OPINION_RATING_CNT_BAD}) |
{% ELSE %}
<a href="{GOODS_OPINION_BAD_URL}">Отрицательные ({GOODS_OPINION_RATING_CNT_BAD})</a> |
{% ENDIF %}
<a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm AddNewOpinionLinkAfterList">Оставить отзыв</a>
</span>
</td>
<td>
<!-- Страницы отзывов -->
{% IF opinion_show_pages %}
<div class="square_pages">
<span>Страницы: </span>
{% FOR opinion_pages_list %}
{% IF opinion_pages_list.CURRENT %}
<b>{opinion_pages_list.PAGE}</b>
{% ELSE %}
<a href="{GOODS_OPINION_PAGINATE_URL}&page={opinion_pages_list.PAGE}">{opinion_pages_list.PAGE}</a>
{% ENDIF %}
{% ENDFOR %}
</div>
{% ENDIF %}
</td>
</tr>
</thead>
<!-- END Верхняя навигация (Фильтры и страницы) -->
<!-- Если отзывов по товару не было с учетом фильтра по настроению отзыва -->
{% IF opinion_list_empty %}
<tbody>
<tr>
<td colspan="2">
<div class="goodsDataOpinionMessage empty">
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=1 %}
Положительных
{% ELSEIF GOODS_OPINION_GENERALLY_IS_GOOD=0 %}
Отрицательных
{% ENDIF %}
отзывов пока не было. Вы можете <a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm">оставить его первым</a>
</div>
</td>
</tr>
</tbody>
<!-- Если отзывы по товару уже есть, покажем их список -->
{% ELSE %}
<!-- Список отзывов о товарах -->
<tbody>
<tr>
<td colspan="2">
<table class="goodsDataOpinionListTable" itemprop="review">
<tbody>
{% FOR opinion_list %}
<tr class="{% IF opinion_list.GENERALLY_IS_GOOD %}good{% ELSE %}bad{% ENDIF %}">
<td class="ceil1">
<span class="goodsDataOpinionListTableClient {% IF opinion_list.CLIENT_ID %}auth{% ENDIF %}">{opinion_list.NAME}</span>
<span class="goodsDataOpinionListTableDate">{opinion_list.DATE}</span>
{% IF opinion_list.DELETE_URL %}
<a href="{opinion_list.DELETE_URL}">Удалить</a>
{% ENDIF %}
</td>
<td class="ceil2">
{% IF opinion_list.TITLE %}<strong class="valignMiddle">{opinion_list.TITLE}</strong>{% ENDIF %}
{% IF opinion_list.RATING %}<img class="valignMiddle" src="{FORALL_IMAGES_PATH}stars/{opinion_list.RATING}.gif" alt="{opinion_list.RATING}"/>{% ENDIF %}<br />
{% IF opinion_list.ACCOMPLISHMENTS %}<strong>Достоинства:</strong> {opinion_list.ACCOMPLISHMENTS | nl2br}<br />{% ENDIF %}
{% IF opinion_list.LIMITATIONS %}<strong>Недостатки:</strong> {opinion_list.LIMITATIONS | nl2br}<br />{% ENDIF %}
{% IF opinion_list.COMMENT %}<strong>Комментарий:</strong> {opinion_list.COMMENT | nl2br}<br />{% ENDIF %}
{% IF opinion_list.ANSWER %}
<div class="goodsDataOpinionListTableAnswer">
{opinion_list.ANSWER | nl2br}<br />
</div>
{% ENDIF %}
</td>
</tr>
{% ENDFOR %}
</tbody>
</table>
</td>
</tr>
</tbody>
<!-- END Список отзывов о товаре -->
<!-- Нижняя навигация (страницы) -->
<tfoot>
<tr class="goodsDataOpinionListNavigateBottom">
<td colspan="2">
<!-- Страницы отзывов -->
{% IF opinion_show_pages %}
<div class="square_pages">
<span>Страницы: </span>
{% FOR opinion_pages_list %}
{% IF opinion_pages_list.CURRENT %}
<b>{opinion_pages_list.PAGE}</b>
{% ELSE %}
<a href="{GOODS_OPINION_PAGINATE_URL}&page={opinion_pages_list.PAGE}">{opinion_pages_list.PAGE}</a>
{% ENDIF %}
{% ENDFOR %}
</div>
{% ENDIF %}
</td>
</tr>
</tfoot>
<!-- END Нижняя навигация (страницы) -->
{% ENDIF %}
</table>
{% ENDIF %}
<!-- END Если по товару есть хотя бы один отзыв -->
<!-- Форма добавления нового отзыва о товаре -->
<form action="" method="post" class="goodsDataOpinionAddForm">
<div id="goodsDataOpinionAdd">
{% IF FORM_NOTICE %}
<h3 class="{% IF FORM_NOTICE_IS_GOOD %}green{% ELSE %}red{% ENDIF %}">{FORM_NOTICE}</h3>
{% ENDIF %}
<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>
<table class="goodsDataOpinionAddTable">
{% IF TARIFF_FEATURE_CLIENT_ROOM %}
{% IFNOT CLIENT_IS_LOGIN %}
<thead>
<tr>
<td colspan="2">
<div class="goodsDataOpinionMessage auth">Ваши знания будут оценены посетителями сайта, если Вы <a href="{USER_LOGIN_URL}">авторизируетесь</a> перед написанием отзыва.</div>
</td>
</tr>
</thead>
{% ENDIF %}
{% ENDIF %}
<!-- Тело таблицы. Форма добавления отзыва о товаре -->
<tbody>
{% IFNOT CLIENT_IS_LOGIN %}
<tr>
<td><label for="goods_opinion_name" class="required">Ваше имя</label></td>
<td><input id="goods_opinion_name" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_NAME}]" value="{FORM_GOODS_OPINION_NAME}" maxlength="255" class="required cornerAll"/></td>
</tr>
{% ENDIF %}
<tr>
<td><label for="goods_opinion_title">Заголовок</label></td>
<td><input id="goods_opinion_title" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_TITLE}]" value="{FORM_GOODS_OPINION_TITLE}" maxlength="255" class="cornerAll" /></td>
</tr>
<tr>
<td class="valignTop"><label>Оценка акции</label></td>
<td>
<div class="goodsDataOpinionTableRating">
<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>
</td>
</tr>
<tr>
<td><label for="goods_opinion_accomplishments">Достоинства</label></td>
<td><textarea id="goods_opinion_accomplishments" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_ACCOMPLISHMENTS}]" cols="100" rows="7" class="cornerAll">{FORM_GOODS_OPINION_ACCOMPLISHMENTS}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_limitations">Недостатки</label></td>
<td><textarea id="goods_opinion_limitations" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_LIMITATIONS}]" cols="100" rows="7" class="cornerAll">{FORM_GOODS_OPINION_LIMITATIONS}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_comment" class="required">Комментарий</label></td>
<td><textarea id="goods_opinion_comment" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_COMMENT}]" cols="100" rows="7" class="required cornerAll">{FORM_GOODS_OPINION_COMMENT}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_generally_is_good1">В целом Ваш отзыв</label></td>
<td>
<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>
<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>
</td>
</tr>
{% IF USE_CAPTCHA %}
<tr>
<td><label for="opinion_captcha_string" class="required" title="Введите код с картинки">Введите код</label></td>
<td class="goodsDataOpinionCaptcha">
<table>
<tr>
<td rowspan="2"><img src="{CAPTCHA_URL}" class="goodsDataOpinionCaptchaImg" alt="Код" title="Проверочный код, который нужно ввести в соседнее поле" /></td>
<td><img src="{FORALL_IMAGES_PATH}icon/refresh/1.gif" rel="{FORALL_IMAGES_PATH}" alt="Обновить" title="Обновить" class="goodsDataOpinionCaptchaRefresh" /></td>
</tr>
<tr>
<td><input id="opinion_captcha_string" name="form[{ANTISPAM_FORM_FIELD_NAME_CAPTCHA_STRING}]" autocomplete="off" class="required captcha cornerAll" value="{FORM_}" /></td>
</tr>
</table>
</td>
</tr>
{% ENDIF %}
</tbody>
<!-- Низ таблицы. Кнопка отправки формы -->
<tfoot>
<tr>
<td></td>
<td><input type="submit" value="Добавить отзыв" /> <input type="reset" class="button" value="Отменить" /> </td>
</tr>
</tfoot>
</table>
</div>
</div>
</form>
<!-- Дабы добавляющий увидел результат добавления изменим хэш -->
{% IF FORM_GOODS_ID %}<script type="text/javascript">document.location.hash="goodsDataOpinionAdd"</script>{% ENDIF %}
</div>
{% ENDIF %}
<!-- END Если не выключен модуль отзывов о товаре -->
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль отзывов о товаре -->
<div style="position: absolute; z-index: 5; left: 50px; bottom: 90px; height: 0px;">
<img src="">
</div>
</div>
</div><div itemscope itemtype="http://data-vocabula...y.org/Product">
<div class="page-headline">
<div class="timerline">
<span id="timerOutput"></span><br/>
</div>
<h2 itemprop="name">{GOODS_NAME}</h2>
<meta itemprop="category" content="{% FOR upper_navigation %}{% IFNOT upper_navigation.first %} > {% ENDIF %}{upper_navigation.NAME}{% ENDFOR %}" />
</div>
<div class="pad-box">
<div class="goodsData">
<!-- Артикул, если указан -->
<div class="goodsDataMainModificationArtNumber" {% IFNOT GOODS_MOD_ART_NUMBER %}style="display:none"{% ELSE %}itemprop="identifier"{% ENDIF %}>
Артикул: <span>{GOODS_MOD_ART_NUMBER}</span>
</div>
<form action="{CART_ADD_GOODS_MODIFICATION_URL}" method="post" class="goodsDataForm cont700 hiden" >
<div>
<input type="hidden" name="hash" value="{HASH}" />
<input type="hidden" name="form[goods_from]" value="{GOODS_FROM}" />
<table class="goodsDataMain">
<tr>
<td class="goodsDataMainImageBlock">
<!-- Большое изображение -->
<div class="goodsDataMainImage">
{% IF GOODS_IMAGE_EMPTY %}
<img src="{ASSETS_IMAGES_PATH}no-photo-medium.png" alt="{GOODS_NAME}" title="Увеличить {GOODS_NAME}" />
{% ELSE %}
<a itemprop="image" href="{GOODS_IMAGE_LARGE}" target="_blank" title="Увеличить {GOODS_NAME}"><img class="cornerAll withBorder goods-image-medium" src="{GOODS_IMAGE_MEDIUM}" alt="{GOODS_NAME}" /></a>
{% ENDIF %}
<!-- Идентификатор изображения товара, используется для галереи изображений -->
<input type="hidden" rel="{GOODS_IMAGE_ID}" />
</div>
<!-- Ссылка на увеличение среднего изображения товара до большого. Появляется если у товара указано изображение -->
{% IFNOT GOODS_IMAGE_EMPTY %}
<div class="goodsDataMainImageZoom">
</div>
{% ENDIF %}
<!-- Другие изображения товара. Отображаются если есть изображения товара -->
{% IFNOT goods_images_empty %}
{% FOR goods_images %}
<!-- Заголовок и обёртка для изображений, которая позволяет не показывать уменьшенное изображение товара если оно у него лишь одно -->
{% IF goods_images.first %}
<div {% IF goods_images.length=1 %}style="display:none;"{% ENDIF %}>
<h5></h5>
{% ENDIF %}
<!-- Уменьшенное изображение товара -->
<div class="goodsDataMainImagesIcon left">
<a href="{goods_images.LARGE}" rel="gallery" target="_blank" title="{goods_images.NAME}"><img class="cornerAll withBorder goods-image-icon" rel="{goods_images.MEDIUM}" src="{goods_images.ICON}" alt="{goods_images.NAME}" /></a>
<!-- Идентификатор изображения товара, используется для галереи изображений -->
<input type="hidden" rel="{goods_images.ID}" />
</div>
<!-- В самом конце закрываем обёртку для списка маленьких изображений товара -->
{% IF goods_images.last %}
</div>
{% ENDIF %}
{% ENDFOR %}
{% ENDIF %}
</td>
<td>
<div class="goodsDataMainOrder cornerAll" itemscope itemprop="offerDetails" itemtype="http://data-vocabula...ary.org/Offer">
<table>
<!-- Блок с данными товара при выбранных параметрах. Берутся из модификаций товара -->
<tr>
<td class="goodsDataMainModificationDataBlock">
<!-- По этому значению производится заказ товара -->
<input type="hidden" name="form[goods_mod_id]" value="{GOODS_MOD_ID}" class="goodsDataMainModificationId" />
<!-- Цена сейчас -->
<span class="goodsDataMainModificationPriceNow" title="Цена сейчас" itemprop="price" content="{GOODS_MOD_PRICE_NOW}">
Цена купона {GOODS_MOD_PRICE_NOW | money_format}
</span><br />
<br />
<!-- Стоимость -->
<span class="goodsDataMainModificationPriceSuppler" title="Стоимость" itemprop="price" content="{GOODS_MOD_PRICE_SUPPLIER}">
Без купона {GOODS_MOD_PRICE_SUPPLIER | money_format}
</span> <br />
<!-- Выгода -->
<span class="goodsDataMainModificationPriceOld" title="Выгода" itemprop="price" content="{GOODS_MOD_PRICE_OLD}">
С купоном {GOODS_MOD_PRICE_OLD | money_format}
</span>
<!-- информация для поисковика о валюте товара -->
<meta itemprop="priceCurrency" content="{CURRENCY_CHAR_CODE}"/>
<!-- информация о числе товаров на складе -->
<meta itemprop="quantity" content="{GOODS_MOD_REST_VALUE}"/>
<!-- информация для поисковика о наличие товара. Отображается только при наличии товара на складе. Доступные значения: out_of_stock,in_stock,instore_only,preorder. -->
{% IF GOODS_MOD_REST_VALUE>0 %}
<span itemprop="availability" content="{% IF GOODS_MOD_REST_VALUE>0 %}in_stock{% ELSE %}out_of_stock{% ENDIF %}"></span>
{% ENDIF %}
<!-- Доступность товара -->
<div class="goodsDataMainModificationAvailable">
<div rel="true" class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>Осталось купонов: {GOODS_MOD_REST_VALUE} </div>
<div rel="false" class="available-false" {% IF GOODS_MOD_REST_VALUE>0 %}style="display:none;"{% ENDIF %}>Акция завершена</div>
</div>
</td>
<td class="goodsDataFormSubmitButton">
{% IF GOODS_MOD_REST_VALUE>0 && CART_COUNT_TOTAL=0 %}<a class="more-link cart_btn" onclick="$('.goodsDataForm').submit(); return false;"href="#" </a>{% ENDIF %}
<br /><br />
<!-- Если в тарифном плане подключен модуль сравнения товаров -->
{% IF TARIFF_FEATURE_GOODS_COMPARE %}
<!-- Если не выключен модуль сравнения товаров, то покажем кнопку сравнения товаров -->
{% IFNOT SETTINGS_COMPARE_DISABLE %}
<a class="goodsDataCompareButton add" {% IF GOODS_MOD_IS_HAS_IN_COMPARE_LIST %}style="display:none;"{% ENDIF %} rel="{COMPARE_ADD_URL}?return_to={CURRENT_URL | urlencode}" title="Добавить «{GOODS_NAME}» к списку сравнения с другими товарами" href="#" >Добавить к сравнению</a>
<a class="goodsDataCompareButton delete" {% IFNOT GOODS_MOD_IS_HAS_IN_COMPARE_LIST %}style="display:none;"{% ENDIF %} rel="{COMPARE_DELETE_URL}?return_to={CURRENT_URL | urlencode}" title="Убрать «{GOODS_NAME}» из списка сравнения с другими товарами" href="#" >Убрать из сравнения</a>
{% ENDIF %}
{% ENDIF %}
</td>
</tr>
<!-- Блок информации по акции действующей на товар, если таковая есть -->
{% IF GOODS_MOD_MAX_DISCOUNT_ID %}
<tr>
<td class="goodsDataMainDiscountBlock" colspan="2">
<DIV align="center" ID="countdown"></DIV>
<SCRIPT src="countdown.js" type="text/javascript" language="javascript"></SCRIPT>
<div itemprop="priceValidUntil" content="{GOODS_MOD_MAX_DISCOUNT_EXPIRED_AT | date("Y-m-d")}">
<!-- Акция на товар -->
<strong> Продажа купонов до {GOODS_MOD_MAX_DISCOUNT_EXPIRED_AT | date}.</strong><br />
</div>
</td>
</tr>
{% ENDIF %}
<!-- Блок выбора модификаций для текущей товарной позиции -->
<tr>
<td class="goodsDataMainModificationsBlock" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %} colspan="2">
<div>
<table>
<tr>
{% FOR goods_modifications_properties %}
<td class="goodsDataMainModificationsBlockProperty">
<!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь -->
{% FOR values %}
<!-- Если это первый элемент в списке -->
{% IF goods_modifications_properties.values.first %}
<strong>{goods_modifications_properties.NAME}:</strong><br />
<select name="form[properties][]">
{% ENDIF %}
<option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
<!-- Если это последний элемент в списке -->
{% IF goods_modifications_properties.values.last %}
</select>
{% ENDIF %}
{% ENDFOR %}
</td>
{goods_modifications_properties.index | is_divided("2","</tr><tr>","")}
{% ENDFOR %}
</tr>
</table>
<!-- Данные по модификациям для текущей товарной позиции -->
{% FOR goods_modifications %}
<div class="goodsDataMainModificationsList" rel="{goods_modifications.PROPERTIES_SLUG}">
<input type="hidden" name="id" value="{goods_modifications.ID}" />
<input type="hidden" name="art_number" value="{goods_modifications.ART_NUMBER}" />
<input type="hidden" name="price_now" value="{goods_modifications.PRICE_NOW}" />
<div class="price_now_formated" style="display:none">Цена купона {goods_modifications.PRICE_NOW | money_format}</div>
<input type="hidden" name="price_supplier" value="{goods_modifications.PRICE_SUPPLIER}" />
<div class="price_supplier_formated" style="display:none">Без купона {goods_modifications.PRICE_SUPPLIER | money_format}</div>
<input type="hidden" name="price_old" value="{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT}{% ELSE %}{goods_modifications.PRICE_OLD}{% ENDIF %}" />
<div class="price_old_formated" style="display:none">С купоном {goods_modifications.PRICE_OLD | money_format}</div>
<input type="hidden" name="rest_value" value="{goods_modifications.REST_VALUE}" />
<input type="hidden" name="measure_id" value="{goods_modifications.MEASURE_ID}" />
<input type="hidden" name="measure_name" value="{goods_modifications.MEASURE_NAME}" />
<input type="hidden" name="measure_desc" value="{goods_modifications.MEASURE_DESC}" />
<input type="hidden" name="measure_precision" value="{goods_modifications.MEASURE_PRECISION}" />
<input type="hidden" name="is_has_in_compare_list" value="{goods_modifications.IS_HAS_IN_COMPARE_LIST}" />
<div class="description" style="display:none">{goods_modifications.DESCRIPTION}</div>
</div>
{% ENDFOR %}
</div>
</td>
</tr>
<!-- Блок описания модификации -->
<tr>
<td class="goodsDataMainModificationsDescriptionBlock" {% IFNOT GOODS_MOD_DESCRIPTION %}style="display:none;"{% ENDIF %} colspan="2">
{GOODS_MOD_DESCRIPTION}
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</form>
<div class="banner_send">
<img src="http://st.roskupon.r...93/049/8.gif"/>
</div>
<script type="text/javascript">(function() {
if (window.pluso)if (typeof window.pluso.start == "function") return;
if (window.ifpluso==undefined) { window.ifpluso = 1;
var d = document, s = d.createElement('script'), g = 'getElementsByTagName';
s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
s.src = ('https:' == window.location.protocol ? 'https' : 'http') + '://share.pluso.ru/pluso-like.js';
var h=d[g]('body')[0];
h.appendChild(s);
}})();</script>
<div class="pluso" data-background="#ebebeb" data-options="big,square,line,horizontal,counter,theme=08" data-services="vkontakte,odnoklassniki,facebook,twitter,moimir,email"></div>
<br />
<br />
<!-- Блок описания товара. Показываем его есть описание товара -->
{% IF GOODS_DESCRIPTION_LARGE %}
<div class="htmlDataBlock" itemprop="description">
{GOODS_DESCRIPTION_LARGE}
</div>
{% ENDIF %}
<!-- END Блок описания товара. Показываем его есть описание товара -->
<!-- Короткое SEO-описание -->
{% IF GOODS_SEO_DESCRIPTION_SHORT %}
<p style="padding-top:1em;" itemprop="description">{GOODS_SEO_DESCRIPTION_SHORT}</p>
{% ENDIF %}
<!-- END Короткое SEO-описание -->
<!-- Полное SEO-описание -->
{% IF GOODS_SEO_DESCRIPTION_LARGE %}
<div style="padding-top:1em;" class="htmlDataBlock" itemprop="description">{GOODS_SEO_DESCRIPTION_LARGE}</div>
{% ENDIF %}
<!-- END Полное SEO-описание -->
</div>
<!-- Блок характеристик товара. Показываем его если указаны характеристики -->
{% IFNOT goods_features_empty %}
<h3>Характеристики {GOODS_NAME}</h3><br />
<table class="goodsDataFeatures">
<tr>
{% FOR goods_features%}
<td>
<p><span>{goods_features.NAME}</span></p>
</td>
<td>
{goods_features.VALUE}
</td>
{% IFNOT goods_features.last %}{goods_features.index | is_divided("2","</tr><tr>","")}{% ENDIF %}
{% ENDFOR %}
</tr>
</table><br /><br />
{% ENDIF %}
<!-- END Блок характеристик товара. Показываем его если указаны характеристики -->
</div>
<!-- Сопутствующие товары -->
{% IFNOT related_goods_empty %}
<h3>Сопутствующие товары</h3><br />
<table>
<tr>
{% FOR related_goods %}
<td class="goodsListItem">
<div class="goodsListItemBlock withBorder cornerAll">
<table class="goodsListItemImage">
<tr>
<td>
<a href="{related_goods.URL}" title="Перейти на страницу «{related_goods.NAME}»"><img class="goods-image-other" src="{% IF related_goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{related_goods.IMAGE_OTHER}{% ENDIF %}" alt="{related_goods.NAME}" /></a>
</td>
</tr>
</table>
<h3 class="goodsListItemName"><a href="{related_goods.URL}" title="Перейти на страницу «{related_goods.NAME}»">{related_goods.NAME}</a></h3>
<div class="goodsListItemPriceNew">
<a href="{related_goods.URL_MIN_PRICE_NOW}">{related_goods.MIN_PRICE_NOW | money_format}</a>
</div>
<div class="goodsListItemPriceOld">
{% IF related_goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>related_goods.MIN_PRICE_NOW %}
<a href="{related_goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{related_goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
{% ELSEIF related_goods.MIN_PRICE_OLD>related_goods.MIN_PRICE_NOW %}
<a href="{related_goods.URL_MIN_PRICE_OLD}" class="lineThrough">{related_goods.MIN_PRICE_OLD | money_format}</a>
{% ENDIF %}
</div>
</div>
</td>
{% IFNOT related_goods.last %}{related_goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
{% ENDFOR %}
</tr>
</table><br /><br />
{% ENDIF %}
<!-- END Сопутствующие товары -->
<!-- Если в тарифном плане подключен модуль отзывов о товаре -->
{% IF TARIFF_FEATURE_GOODS_OPINION %}
<!-- Если не выключен модуль отзывов о товаре -->
{% IFNOT SETTINGS_OPINION_DISABLE %}
<div class="goodsDataOpinion">
<h2 style="text-align: center;">Отзывы об акции</h2>
<br />
<!-- Если отзывов по товару вообще нет, ни положительных ни отрицательных -->
{% IF opinion_list_empty_without_filter %}
<div class="goodsDataOpinionMessage empty">Отзывов пока не было. Вы можете <a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm">оставить его первым</a></div>
<!-- Если по товару есть хотя бы один отзыв -->
{% ELSE %}
<table>
<!-- Верхняя навигация (Фильтры и страницы) -->
<thead>
<tr class="goodsDataOpinionListNavigateTop">
<td>
<!-- Среднее значение по результатам всех отзывов об этом товаре -->
{% IF GOODS_OPINION_RATING_VALUE_ROUND %}
<img src="{FORALL_IMAGES_PATH}stars/{GOODS_OPINION_RATING_VALUE_ROUND}.gif" alt="{GOODS_OPINION_RATING_VALUE_ROUND}" class="valignMiddle" style="padding-right:1em;" />
{% ELSE %}
<img src="{FORALL_IMAGES_PATH}stars/10.gif" alt="Рейтинг не определён" class="valignMiddle" style="padding-right:1em;" />
{% ENDIF %}
<!-- Фильтры отзывов -->
<span class="goodsDataOpinionAverageInfo">
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=-1 %}
Все ({GOODS_OPINION_RATING_CNT_ALL}) |
{% ELSE %}
<a href="{GOODS_OPINION_ALL_URL}">Все ({GOODS_OPINION_RATING_CNT_ALL})</a> |
{% ENDIF %}
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=1 %}
Положительные ({GOODS_OPINION_RATING_CNT_GOOD}) |
{% ELSE %}
<a href="{GOODS_OPINION_GOOD_URL}">Положительные ({GOODS_OPINION_RATING_CNT_GOOD})</a> |
{% ENDIF %}
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=0 %}
Отрицательные ({GOODS_OPINION_RATING_CNT_BAD}) |
{% ELSE %}
<a href="{GOODS_OPINION_BAD_URL}">Отрицательные ({GOODS_OPINION_RATING_CNT_BAD})</a> |
{% ENDIF %}
<a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm AddNewOpinionLinkAfterList">Оставить отзыв</a>
</span>
</td>
<td>
<!-- Страницы отзывов -->
{% IF opinion_show_pages %}
<div class="square_pages">
<span>Страницы: </span>
{% FOR opinion_pages_list %}
{% IF opinion_pages_list.CURRENT %}
<b>{opinion_pages_list.PAGE}</b>
{% ELSE %}
<a href="{GOODS_OPINION_PAGINATE_URL}&page={opinion_pages_list.PAGE}">{opinion_pages_list.PAGE}</a>
{% ENDIF %}
{% ENDFOR %}
</div>
{% ENDIF %}
</td>
</tr>
</thead>
<!-- END Верхняя навигация (Фильтры и страницы) -->
<!-- Если отзывов по товару не было с учетом фильтра по настроению отзыва -->
{% IF opinion_list_empty %}
<tbody>
<tr>
<td colspan="2">
<div class="goodsDataOpinionMessage empty">
{% IF GOODS_OPINION_GENERALLY_IS_GOOD=1 %}
Положительных
{% ELSEIF GOODS_OPINION_GENERALLY_IS_GOOD=0 %}
Отрицательных
{% ENDIF %}
отзывов пока не было. Вы можете <a href="#goodsDataOpinionAdd" class="jsAction goodsDataOpinionShowAddForm">оставить его первым</a>
</div>
</td>
</tr>
</tbody>
<!-- Если отзывы по товару уже есть, покажем их список -->
{% ELSE %}
<!-- Список отзывов о товарах -->
<tbody>
<tr>
<td colspan="2">
<table class="goodsDataOpinionListTable" itemprop="review">
<tbody>
{% FOR opinion_list %}
<tr class="{% IF opinion_list.GENERALLY_IS_GOOD %}good{% ELSE %}bad{% ENDIF %}">
<td class="ceil1">
<span class="goodsDataOpinionListTableClient {% IF opinion_list.CLIENT_ID %}auth{% ENDIF %}">{opinion_list.NAME}</span>
<span class="goodsDataOpinionListTableDate">{opinion_list.DATE}</span>
{% IF opinion_list.DELETE_URL %}
<a href="{opinion_list.DELETE_URL}">Удалить</a>
{% ENDIF %}
</td>
<td class="ceil2">
{% IF opinion_list.TITLE %}<strong class="valignMiddle">{opinion_list.TITLE}</strong>{% ENDIF %}
{% IF opinion_list.RATING %}<img class="valignMiddle" src="{FORALL_IMAGES_PATH}stars/{opinion_list.RATING}.gif" alt="{opinion_list.RATING}"/>{% ENDIF %}<br />
{% IF opinion_list.ACCOMPLISHMENTS %}<strong>Достоинства:</strong> {opinion_list.ACCOMPLISHMENTS | nl2br}<br />{% ENDIF %}
{% IF opinion_list.LIMITATIONS %}<strong>Недостатки:</strong> {opinion_list.LIMITATIONS | nl2br}<br />{% ENDIF %}
{% IF opinion_list.COMMENT %}<strong>Комментарий:</strong> {opinion_list.COMMENT | nl2br}<br />{% ENDIF %}
{% IF opinion_list.ANSWER %}
<div class="goodsDataOpinionListTableAnswer">
{opinion_list.ANSWER | nl2br}<br />
</div>
{% ENDIF %}
</td>
</tr>
{% ENDFOR %}
</tbody>
</table>
</td>
</tr>
</tbody>
<!-- END Список отзывов о товаре -->
<!-- Нижняя навигация (страницы) -->
<tfoot>
<tr class="goodsDataOpinionListNavigateBottom">
<td colspan="2">
<!-- Страницы отзывов -->
{% IF opinion_show_pages %}
<div class="square_pages">
<span>Страницы: </span>
{% FOR opinion_pages_list %}
{% IF opinion_pages_list.CURRENT %}
<b>{opinion_pages_list.PAGE}</b>
{% ELSE %}
<a href="{GOODS_OPINION_PAGINATE_URL}&page={opinion_pages_list.PAGE}">{opinion_pages_list.PAGE}</a>
{% ENDIF %}
{% ENDFOR %}
</div>
{% ENDIF %}
</td>
</tr>
</tfoot>
<!-- END Нижняя навигация (страницы) -->
{% ENDIF %}
</table>
{% ENDIF %}
<!-- END Если по товару есть хотя бы один отзыв -->
<!-- Форма добавления нового отзыва о товаре -->
<form action="" method="post" class="goodsDataOpinionAddForm">
<div id="goodsDataOpinionAdd">
{% IF FORM_NOTICE %}
<h3 class="{% IF FORM_NOTICE_IS_GOOD %}green{% ELSE %}red{% ENDIF %}">{FORM_NOTICE}</h3>
{% ENDIF %}
<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>
<table class="goodsDataOpinionAddTable">
{% IF TARIFF_FEATURE_CLIENT_ROOM %}
{% IFNOT CLIENT_IS_LOGIN %}
<thead>
<tr>
<td colspan="2">
<div class="goodsDataOpinionMessage auth">Ваши знания будут оценены посетителями сайта, если Вы <a href="{USER_LOGIN_URL}">авторизируетесь</a> перед написанием отзыва.</div>
</td>
</tr>
</thead>
{% ENDIF %}
{% ENDIF %}
<!-- Тело таблицы. Форма добавления отзыва о товаре -->
<tbody>
{% IFNOT CLIENT_IS_LOGIN %}
<tr>
<td><label for="goods_opinion_name" class="required">Ваше имя</label></td>
<td><input id="goods_opinion_name" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_NAME}]" value="{FORM_GOODS_OPINION_NAME}" maxlength="255" class="required cornerAll"/></td>
</tr>
{% ENDIF %}
<tr>
<td><label for="goods_opinion_title">Заголовок</label></td>
<td><input id="goods_opinion_title" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_TITLE}]" value="{FORM_GOODS_OPINION_TITLE}" maxlength="255" class="cornerAll" /></td>
</tr>
<tr>
<td class="valignTop"><label>Оценка акции</label></td>
<td>
<div class="goodsDataOpinionTableRating">
<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>
</td>
</tr>
<tr>
<td><label for="goods_opinion_accomplishments">Достоинства</label></td>
<td><textarea id="goods_opinion_accomplishments" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_ACCOMPLISHMENTS}]" cols="100" rows="7" class="cornerAll">{FORM_GOODS_OPINION_ACCOMPLISHMENTS}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_limitations">Недостатки</label></td>
<td><textarea id="goods_opinion_limitations" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_LIMITATIONS}]" cols="100" rows="7" class="cornerAll">{FORM_GOODS_OPINION_LIMITATIONS}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_comment" class="required">Комментарий</label></td>
<td><textarea id="goods_opinion_comment" name="form[{ANTISPAM_FORM_FIELD_NAME_GOODS_OPINION_COMMENT}]" cols="100" rows="7" class="required cornerAll">{FORM_GOODS_OPINION_COMMENT}</textarea></td>
</tr>
<tr>
<td><label for="goods_opinion_generally_is_good1">В целом Ваш отзыв</label></td>
<td>
<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>
<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>
</td>
</tr>
{% IF USE_CAPTCHA %}
<tr>
<td><label for="opinion_captcha_string" class="required" title="Введите код с картинки">Введите код</label></td>
<td class="goodsDataOpinionCaptcha">
<table>
<tr>
<td rowspan="2"><img src="{CAPTCHA_URL}" class="goodsDataOpinionCaptchaImg" alt="Код" title="Проверочный код, который нужно ввести в соседнее поле" /></td>
<td><img src="{FORALL_IMAGES_PATH}icon/refresh/1.gif" rel="{FORALL_IMAGES_PATH}" alt="Обновить" title="Обновить" class="goodsDataOpinionCaptchaRefresh" /></td>
</tr>
<tr>
<td><input id="opinion_captcha_string" name="form[{ANTISPAM_FORM_FIELD_NAME_CAPTCHA_STRING}]" autocomplete="off" class="required captcha cornerAll" value="{FORM_}" /></td>
</tr>
</table>
</td>
</tr>
{% ENDIF %}
</tbody>
<!-- Низ таблицы. Кнопка отправки формы -->
<tfoot>
<tr>
<td></td>
<td><input type="submit" value="Добавить отзыв" /> <input type="reset" class="button" value="Отменить" /> </td>
</tr>
</tfoot>
</table>
</div>
</div>
</form>
<!-- Дабы добавляющий увидел результат добавления изменим хэш -->
{% IF FORM_GOODS_ID %}<script type="text/javascript">document.location.hash="goodsDataOpinionAdd"</script>{% ENDIF %}
</div>
{% ENDIF %}
<!-- END Если не выключен модуль отзывов о товаре -->
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль отзывов о товаре -->
<div style="position: absolute; z-index: 5; left: 50px; bottom: 90px; height: 0px;">
<img src="">
</div>
</div>
</div>
// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
var img=document.createElement('img');
img.src = 'http://storeland.ru/...IComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
img.style.position = 'absolute';
img.style.top = '-9999px';
try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
return false;
}
// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/\D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(\d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}
// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
var
// Ссылка по которой кликнули
LObject = $(LinkObject),
// Объект у которого изменяем тип с password на text
IObject = $(InputObject),
// Старый текст ссылки
txtOld = LObject.text(),
// Новый текст ссылки
txtNew = LObject.attr('rel');
// Если объекты не получены, завершим работу функции
if( LObject.length==0 || IObject.length==0 ) {
return false;
}
// Изменяем у ссылки текст со старого на новый
LObject.html(txtNew);
// Старый текст ссылки сохраняем в атрибуте rel
LObject.attr('rel', txtOld);
// Изменяем тип input поля
if(IObject[0].type == 'text') {
IObject[0].type = 'password';
} else {
IObject[0].type = 'text';
}
}
// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
if(cnt>13) {
return false;
}
$(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
num = (num==6)?0:num;
setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}
$(document).ready(function(){
$('.success_read').live('change', function(){
if($(this).attr('checked')) {
$('.more-link').removeAttr("disabled");
}
else {
$('.more-link').attr("disabled","disabled");
}
});
// Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
$('.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
$('.goodsToCartFromCompareForm').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, {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, {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(),
modificationPriceSupplier = parseFloat(modificationBlock.find('[name="price_supplier"]').val()),
modificationPriceSupplierFormated = modificationBlock.find('.price_supplier_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'),
goodsPriceSupplier = $('.goodsDataMainModificationPriceSuppler'),
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);
goodsPriceSupplier.html(modificationPriceSupplierFormated);
// Старая цена товара
if(modificationPriceOld>modificationPriceNow) {
goodsPriceOld.html(modificationPriceOldFormated);
} else {
goodsPriceOld.html('');
}
// Есть ли товар есть в наличии
goodsAvailableTrue.text('Осталось купонов: ' + modificationRestValue);
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
});
});
$(function() {
if($('#paymentForm').length) {
var payment = $('#paymentForm .paymentFormTbodySubmitButton');
if(payment.val() === 'Перейти к оплате') {
payment.val('Оплатить');
}
}
});
$(function() {
if($('.goodsDataMainModificationPriceSupplier').length) {
var supplier = parseFloat($('.goodsDataMainModificationPriceSupplier .num').text().replace(/\s+/, ''));
var old = parseFloat($('.goodsDataMainModificationPriceOld .num').text().replace(/\s+/, ''));
if(supplier > old) {
var saving = number_format(supplier - old, 0, '.', ' ');
$('.saving').text(saving + ' рублей').parent().show();
}
}
});
$(function() {
new DG.Widget.Components.Loader({
wid: 'bbd01027',
params: {"projectSelector":{"id":24,"code":"rostov","name":"Ростов-на-Дону","centroid":"POINT(39.743251183763071 47.248118452357431)"},"search":{"rubrics":{"list":["_1","_2","_3","_4","_5","_6","_7","_8","_9","_10","_11","_12","_13","_14","_15","_16","_17","_18","_19","_20","_21","_22","_23","_24","_25","_26","_27","_28","_29","_30","_31","_32","_33","_34","_35","_36","_37","_38","_39","_40","_41","_42","_43","_44","_45","_46","_47","_48","_49","_50","_51","_52","_53","_54","_55","_56"]},"_searchFirmBasePoint":{}},"customBalloon":{},"Map":{"zoom":10,"lon":39.743251183763,"lat":47.248118452357},"resize":{"w":700,"h":400}} });
});
#176409 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 02 Декабрь 2014 - 13:22 в Общие вопросы
#177067 Формула Для Вычисления Количества Проданного Товара
Отправлено от Jason RND в 05 Декабрь 2014 - 11:04 в Общие вопросы
Vaccina (05 Декабрь 2014 - 02:38) писал:
.html(50 - parseInt(goodsModificationSold.data('restv'))).end().show();
на
.html(50 - parseInt(goodsModificationSold.attr('data-restv'))).end().show();
Vaccina, спасибо! Вы как всегда на высоте!
#145951 Ошибка При Подтверждении Прав На Yandex
Отправлено от Jason RND в 03 Июль 2014 - 12:36 в Настройки
*При регистрации в Яндексе будут предложены способы подтверждения, что сайт ваш. Необходимо:
1) зайти во вкладку "Сайт", нажать в блоке шаблонов на файл с названием "HTML"
2) Вставить предложенную Яндексом строку после строки: <title>{PAGE_TITLE}</title>
3) и нажать на кнопку "Сохранить".
Но! Когда добавляю, сам Storeland ругается и предлагает загрузить файл яндекса в корень сайта.
Исправьте ,плиз вышенаписанную инструкцию на ту, в которой описывается загрузка файла в корень...
А эта инструкция только вводит в заблуждение...
#145735 Распечатать Тело Сайта
Отправлено от Jason RND в 02 Июль 2014 - 12:42 в Инструкция по использованию (документация)
#145485 Распечатать Тело Сайта
Отправлено от Jason RND в 30 Июнь 2014 - 18:43 в Инструкция по использованию (документация)
Полагаю, не мне одному это интересно.
Необходимо распечатать страницу (любую...) скрипт, например...
</div>
<div class="share42init" data-description="Описание страницы"> data-path="{ASSETS_IMAGES_PATH}" data-top1="150" data-top2="20" data-margin="0"></div>
<a href="javaScript:window.print();">Распечатать купон</a>
</div>
НО! На печать выходит весь сайт...(страница с рекламой, меню и т.д...)
Как прописать, чтобы хотя бы печаталось только тело сайта?
noprint прописывать каждому блоку какой-то бред. Есть другие варианты?
из этого http://xpoint.ru/for...ead/37523.xhtml мало что понятно!
Заранее благодарен!
#145492 Изменить <Title>Связь С Администрацией</title>
Отправлено от Jason RND в 30 Июнь 2014 - 19:58 в Бэк-офис. Сайт
1.Нужно изменить заголовки страниц
2. нужно изменить названия страниц в меню
3. Нужно изменить подписи к меню (всплывающие)
пропишите по одному примеру на страницу "контакты" (связь с администрацией)... Остальные я по аналогии изменю...
Заранее благодарен!
#145622 Изменить <Title>Связь С Администрацией</title>
Отправлено от Jason RND в 01 Июль 2014 - 19:24 в Бэк-офис. Сайт
#145471 Seo Описание Любой Страницы Отображается На Сайте
Отправлено от Jason RND в 30 Июнь 2014 - 15:52 в SEO
Возникли новые вопросы:
1. У меня в Яндекс браузере товары в таблице отображаются в 2 колонки (так понимаю, за это отвечает prod_hold - настроил ширину)... Но, в IE вообще он не видит этот параметр... и отображает в 4! Хотя по умолчанию... в 3! Как решить этот момент?
2. В отзывах, когда ставишь оценку товара - в итоге она не отображается корректно (.. т.е поставил плохо, она всегда показывает 5 звездочек)
3. У меня вместо товаров видеоролики...(убраны картинки товаров, цены и прочее... осталось только название и описание - вот в описание и вставляю ссылку на видео)
Как мне сделать, чтобы на главной странице (новинки, хиты) при нажатии на видеоролик он не воспроизводился, а ссылался на "товар", т.е. открывался в шаблоне "товар".
Заранее благодарен! Сайт
- Форум владельцев интернет-магазинов
- → Публикации Jason RND
- Privacy Policy