[Mod] Вывод одновреммено нескольких валют

nafanyaa

Постоялец
Регистрация
23 Авг 2006
Сообщения
288
Реакции
179
WebAsyst: - Показываем столько цен, сколько id валют укажем

Выводит цены согласно шаблону и форматированию вашей валюты из админ-панели и каждая цена имеет свой класс стиля (.cena1, .cena2….. )

Установка:

1. Файл function.cena.php размещаем в папке /kernel/includes/smarty/plugins

PHP:
<?php
function smarty_function_cena( $params, &$smarty )
  {
  $disp='';
  $sql='SELECT Price FROM SC_products WHERE productID="'.$params['pid'].'"';
  if($r=mysql_query($sql)){
  $res=mysql_fetch_assoc($r);
  $price=$res['Price'];
  }
  $curr=explode(',',$params['curr']);
  $a=1;
  foreach ($curr as $d){
  $sql='SELECT * FROM SC_currency_types WHERE CID="'.$d.'"';
  if($r=mysql_query($sql)){
  $res=mysql_fetch_assoc($r);
  $curs=$res['currency_value'];
  $nprice=round($curs*$price,2);
  if($res['thousands_delimiter']=='_') $res['thousands_delimiter']=' ';
$nprice=number_format($nprice,$res['decimal_places'],$res['decimal_symbol'],$res['thousands_delimiter']);
  $nprice=str_replace('{value}',$nprice,$res['display_template_ru']);
  $disp.='<div class="cena'.$a.'">'.$nprice.'</div>';
  }
  $a++;
  }
  return $disp;
  }
?>

2.
в папке /published/SC/html/scripts/templates/frontend в файле
product_brief.html (карточка товара на странице категории) там где ходите выводить цены, например внутри блока
<div class=”prdbrief_price”>
вызываем плагин {cena pid=`$product_info.productID` curr='3,6'}
где pid – это ID продукта, curr – перечень id валют, разделенный запятыми.

3.
в файле product_list.html (это списки продуктов) {cena pid=`$_product.productID` curr='3,6'}

4.
в файле product_price.html (вывод цены на странице продукта) {cena pid=`$product_info.productID` curr='3,6'}
PS:
curr – перечень id валют - смотрим в базе данных (например через phpmyadmin - таблица SC_currency_types ), по умолчанию у меня
3 - рубли
6 - USD
7 - EUR
8 - GBP
8e1b61a8ea028c8de80340f1ae62.jpeg



вставив код {cena pid=`$product_info.productID` curr='3,6,7,8'}, где перечислил все ID своих валют я получил вывод цены во ВСЕХ валютах

e9278663819b8ce0aec5793384b0.jpeg



добавив стиль
HTML:
.cena1{
 color:#0066CC;
 font-weight:bold;
 font-size: 130%;
 margin:0 5px 5px 5px;
}
 
.cena2{
 color:#99CC00;
 font-weight:bold;
 font-size: 130%;
 margin:0 5px 5px 5px;
}
.cena3{
 color:#6600CC;
 font-weight:bold;
 font-size: 130%;
 margin:0 5px 5px 5px;
}
.cena4{
 color:#333333;
 font-weight:bold;
 font-size: 130%;
 margin:0 5px 5px 5px;
}

я получил вывод разных цен в разном цвете
78abeb17f26895cb4239ca8c36f4.jpeg


источник _http://easyweb.org.ua/shop-script/dve-ceny/
 
{cena pid=`$product_info.productID` curr='3,6'} ставить куда угодно, или у него есть "свое место"?
Объясню свой вопрос:
Можно сказать, что заработало, но, есть 2-а вопроса:
  1. когда подгружается страница, то валюты отображаются так, как и должны, но, как только страница загрузилась, все валюты, кроме первой!, исчезают... Из-за чего такое может быть?
  2. не пойму, в какое именно место, в product_price.html нужно прописать {cena pid=`$product_info.productID` curr='3,6'}...?
