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


Как сделать стикер для товаров


  • Вы не можете ответить в тему
Сообщений в теме: 7

#1 idal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 02 January 2015 - 09:56 PM

Доброго времени суток.
подскажите пожалуйста как сделать стикер с процентной скидкой (-50%) размещенный на фото, для товаров который уцененные(имеют две цены).
заранее спасибо.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 January 2015 - 10:35 PM

подскажите пожалуйста как сделать стикер с процентной скидкой (-50%) размещенный на фото

Так же, как это сделано в home.tpl.html (спецпредложения) со стикером "Лучшая цена (best.png).
Основная идея: блок с фотографией товара (родительский) имеет свойство 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.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 idal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 03 January 2015 - 07:24 AM

Как вывести процент скидки на стикере -50% .... ? Чтобы ставило процент в зависимости от уценки товара.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 January 2015 - 02:23 PM

Как вывести процент скидки на стикере -50% ....

Ну так пропишите вместо <img pixel.gif> нужный процент в виде, например, <span style="font-size:3em;">-50%</span>
Или не знаете, как из двух цен - старой и новой - посчитать процент скидки? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 idal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 7
Начинающий
  • ГородКиев

Отправлено 09 January 2015 - 02:19 PM

Или не знаете, как из двух цен - старой и новой - посчитать процент скидки? :)

к сожалению на знаю (
  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 January 2015 - 07:23 PM

к сожалению на знаю (

Ээээ.... Даже не знаю, что и сказать.
Вот есть старая цена в 90руб (list_price) и новая в 80руб (Price).
Вы всерьез не знаете, как посчитать процентную разницу между 80 и 90?
Естественно, считать процентную разницу (скидку) надо в PHP-файле и передавать через $smarty->assign(), а не в TPL.HTML. В шаблоне тоже можно, но не рационально (сложнее и затратнее).

Я не понимаю, в чем проблема. Банальнейшая задача, банальнейшее решение.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 idal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 243 сообщений
Репутация: 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}

  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 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.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)