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

Тема в разделе "WebAsyst", создана пользователем nafanyaa, 19 мар 2010.

Модераторы: mdss
  1. nafanyaa

    nafanyaa

    Регистр.:
    23 авг 2006
    Сообщения:
    283
    Симпатии:
    168
    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
    [​IMG]


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

    [​IMG]


    добавив стиль
    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;
    }
    
    я получил вывод разных цен в разном цвете
    [​IMG]

    источник _http://easyweb.org.ua/shop-script/dve-ceny/
     
    shqarok, Bum3r, mdss и 2 другим нравится это.
  2. Dgikar

    Dgikar

    Регистр.:
    9 мар 2008
    Сообщения:
    289
    Симпатии:
    19
    {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′}
     
    vitsag нравится это.
  3. matrix-ukr

    matrix-ukr Создатель

    Регистр.:
    25 фев 2008
    Сообщения:
    19
    Симпатии:
    2
    эту проблему решили?
     
  4. Dgikar

    Dgikar

    Регистр.:
    9 мар 2008
    Сообщения:
    289
    Симпатии:
    19
    уберите цену из-под класса prdbrief_price и totalPrice
    там цены подгружаются ява скриптом и обновляются при изменении доп. характеритик
     
  5. Shaman2

    Shaman2 Постоялец

    Регистр.:
    31 июл 2010
    Сообщения:
    68
    Симпатии:
    2
    т.е. либо изменение доп.характеристик либо две цены?

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

    Shaman2 Постоялец

    Регистр.:
    31 июл 2010
    Сообщения:
    68
    Симпатии:
    2
    изменения в коде если кому будет нужно: данное изменение показывает цены в одну строку через символ " / "

    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;
      }
    ?>
     
  7. taas

    taas Постоялец

    Регистр.:
    18 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Подскажите пожалуйста, что необходимо сделать что б не пропадали все цены кроме выбранной по умолчанию... У меня вроде все поставилось но потом начало выдавать ошибку: Parse error: syntax error, unexpected T_ENDIF in kernel/includes/smarty/compiled/SC/...../ru/%%F7^F7A^F7A558FE%%product_list.html.php on line 42
     
  8. 2broken2

    2broken2 Писатель

    Регистр.:
    31 окт 2010
    Сообщения:
    2
    Симпатии:
    0

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

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

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

    2broken2@gmail.com

    огромнейшее спасибо!
    с уважением.
    Юрий
     
  9. darkpal

    darkpal Создатель

    Регистр.:
    8 авг 2012
    Сообщения:
    29
    Симпатии:
    34
    У меня везде работает нормально кроме блока specialoffers Выводится нулевая цена: 0.00€ / 0.00 грн. Подскажите в какую сторону копать. Спасибо!
     
  10. darkpal

    darkpal Создатель

    Регистр.:
    8 авг 2012
    Сообщения:
    29
    Симпатии:
    34
    Разобрался сам. Может кому поможет:
    -Открыл файл 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, потому я просто заменил переменную в строке выше и все заработало. Возможно у меня такая ситуация из-за модифицированной темы.
     
    Bum3r нравится это.