Страница 1 из 1
Отображение товара с учетом цены
Добавлено: 30.03.2016, 06:38
MaximKAA
Добрый день!
Для разработчиков появилось предложение по модернизации.
Предлагается убрать отображение цены в шаблоне и кнопку Купить заменить на Предзаказ, если цена не установлена или 0,00 в административной панели.
Будет логично, что товар купить за 0,00 нельзя. Часто бывает, что на товар не установили цену и при этом его можно купить. Также будет логично вообще убрать отображение цены, если её нет, а просто оставить кнопочку Предзаказ
Добавлено: 30.03.2016, 06:45
OkayCMS
Некоторые используют товары с ценой ноль для обозначения подарков. Также в некоторых магазинах сопутсвующие услуги создаются в виде товаров с ценой 0. Например, если вы берете телевизор, то вы также можете получить услуги по его установке и настройке бесплатно. Но это нужно не всем, поэтому создается отдельный товар с ценой 0, а дальше клиент если хочет - добавляет себе такой товар, если не хочет - заказывает только телевизор.
Добавлено: 30.03.2016, 07:12
MaximKAA
OkayCMS писал(а):Некоторые используют товары с ценой ноль для обозначения подарков. Также в некоторых магазинах сопутсвующие услуги создаются в виде товаров с ценой 0. Например, если вы берете телевизор, то вы также можете получить услуги по его установке и настройке бесплатно. Но это нужно не всем, поэтому создается отдельный товар с ценой 0, а дальше клиент если хочет - добавляет себе такой товар, если не хочет - заказывает только телевизор.
Если кому понадобится убрать отображение цены, если она не установлена на товар:
В файле
tiny_products.tpl поправить
Код: Выделить всё
{* Цена *}
{if $product->variant->price>0}
<div class="{if !$product->variant->compare_price}col-xs-12{else}col-xs-6{/if} h5 font-weight-bold m-b-0">
<span class="fn-price">{$product->variant->price|convert}</span> {$currency->sign|escape}
</div>
{/if}
{* @END Цена *}
И в файле
product.tplКод: Выделить всё
{* Цена *}
{if $product->variant->price>0}
<div class="h4 font-weight-bold">
<span class="fn-price">{$product->variant->price|convert}</span> {$currency->sign|escape}
</div>
{/if}
{* @END Цена *}
Добавлено спустя 3 часа 7 минут:Если присутствуют варианты товаров, не работает. Прошу помощи. Как реализовать и для вариантов товаров?
Код: Выделить всё
{* Варианты товара *}
<select name="variant" class="fn-variant okaycms form-control c-select{if $product->variants|count < 2} hidden-xs-up{/if}">
{foreach $product->variants as $v}
<option value="{$v->id}" data-price="{$v->price|convert}" data-stock="{$v->stock}"{if $v->compare_price > 0} data-cprice="{$v->compare_price|convert}"{/if}{if $v->sku} data-sku="{$v->sku}"{/if}{if $v@first} selected{/if}>{if $v->name}{$v->name}{else}{$product->name|escape}{/if}</option>
{/foreach}
</select>
{* @END Варианты товара *}
Добавлено: 01.04.2016, 07:00
zyxer
Как вариант можно в okay.js изменить "price.html( selected.data( 'price' ) );" на
Код: Выделить всё
if(selected.data( 'price' )){
price.html( selected.data( 'price' ) );
price.parent().removeClass( 'hidden-xs-up' );
} else {
price.parent().addClass( 'hidden-xs-up' );
}
Блок цены меняем на:
Код: Выделить всё
{* Цена *}
<div class="{if !$product->variant->compare_price}col-xs-12{else}col-xs-6{/if} h5 font-weight-bold m-b-0 {if $product->variant->price == 0}hidden-xs-up{/if}">
<span class="fn-price">{$product->variant->price|convert}</span> {$currency->sign|escape}
</div>
{* @END Цена *}
И селект заменить на:
Код: Выделить всё
{* Варианты товара *}
<select name="variant" class="fn-variant okaycms form-control c-select{if $product->variants|count < 2} hidden-xs-up{/if}">
{foreach $product->variants as $v}
<option value="{$v->id}" {if $v->price > 0}data-price="{$v->price|convert}"{/if} data-stock="{$v->stock}"{if $v->compare_price > 0} data-cprice="{$v->compare_price|convert}"{/if}{if $v->sku} data-sku="{$v->sku}"{/if}{if $v@first} selected{/if}>{if $v->name}{$v->name}{else}{$product->name|escape}{/if}</option>
{/foreach}
</select>
{* @END Варианты товара *}
Это для привью товара (файл tiny_products.tpl) в карточке товара по такому же принципу
Добавлено: 01.04.2016, 11:15
MaximKAA
Решение хорошее.
В tiny_products.tpl корректно работает, а вот в карточке товара product.tpl при смене вариантов товара цена если отсутствует все равно отображается
Добавлено спустя 1 час:zyxer писал(а):Как вариант можно в okay.js изменить "price.html( selected.data( 'price' ) );" на
Код: Выделить всё
if(selected.data( 'price' )){
price.html( selected.data( 'price' ) );
price.parent().removeClass( 'hidden-xs-up' );
} else {
price.parent().addClass( 'hidden-xs-up' );
}
Блок цены меняем на:
Код: Выделить всё
{* Цена *}
<div class="{if !$product->variant->compare_price}col-xs-12{else}col-xs-6{/if} h5 font-weight-bold m-b-0 {if $product->variant->price == 0}hidden-xs-up{/if}">
<span class="fn-price">{$product->variant->price|convert}</span> {$currency->sign|escape}
</div>
{* @END Цена *}
И селект заменить на:
Код: Выделить всё
{* Варианты товара *}
<select name="variant" class="fn-variant okaycms form-control c-select{if $product->variants|count < 2} hidden-xs-up{/if}">
{foreach $product->variants as $v}
<option value="{$v->id}" {if $v->price > 0}data-price="{$v->price|convert}"{/if} data-stock="{$v->stock}"{if $v->compare_price > 0} data-cprice="{$v->compare_price|convert}"{/if}{if $v->sku} data-sku="{$v->sku}"{/if}{if $v@first} selected{/if}>{if $v->name}{$v->name}{else}{$product->name|escape}{/if}</option>
{/foreach}
</select>
{* @END Варианты товара *}
Это для привью товара (файл tiny_products.tpl) в карточке товара по такому же принципу
А как тоже самое сделать для корзины? Убрать отображение в cart_purchases.tpl ?
Добавлено: 01.04.2016, 13:18
zyxer
Снова таки можно сделать так: (файл cart_purchases.tpl)
Код: Выделить всё
{* Цена за ед. *}
<div class="purchase-price hidden-md-down">
<span {if $purchase->variant->price == 0}class="hidden-xs-up"{/if}>{($purchase->variant->price)|convert} {$currency->sign}</span>
</div>
и
Код: Выделить всё
{* Общая цена *}
<div class="purchase-full-price">
<span {if $purchase->variant->price == 0}class="hidden-xs-up"{/if}>{($purchase->variant->price*$purchase->amount)|convert} {$currency->sign}</span>
</div>
Добавлено: 01.04.2016, 13:28
MaximKAA
zyxer писал(а):{* Общая цена *}
<div class="purchase-full-price">
<span {if $purchase->variant->price == 0}class="hidden-xs-up"{/if}>{($purchase->variant->price*$purchase->amount)|convert} {$currency->sign}</span>
</div>
Спасибо!
Добавлено: 08.06.2019, 05:43
exid
zyxer писал(а):Блок цены меняем на:
Код: Выделить всё
{* Цена *}
<div class="{if !$product->variant->compare_price}col-xs-12{else}col-xs-6{/if} h5 font-weight-bold m-b-0 {if $product->variant->price == 0}hidden-xs-up{/if}">
<span class="fn-price">{$product->variant->price|convert}</span> {$currency->sign|escape}
</div>
{* @END Цена *}
Здравствуйте!
Подскажите пожалуйста как сделать в поиске если у товаров нулевая цена что бы их не выводить или написать вместо цены нет в наличии?
Добавлено: 19.06.2019, 11:03
zyxer
решение не самое изящное, набросал на быструю руку.
в дизайне в js/okay.js где блок $( ".fn_search" ).autocomplete( {...} ) есть метод formatResult вот в нем нужно удалить часть
чтобы эта строка имела вид
Код: Выделить всё
return "<div>" + (suggestion.data.image ? "<img align=absmiddle src='" + suggestion.data.image + "'> " : '') + "</div>" + "<a href=" + suggestion.lang + "products/" + suggestion.data.url + '>' + suggestion.value.replace( new RegExp( pattern, 'gi' ), '<strong>$1<\/strong>' ) + '<\/a>' + "<span>" + suggestion.price + "</span>";
и в ajax/search_products.php где foreach($products as $product) {}
заменить его на
Код: Выделить всё
foreach($products as $product) {
$suggestion = new stdClass();
if(isset($images[$product->id])) {
$product->image = $okay->design->resize_modifier($images[$product->id], 35, 35);
}
if ($variants[$product->id][0]->price > 0) {
$suggestion->price = $okay->money->convert($variants[$product->id][0]->price, $currency->id) . ' ' . $currency->sign;
} else {
$suggestion->price = 'нет в наличии';
}
$suggestion->value = $product->name;
$suggestion->data = $product;
$suggestion->lang = $lang_link;
$suggestions[] = $suggestion;
}
в итоге будет такой результат
http://prntscr.com/o3tr3y. На самой странице поиска будет по прежнему выводиться цена 0. Еще раз, решение имеет ряд недостатков, но как быстрое решение задачи сгодится ) Если нужно более изящно, могу отдельно сделать на сайте или обращайтесь к партнерам окая
Добавлено: 20.06.2019, 12:49
exid
zyxer писал(а):решение не самое изящное, набросал на быструю руку.
Спасибо, решение рабочее.
А можете сделать что бы вообще не выводились товары с нулевыми ценами в поиске?
Карточка товара цена
Добавлено: 29.03.2020, 06:26
Edo555
В карточка товара сделайте если цена стоит 0 то на сайте отображала цена по запросу (и при нажатии на кнопку открывается форма обратной связи)
Добавлено: 19.11.2021, 12:16
Maks_13444
tiny_products.tpl где он лежит?