Две цены в WA Shop-Script

32

Плагин показывает еще одну или еще много цен для каждого продукта в Webasyst Shop-Script

Показывает столько цен, сколько id валют вы ему укажете.

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

Установка плагина:

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


    <?php
    function smarty_function_cena( $params, &amp;$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=’9,7′}
    где pid – это ID продукта, curr – перечень id валют, разделенный запятыми.
  3. в файле product_list.html (это списки продуктов) {cena pid=`$_product.productID` curr=’9,7′}
  4. в файле product_price.html (вывод цены на странице продукта) {cena pid=`$product_info.productID` curr=’9,7′}

Пример использования ts.co.ua

32 Комментариев

  1. DgikarNo Gravatar:

    Здравствуйте
    Подскажите плз, а как выяснить id валют?

  2. DgikarNo Gravatar:

    Сделал все как написано – результата нет :(

  3. DgikarNo Gravatar:

    пробую на localhoste

  4. DgikarNo Gravatar:

    На сервере – все работает.
    ОГРОМНОЕ СПАСИБО :)

  5. DgikarNo Gravatar:

    Поспешил я… :(
    Выдает 2-е цены на главной, но… Выдает так: 120 грн. $0.00, хотя, курс выставлен (правда, убран выпадающий список выбора валют)

    На странице (расширенного) описания продукта – вообще только одна цена – в грн.

    Ну в списке товаров, когда страница начинает грузится – подгружаются 2-е цены – грн. и $, а когда, страница загрузится, то, выдает это – http://img56.imageshack.us/i/productbrief.gif/

    Артем, помогите «добить» до конца плз

  6. DgikarNo Gravatar:

    В общем, перепробовал и так и так – у меня не работает :(

    • vkontakte.ru АртемNo Gravatar:

      перемнные (такие как $product_info.productID) пишутся не в одинарных кавычках ‘ а внутри знаков « (не знаю как они называются)
      на клавиатуре вместе с буквой Ё :) ))

  7. vkontakte.ru АртемNo Gravatar:

    парсер немного съел комментарий – но смысл понятен

  8. DgikarNo Gravatar:

    Спасибо за отличную помощь…

    В место того, чтобы чем-то помочь/объяснить/подсказать, проще всего взять и удалить мои комментарии и, поставить мои вопросы в игнор…

    Молодец – так держать…

    • vkontakte.ru АртемNo Gravatar:

      у тебя все в пордке? а кому я ответил если не тебе
      ты не правильно переменные прописал. и еще и хамишь у меня в блоге.

      больше ответов тебе от меня не будет – всего доброго

      • DgikarNo Gravatar:

        Я абсолютно не хотел тебе хамить – у меня, кроме моего «спасибо», и твоего ответа про мое «хамство», больше ничего нет. Как тогда мне воспринимать?

  9. vkontakte.ru АртемNo Gravatar:

    надо так

    {cena pid=`$product_info.productID` curr=’9,7′}

    а у тебя так

    {cena pid='$product_info.productID' curr=’9,7′}
    • DgikarNo Gravatar:

      Ага, вот де собака порылась… Вся проблема в кавычках…

      СПАСИБО!!!! и сорри за непонятку – реально всех комментов нет…

      Можно сказать, что заработало, но, есть 2-а вопроса:
      1) когда подгружается страница, то валюты отображаются так, как и должны, но, как только страница загрузилась, все валюты, кроме первой!, исчезают… Из-за чего такое может быть?

      2) не пойму, в какое именно место, в product_price.html нужно прописать {cena pid=`$product_info.productID` curr=’9,6,7′}…?
      Тыкал уже, куда только можно… Безрезультатно… :(

  10. vkontakte.ru АртемNo Gravatar:

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

    по второму пункту не могу ничего подсказать

  11. vkontakte.ru АртемNo Gravatar:

    пожалуйста :)

  12. LucaSNo Gravatar:

    Для меня удобно вести учет товара в $, соответственно базовая валюта та же…сейчас у товара 2 цены в у.е и грн.
    При оформлении заказа, клиент видит только долларовую цену – это весьма не удобно….стоимость доставки тоже в у.е.

    Как это подправить?

    - можно ли вслед за ценой в у.е. поставить результат формулы типа: (цена в грн.)= (цена в $) * (курс)

  13. LucaSNo Gravatar:

    или базовую поставить в у.е. а в витрине по умолчанию грн. ?

  14. DgikarNo Gravatar:

    Артем, Вы можете подсказать, как правильно реализовать, несколько цен (Ваш вариант полностью работает – спасибо) и, если нет цены у товара, т. е., цена = 0, то, выводилась надпись: Уточняйте у менеджера.

    Есть вариант, который работает на «чистом WA»:
    В /published/SC/html/scripts/templates/frontend/product_detailed.tpl.html заменить
    {if $product_info.Price <= 0}
    n/a
    {else}
    на
    {if $product_info.Price <= 0}
    Уточняйте цену у менеджера
    {else}

    Но, когда на сайте используется Ваш вариант (несколько цен), то, вариант с "Уточняйте цену у менеджера" не работает…

    • vkontakte.ru АртемNo Gravatar:

      после строки
      $price=$res['Price'];
      вставьте
      if($price==0)
      return translate(‘fraza’);

      а в админ части добавьте строку локализации с id «fraza»

      • DgikarNo Gravatar:

        if($price==0)
        return translate(‘txtNotPrice’);
        вставлять нужно в function.cena.php в папке /kernel/includes/smarty/plugins ?
        Если да, то не сработало :(
        txtNotPrice – это из локализации, вместо Вашей ‘fraza’

  15. DgikarNo Gravatar:

    Вот мой код файла function.cena.php в папке /kernel/includes/smarty/plugins
    <?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'];
    if($price==0)
    return translate('txtNotPrice');
    }
    $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.='’.$nprice.»;
    }
    $a++;
    }
    return $disp;
    }
    ?>

  16. НиколайNo Gravatar:

    Подскажите, а как вывести 2 цены в одну строку, через разделитель » / » ?

    • vkontakte.ru АртемNo Gravatar:

      строчку

      $disp.='<div class="cena'.$a.'">'.$nprice.'</div>';

      можно заменить ее на

      $disp.='<span class="cena'.$a.'">'.$nprice.'</span>';

      тогда цены будут в одну строчку. а разделители уже добавляйте куда нравится

Оставить комментарий


WebComplIT banner
© 2008-2010 EasyWeb.org.ua. All rights reserved.