Тыкал уже, куда только можно... Безрезультатно... :(

Все же я “дотыкался” :) (ответ на вопрос №2)
В файле product_price.html, ищем
Код:
{$product_info.PriceWithUnit}
и заменяем на
Код:
{cena pid=`$product_info.productID` curr=’3,6′}
 
  1. когда подгружается страница, то валюты отображаются так, как и должны, но, как только страница загрузилась, все валюты, кроме первой!, исчезают... Из-за чего такое может быть?
  2. ...

эту проблему решили?
 
уберите цену из-под класса prdbrief_price и totalPrice
там цены подгружаются ява скриптом и обновляются при изменении доп. характеритик

т.е. либо изменение доп.характеристик либо две цены?

Добавлено через 2 минуты
А как изменить скрипт, чтобы отображалось две цены через "/", например $1,20 / 9,60 грн ?
 
изменения в коде если кому будет нужно: данное изменение показывает цены в одну строку через символ " / "

PHP:
  <?php
function smarty_function_cena( $params, &$smarty )
  {
  $disp='';
  $razdel='';
  $sql='SELECT Price FROM SC_products WHERE productID="'.$params['pid'].'"';
  if($r=mysql_query($sql)){
  $res=mysql_fetch_assoc($r);
  $price=$res['Price'];
  if($price==0)
  return translate(`str_ask_price_manager`);
  }
  $curr=explode(',',$params['curr']);
  $a=1;
  foreach ($curr as $d){
  $sql='SELECT * FROM SC_currency_types WHERE CID="'.$d.'"';
  if($r=mysql_query($sql)){
  $res=mysql_fetch_assoc($r);
  $curs=$res['currency_value'];
  $nprice=round($curs*$price,2);
  if($res['thousands_delimiter']=='_') $res['thousands_delimiter']=' ';
$nprice=number_format($nprice,$res['decimal_places'],$res['decimal_symbol'],$res['thousands_delimiter']);
  $nprice=str_replace('{value}',$nprice,$res['display_template_ru']);
  if($a>1) $razdel.=' / ';
  $disp.=$razdel.'<span class="cena'.$a.'">'.$nprice.'</span>';
  }
  $a++;
  }
  return $disp;
  }
?>
 
Подскажите пожалуйста, что необходимо сделать что б не пропадали все цены кроме выбранной по умолчанию... У меня вроде все поставилось но потом начало выдавать ошибку: Parse error: syntax error, unexpected T_ENDIF in kernel/includes/smarty/compiled/SC/...../ru/%%F7^F7A^F7A558FE%%product_list.html.php on line 42
 
уберите цену из-под класса prdbrief_price и totalPrice
там цены подгружаются ява скриптом и обновляются при изменении доп. характеритик


Здравствуйте!

Делал все по инструкциям и столкнулся с проблемой - сначала появляется цена а потом исчезает.. убрал классы но в результате получил - 0.00 грн. $0.00.

Помогите, пожалуйста, пока я не сошел с ума..
Вы не могли бы мне выслать на почту ваши файлы:
product_brief.html
product_list.html
product_price.html

2broken2@gmail.com

огромнейшее спасибо!
с уважением.
Юрий
 
У меня везде работает нормально кроме блока specialoffers Выводится нулевая цена: 0.00€ / 0.00 грн. Подскажите в какую сторону копать. Спасибо!
 
Разобрался сам. Может кому поможет:
-Открыл файл function.cena.php Сделал var_dump аргумента $params функции function smarty_function оказалось, что productID == NULL.
-Открыл product_list.html, смотрю строчку
Код:
{if $_product.Price}<p class="catalog-price"> [B]{cena pid=`$product_info.productID` curr='3,6'}[/B]</p>{/if}
В этом же файле ProductID выводится переменной $_product.productID, потому я просто заменил переменную в строке выше и все заработало. Возможно у меня такая ситуация из-за модифицированной темы.
 
Назад
Сверху