Автор Тема: Как отобразить две цены в долларах и рублях?  (Прочитано 4678 раз)

21 Ноябрь 2012, 01:55:52
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте! Подскажите пожалуйста, как сделать что бы в карточке товара, а также на главной и категории, отображалось сразу две цены (в двух валютах)? Я знаю что можно выбирать в какой валюте отображать цены, но очень нужно что бы изначально показывалось две цены. Буду очень благодарен за помощь!
21 Ноябрь 2012, 10:17:25
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для этого нужно установить новый модуль, в стандартной сборке можно показывать разные валюты только при смене языка.
Модуль Price depending on the currency.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Ноябрь 2012, 10:28:19
Ответ #2
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Цитата: mAgency
Модуль Price depending on the currency.
Этот модуль для prestashop версии 1.3 Price per currency
Смотрите модули в разделе Prices & Promotion
21 Ноябрь 2012, 13:28:14
Ответ #3
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответы! У меня версия 1.5.2.0
Уже после всей работы над магазином, настройки, дизайна и т.д. появилась необходимость что бы везде стояло две цены.
Значит модули мне эти не подойдут для моей версии? Бесплатного решения тоже не найти?
Извините если я сейчас скажу глупость, у меня такая мысль появилась. Движок выводит цену, т.е. берет ее из базы, создает переменную, или каким другим способом. Может возможно просто создавать значение и умножать его по курсу? Допустим цены все в базе в долларах, мы берем это значение умножает его на 31 и получается в рублях. И выводим рядом с той ценой? Может это как то возможно реализовать?
21 Ноябрь 2012, 14:10:58
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Можно использовать функцию convertPrice
/**
* Return price converted
*
* @param float $price Product price
* @param object $currency Current currency object
* @param boolean $to_currency convert to currency or from currency to default currency
*/
public static function convertPrice($price, $currency = null, $to_currency = true, Context $context = null)
{
   
Cоздание интернет сайтов Webstudio UwK
21 Ноябрь 2012, 14:46:35
Ответ #5
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Виталий, скажите пожалуйста подробнее, как этим кодом воспользоваться?
21 Ноябрь 2012, 17:32:46
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
Можно использовать функцию convertPrice
Это если писать свой модуль и дать возможность выбора валют.
Можно проще, если нет необходимости делать отдельный модуль.
Если у валюты рубль ид 2, то можно всегда выводить цену в валюте ид2 и в валюте, которую выбрал посетитель.
В product.tpl
<!-- prices -->
{if $product->show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}
<p class="price">
{if !$priceDisplay || $priceDisplay == 2}

                 /* добавить */
                {if !$currency->id == 2}
                          {if !$product->reduction_price == 0}
                                      {$product->price-$product->reduction_price}
                          {elseif !$product->reduction_percent == 0}
                                       {$product->price-$product->reduction_percent*$product->price/100}
                          {else}
                                       {$product->price}
                          {/if}
                 {/if}

21 Ноябрь 2012, 22:43:41
Ответ #7
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Скажите, куда именно вставлять этот код в файле? Перепробовал много вариантов, либо без изменений либо выдает ошибку и страница не грузится вообще. Если кому не трудно подскажите пожалуйста. Здесь мой файл product.tpl
21 Ноябрь 2012, 23:32:29
Ответ #8
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Например, так
{convertPriceWithCurrency price=$product->getPrice(true, $smarty.const.NULL, 2) currency=$currencies.0 convert=true}Или же установите дополнительный модуль.
22 Ноябрь 2012, 01:46:30
Ответ #9
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Например, так
{convertPriceWithCurrency price=$product->getPrice(true, $smarty.const.NULL, 2) currency=$currencies.0 convert=true}Или же установите дополнительный модуль.



Виктор, не могли бы вы мне точнее сказать, куда именно нужно вставить эту строчку? К сожалению мои познания в этом слабые! Помогите пожалуйста подсказкой  :)
22 Ноябрь 2012, 10:59:50
Ответ #10
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Если вы не знаете как работать с шаблонами, классами в prestashop, то лучше используйте готовые модули. Хотите создать свой модуль, но не знаете как,  изучите руководство разработчика Prestashop. Задавайте вопросы на форуме, вам помогут.
Если вам нужно готовое решение, то создайте тему в разделе работа.

Эту строчку вставляете в шаблон там где нужно показывать цену. 
Для конвертации цены в различные валюты используется функция :
convertPriceWithCurrencyЭта функция определена в классе
class ProductCore extends ObjectModel
{
        public static function convertPriceWithCurrency($params, &$smarty)
        {
        return Tools::displayPrice($params['price'], $params['currency'], false);
        }
Передавая в функцию аргументы Цена, Валюта, вы можете выводить цены в рублях, евро, долларах и т.д.
Для использования в шаблоне нужно добавить правила формирования цен - учет налогов, скидки, группы и т.д.
Смотрите как в шаблоне product.tpl реализован показ цены и добавьте еще один вариант с использованием функции convertPriceWithCurrency.
11 Сентябрь 2013, 17:08:11
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Все эти варианты установки 2 - 3 цен на версии PS 1.5.4.1 не работают.
Они просто добавляют цену не конвертируя, пририсовывают другой значок валюты.
Есть какие то еще варианты?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
11 Сентябрь 2013, 18:22:13
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В версии 1.5.4 эта функция не менялась
/**
  * Convert price with currency
  *
  */
public static function convertPriceWithCurrency($params, &$smarty)
{
return Tools::displayPrice($params['price'], $params['currency'], false);
}
все работает.
11 Сентябрь 2013, 18:23:10
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
И в prestashop 1.5.5 тоже не изменилась.