Как сделать стикер для товаров
#1
Отправлено 02 January 2015 - 09:56 PM
подскажите пожалуйста как сделать стикер с процентной скидкой (-50%) размещенный на фото, для товаров который уцененные(имеют две цены).
заранее спасибо.
#2
Отправлено 02 January 2015 - 10:35 PM
Так же, как это сделано в home.tpl.html (спецпредложения) со стикером "Лучшая цена (best.png).подскажите пожалуйста как сделать стикер с процентной скидкой (-50%) размещенный на фото
Основная идея: блок с фотографией товара (родительский) имеет свойство position:relative, а вложенный в него блок со стикером - position:absolute и z-index выше, чем у родительского.
Вот в этой строке шаблона home.tpl.html
<div align="right" style="position: relative; float: right;"><div class="semafor sl"><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$special_offers[i].productID}.html{else}index.php?productID={$special_offers[i].productID}{/if}"><img src="data/{$smarty.const.TPL}/pixel.gif" style="margin: 0px;" alt="" width="70" height="70"></a></div><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}product_{$special_offers[i].productID}.html{else}index.php?productID={$special_offers[i].productID}{/if}"><img src="data/{$special_offers[i].default_picture}" alt="{$special_offers[i].name}"></a></div>
сделано все, что необходимо и достаточно. Сократите ее до более понятной (уберите Smarty), впишите вместо классов (class="..") соответствующие стили (style="..") - все станет просто и понятно.
Очевидно, использовать ровно то же смарти-условие, которое используется для показа/непоказа старого зачеркнутого прайса в шаблонах краткого и полного описания товара.для товаров который уцененные(имеют две цены).
PS. Обязательно надо указать ширину-высоту вложенного блока со стикером (он совпадает с размером стикера) и ширину-высоту img с pixel.gif (аналогично). В приведенном примере это 70х70.
#3
Отправлено 03 January 2015 - 07:24 AM
#4
Отправлено 03 January 2015 - 02:23 PM
Ну так пропишите вместо <img pixel.gif> нужный процент в виде, например, <span style="font-size:3em;">-50%</span>Как вывести процент скидки на стикере -50% ....
Или не знаете, как из двух цен - старой и новой - посчитать процент скидки?
#5
Отправлено 09 January 2015 - 02:19 PM
к сожалению на знаю (Или не знаете, как из двух цен - старой и новой - посчитать процент скидки?
#6
Отправлено 09 January 2015 - 07:23 PM
Ээээ.... Даже не знаю, что и сказать.к сожалению на знаю (
Вот есть старая цена в 90руб (list_price) и новая в 80руб (Price).
Вы всерьез не знаете, как посчитать процентную разницу между 80 и 90?
Естественно, считать процентную разницу (скидку) надо в PHP-файле и передавать через $smarty->assign(), а не в TPL.HTML. В шаблоне тоже можно, но не рационально (сложнее и затратнее).
Я не понимаю, в чем проблема. Банальнейшая задача, банальнейшее решение.
#7
Отправлено 12 January 2015 - 11:19 AM
{if $currencies_count ne 0}{if $product_info.list_price > 0 && $product_info.list_price > $product_info.Price && $product_info.Price > 0} Скидка {math equation="(x / y ) * 100 - 100" x=$product_info.Price y=$product_info.list_price format="%.0f" } % {/if}{/if}
#8
Отправлено 12 January 2015 - 09:18 PM
Тоже вариант, но вообще-то в документации по smarty, видимо, совсем не зря написаны сделующие строки:Сделал так ))
-------------
{math} - это очень ресурсоёмкая функция из-за использования ею функции PHP eval(). Выполнение математических операций в PHP намного эффективнее, так что по возможности используйте PHP для математических рассчетов и присваивайте результат шаблону. При любых обстоятельствах, избегайте повторяющихся вызовов функции {math}, например внутри циклов {section}.
-----------
http://www.smarty.ne...nction.math.tpl
Что мешает тот же самый расчет сделать в PHP-части?
Что-нибудь типа:
foreach ($products as $key => $val) if ($val['list_price'] > $val['Price']) $products[$key]['discount'] = sprintf("%.0f",
100*($val['list_price']-$val['Price'])/$val['list_price']);
в category.php перед
$smarty->assign( "products_to_show", $products);
А в шаблоне выводить product_info.disocunt без использования math.