Новый Тип Отображения Списка Товаров В Товарных Категориях
#21
Отправлено 16 Февраль 2014 - 11:58
#22
Отправлено 19 Март 2014 - 09:10
#23
Отправлено 19 Март 2014 - 12:04
далее во вкладке Сайт- Редактор шаблонов в файле ТОВАРЫ
найдите код (строка 297)
<div class="availability">В наличии </div>
замените на код
<div class="availability">В наличии {goods.MIN_REST_VALUE} шт. </div>
там же код (369 стр.)
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}В наличии{% ENDIF %}</div>
замените на код
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}В наличии {goods.MIN_REST_VALUE} шт.{% ENDIF %}</div>
там же найти код (457стр.)
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}Товар есть в наличии{% ENDIF %}</div>
заменить его на код
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %} В наличии {goods.MIN_REST_VALUE} шт.{% ENDIF %}</div>
Выводить количество в зависимости от единицы измерения не получится потому что эта переменная не доступна в файле ТОВАРЫ
Для карточки товара откройте файл ТОВАР
найдите код (111 стр.)
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>Товар есть в наличии</p>
замените на код
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>В наличии {goods.MIN_REST_VALUE} {GOODS_MOD_MEASURE_NAME}</p>
#24
Отправлено 19 Март 2014 - 13:29
Taisia (19 Март 2014 - 12:04) писал:
далее во вкладке Сайт- Редактор шаблонов в файле ТОВАРЫ
найдите код (строка 297)
<div class="availability">В наличии </div>
замените на код
<div class="availability">В наличии {goods.MIN_REST_VALUE} шт. </div>
там же код (369 стр.)
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}В наличии{% ENDIF %}</div>
замените на код
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}В наличии {goods.MIN_REST_VALUE} шт.{% ENDIF %}</div>
там же найти код (457стр.)
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %}Товар есть в наличии{% ENDIF %}</div>
заменить его на код
<div class="availability">{% IF goods.MAX_REST_VALUE = 0 %}Под заказ{% ELSE %} В наличии {goods.MIN_REST_VALUE} шт.{% ENDIF %}</div>
Выводить количество в зависимости от единицы измерения не получится потому что эта переменная не доступна в файле ТОВАРЫ
Для карточки товара откройте файл ТОВАР
найдите код (111 стр.)
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>Товар есть в наличии</p>
замените на код
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>В наличии {goods.MIN_REST_VALUE} {GOODS_MOD_MEASURE_NAME}</p>
Выводить количество в зависимости от единицы измерения не получится потому что эта переменная не доступна в файле ТОВАРЫ -
Я имел ввиду, чтобы не "шт." подписывалось, а "шт", "кг", "м", "час", "день", "чел".. В зависимости от того, что выбрано в этом меню. Нельзя, да? Вы это имели ввиду?
#25
Отправлено 20 Март 2014 - 05:09
http://forum.storela...ия/page__st__20
#26
Отправлено 20 Март 2014 - 12:51
Vaccina (20 Март 2014 - 05:09) писал:
http://forum.storela...ия/page__st__20
#27
Отправлено 20 Март 2014 - 13:31
Andrew S. (20 Март 2014 - 12:51) писал:
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>В наличии {goods.MIN_REST_VALUE} {GOODS_MOD_MEASURE_NAME}</p>на такую
<p class="available-true" {% IF GOODS_MOD_REST_VALUE=0 %}style="display:none;"{% ENDIF %}>В наличии {GOODS_MOD_REST_VALUE} {GOODS_MOD_MEASURE_NAME}</p>
#28
Отправлено 20 Март 2014 - 15:02
#29
Отправлено 20 Март 2014 - 15:42
#30
Отправлено 21 Март 2014 - 14:38
Сообщение отредактировал Andrew S.: 26 Март 2014 - 11:11
#31
Отправлено 16 Апрель 2014 - 02:22
sengun (08 Февраль 2014 - 21:47) писал:
$('.products-grid .product-name a').each(function(){ while ($(this).outerHeight() >= 41) { $(this).text($(this).text().slice(0,-4)+'...'); } });Далее в main.css уменьшите высоту блока с названием товара в коде
.products-grid h2 {height:8em;overflow:hidden;font-size: 1em;}задайте высоту 40px; и допишите margin:0;
Замените
.products-grid .availability { line-height:21px; }на
.products-grid .availability { line-height:21px; display: inline-block;}
Теперь замените
.products-grid .price-box-for-regular-price { /*margin:17px 0 15px;*/ height:34px; }на это
.products-grid .price-box-for-regular-price { /*margin:17px 0 15px;*/ min-height:20px !important; margin-top:10px; margin-bottom:0px;}Здесь отредактируйте отступы по усмотрению (зеленое и фиолетовое расстояние).
2. Растянем строки по всей ширине добавлением
.products-list-2 li.item { width: 100%;}Если правильно понял про лишние пиксели, то они уберутся при добавлении стилей
.products-list-2 .product-box {padding: 0;}и в коде
.products-list-2 .product-name { vertical-align: middle; display: table-cell; height: 50px; line-height: 50px; padding: 0 5px; max-width: 55%;}line-height задайте 49px;
Также добавьте
.products-list-2 .img { min-width: 52px;}чтобы наименования товаров тоже начинались на одном уровне.
Границы картинок:
.products-list-2 li.item:nth-of-type(2n+1) .img { border: 1px solid #f1f1f1;} .products-list-2 li.item:nth-of-type(2n+2) .img { border: 1px solid #fff; }
Чтобы выровнять картинки в своих блоках по центру, замените
.products-list-2 .img img { max-width: 50px; max-height: 50px; }на
.products-list-2 .img img { max-width: 50px; max-height: 50px; margin:auto;}
По тому же принципу, который Вы описали в Вашем сообщении. А длинное название чтобы посмотреть - можно было бы навести мышкой как показано на рисунке.
#32
Отправлено 17 Апрель 2014 - 04:01
<h1 class="item-title-cards-h1" itemprop="name">{GOODS_NAME}</h1>замените на:
<h1 class="item-title-cards-h1" itemprop="name" title="{GOODS_NAME}">{GOODS_NAME}</h1>
Далее в bootstrap-responsive.min.css найдите:
.row h1.item-title-cards-h1 { color: #854242; font-size: 13px; font-weight: 900; }замените на:
.row h1.item-title-cards-h1 { color: #854242; font-size: 13px; font-weight: 900; display: block; height: 20px; overflow: hidden; }
#33
Отправлено 17 Апрель 2014 - 13:07
Vaccina (17 Апрель 2014 - 04:01) писал:
<h1 class="item-title-cards-h1" itemprop="name">{GOODS_NAME}</h1>замените на:
<h1 class="item-title-cards-h1" itemprop="name" title="{GOODS_NAME}">{GOODS_NAME}</h1>
Далее в bootstrap-responsive.min.css найдите:
.row h1.item-title-cards-h1 { color: #854242; font-size: 13px; font-weight: 900; }замените на:
.row h1.item-title-cards-h1 { color: #854242; font-size: 13px; font-weight: 900; display: block; height: 20px; overflow: hidden; }
Мы ещё так сделали в каталоге..
#34
Отправлено 17 Апрель 2014 - 19:37
Andrew S. (17 Апрель 2014 - 13:07) писал:
Мы ещё так сделали в каталоге..
Если хотите сделать по такому же принципу, как в каталоге, то в bootstrap-responsive.min.css отмените последнее изменение (height: 20px; overflow: hidden;), а в main.js добавьте код
if ($('.item-title-cards-h1').length ){ while ($('.item-title-cards-h1').outerHeight() >= 35) { $('.item-title-cards-h1').text($('.item-title-cards-h1').text().slice(0,-4)+'...'); } }сразу после
$('.products-grid .product-name a').each(function(){ while ($(this).outerHeight() >= 41) { $(this).text($(this).text().slice(0,-4)+'...'); } });
#35
Отправлено 18 Апрель 2014 - 00:28
sengun (17 Апрель 2014 - 19:37) писал:
Если хотите сделать по такому же принципу, как в каталоге, то в bootstrap-responsive.min.css отмените последнее изменение (height: 20px; overflow: hidden;), а в main.js добавьте код
if ($('.item-title-cards-h1').length ){ while ($('.item-title-cards-h1').outerHeight() >= 35) { $('.item-title-cards-h1').text($('.item-title-cards-h1').text().slice(0,-4)+'...'); } }сразу после
$('.products-grid .product-name a').each(function(){ while ($(this).outerHeight() >= 41) { $(this).text($(this).text().slice(0,-4)+'...'); } });
#36
Отправлено 20 Апрель 2014 - 18:03
sengun (17 Апрель 2014 - 19:37) писал:
Если хотите сделать по такому же принципу, как в каталоге, то в bootstrap-responsive.min.css отмените последнее изменение (height: 20px; overflow: hidden;), а в main.js добавьте код
if ($('.item-title-cards-h1').length ){ while ($('.item-title-cards-h1').outerHeight() >= 35) { $('.item-title-cards-h1').text($('.item-title-cards-h1').text().slice(0,-4)+'...'); } }сразу после
$('.products-grid .product-name a').each(function(){ while ($(this).outerHeight() >= 41) { $(this).text($(this).text().slice(0,-4)+'...'); } });
Цвет шрифта как в тексте, как строчка о наличии товара, темно-серый. Нежирный, обычный.
Подскажите, пожалуйста, какое число нужно будет сделать больше или меньше, чтобы выбрать оптимальную длину описания без увеличения высоты полей таблицы.
И, если можно, сделайте возможность выбора шрифта в ХХem или в другой форме, чтобы я вас потом не теребил и сам откорректировал величину шрифта.
Не знаю, 2 или три строки заняло бы описание. Поэтому бы сам сидел и подгонял.
Тут именно Sengun всегда помогал как надо сделать. Спасибо ему и лучше я бы подождал его ответа.
Сообщение отредактировал Andrew S.: 21 Апрель 2014 - 20:59
#37
Отправлено 22 Апрель 2014 - 08:51
#38
Отправлено 24 Апрель 2014 - 15:18
Andrew S. (20 Апрель 2014 - 18:03) писал:
Краткое описание.png
Цвет шрифта как в тексте, как строчка о наличии товара, темно-серый. Нежирный, обычный.
Подскажите, пожалуйста, какое число нужно будет сделать больше или меньше, чтобы выбрать оптимальную длину описания без увеличения высоты полей таблицы.
И, если можно, сделайте возможность выбора шрифта в ХХem или в другой форме, чтобы я вас потом не теребил и сам откорректировал величину шрифта.
Не знаю, 2 или три строки заняло бы описание. Поэтому бы сам сидел и подгонял.
Тут именно Sengun всегда помогал как надо сделать. Спасибо ему и лучше я бы подождал его ответа.
В шаблоне "Товары" замените
<div style="float: left; display: table;"> <div class="span5 img"> <a href="{goods.URL | url_amp}" title="{goods.NAME}" class="thumbnail"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a> </div> <h2 class="product-name"><a href="{goods.URL | url_amp}" title="{goods.NAME}">{goods.NAME}</a></h2> </div>на
<div style="float: left; display: table; width: 70%;"> <div class="span5 img"> <a href="{goods.URL | url_amp}" title="{goods.NAME}" class="thumbnail"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a> </div> <div style="width: 85%; height: 50px; display: inline-block;"> <h2 class="product-name" {% IFNOT goods.DESCRIPTION_SHORT %}style="vertical-align: middle; display: table-cell; height: 50px; line-height: 49px; padding: 0 5px; max-width: 55%;"{% ENDIF %}><a href="{goods.URL | url_amp}" title="{goods.NAME}">{goods.NAME}</a></h2> {% IF goods.DESCRIPTION_SHORT %}<div class="desc_short">{goods.DESCRIPTION_SHORT}</div>{% ENDIF %} </div> </div>Далее в main.js замените
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerWidth() >= 390) { $(this).text($(this).text().slice(0,-4)+'...'); } });на такой код
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerHeight() >= 21) { $(this).text($(this).text().slice(0,-4)+'...'); } }); $('.products-list-2 .desc_short').each(function(){ while ($(this).outerHeight() >= 31) { $(this).text($(this).text().slice(0,-4)+'...'); } });
И в main.css замените
.products-list-2 .product-name { vertical-align: middle; display: table-cell; height: 50px; line-height: 49px; padding: 0 5px; max-width: 55%;} .products-list-2 .product-name a {font-size: 14px;}на такой код
.products-list-2 .product-name { display: inline-block; padding: 0 5px; margin-bottom: 0;} .products-list-2 .product-name a {font-size: 14px; line-height: 19px;} .products-list-2 .desc_short { display: inline-block; padding: 0 5px; font-size: 11px; line-height: 15px; color: #858484;}здесь .products-list-2 .desc_short - стили для того краткого описания. font-size: 11px - размер шрифта, line-height: 15px - высота строки, или интерлиньяж.
Немного о скриптах, обрубающих текст.
Данный скрипт
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerHeight() >= 21) { $(this).text($(this).text().slice(0,-4)+'...'); } });обрезает последние символы наименования товара до тех пор, пока высота блока не станет меньше или равной 20 пикселям.
Следующий скрипт
$('.products-list-2 .desc_short').each(function(){ while ($(this).outerHeight() >= 31) { $(this).text($(this).text().slice(0,-4)+'...'); } });обрезает короткое описание товара до тех пор, пока блок, содержащий его не станет по высоте меньше или равен 30 пикселям.
Соответственно, высота ячейки товара не превысит 50 пикселей, какой бы длины не было описание и название товара.
И здесь, выходит, можно поиграться сразу с двумя стилями описания - размером шрифта и высотой строки. Если, например, размер шрифта сделать таким, что даже две его строки будут занимать больше 30 пикселей, т.е. текст обрежется до одной строки, то можно уменьшить высоту строки и тогда, две строки текста описания будут занимать по высоте меньше и могут обе уместиться в отведенное пространство.
Но есть одно "но", если сделать размер шрифта таким большим, что даже одна строка будет занимать по высоте больше 30 пикселей, то скрипт работать не будет. Но до такого, я думаю, не дойдет - для этого нужен действительно огромный шрифт.
#39
Отправлено 24 Апрель 2014 - 16:41
sengun (24 Апрель 2014 - 15:18) писал:
В шаблоне "Товары" замените
<div style="float: left; display: table;"> <div class="span5 img"> <a href="{goods.URL | url_amp}" title="{goods.NAME}" class="thumbnail"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a> </div> <h2 class="product-name"><a href="{goods.URL | url_amp}" title="{goods.NAME}">{goods.NAME}</a></h2> </div>на
<div style="float: left; display: table; width: 70%;"> <div class="span5 img"> <a href="{goods.URL | url_amp}" title="{goods.NAME}" class="thumbnail"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a> </div> <div style="width: 85%; height: 50px; display: inline-block;"> <h2 class="product-name" {% IFNOT goods.DESCRIPTION_SHORT %}style="vertical-align: middle; display: table-cell; height: 50px; line-height: 49px; padding: 0 5px; max-width: 55%;"{% ENDIF %}><a href="{goods.URL | url_amp}" title="{goods.NAME}">{goods.NAME}</a></h2> {% IF goods.DESCRIPTION_SHORT %}<div class="desc_short">{goods.DESCRIPTION_SHORT}</div>{% ENDIF %} </div> </div>Далее в main.js замените
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerWidth() >= 390) { $(this).text($(this).text().slice(0,-4)+'...'); } });на такой код
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerHeight() >= 21) { $(this).text($(this).text().slice(0,-4)+'...'); } }); $('.products-list-2 .desc_short').each(function(){ while ($(this).outerHeight() >= 31) { $(this).text($(this).text().slice(0,-4)+'...'); } });
И в main.css замените
.products-list-2 .product-name { vertical-align: middle; display: table-cell; height: 50px; line-height: 49px; padding: 0 5px; max-width: 55%;} .products-list-2 .product-name a {font-size: 14px;}на такой код
.products-list-2 .product-name { display: inline-block; padding: 0 5px; margin-bottom: 0;} .products-list-2 .product-name a {font-size: 14px; line-height: 19px;} .products-list-2 .desc_short { display: inline-block; padding: 0 5px; font-size: 11px; line-height: 15px; color: #858484;}здесь .products-list-2 .desc_short - стили для того краткого описания. font-size: 11px - размер шрифта, line-height: 15px - высота строки, или интерлиньяж.
Немного о скриптах, обрубающих текст.
Данный скрипт
$('.products-list-2 .product-name a').each(function(){ while ($(this).outerHeight() >= 21) { $(this).text($(this).text().slice(0,-4)+'...'); } });обрезает последние символы наименования товара до тех пор, пока высота блока не станет меньше или равной 20 пикселям.
Следующий скрипт
$('.products-list-2 .desc_short').each(function(){ while ($(this).outerHeight() >= 31) { $(this).text($(this).text().slice(0,-4)+'...'); } });обрезает короткое описание товара до тех пор, пока блок, содержащий его не станет по высоте меньше или равен 30 пикселям.
Соответственно, высота ячейки товара не превысит 50 пикселей, какой бы длины не было описание и название товара.
И здесь, выходит, можно поиграться сразу с двумя стилями описания - размером шрифта и высотой строки. Если, например, размер шрифта сделать таким, что даже две его строки будут занимать больше 30 пикселей, т.е. текст обрежется до одной строки, то можно уменьшить высоту строки и тогда, две строки текста описания будут занимать по высоте меньше и могут обе уместиться в отведенное пространство.
Но есть одно "но", если сделать размер шрифта таким большим, что даже одна строка будет занимать по высоте больше 30 пикселей, то скрипт работать не будет. Но до такого, я думаю, не дойдет - для этого нужен действительно огромный шрифт.
#40
Отправлено 24 Апрель 2014 - 17:05
Помогите только еще пару штрихов добить.
1.
2. Можно ли по аналогии с наведением на название товара сделать такое же отображение при наведении на описание? Простейшую такую выплывающую подсказку, как на первом изображении и тут:
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных