Отображение цены товара на сайте в другой валюте — различия между версиями
VITL' (обсуждение | вклад) |
VITL' (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях. | Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях. | ||
+ | Версия системы должна быть не ниже 2.8.4. | ||
Для этого, в конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "USD", | Для этого, в конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "USD", | ||
а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here | а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here | ||
Строка 5: | Строка 6: | ||
<source lang="php"> | <source lang="php"> | ||
public function setcurrency(){ | public function setcurrency(){ | ||
− | $inst = cmsController::getInstance()->getModule("emarket"); | + | $inst = cmsController::getInstance()->getModule("emarket"); |
− | $currencyCode = " | + | $currencyCode = "USD"; |
− | $selectedCurrency = $inst->getCurrency($currencyCode); | + | |
− | if($selectedCurrency) { | + | $selectedCurrency = $inst->getCurrency($currencyCode); |
− | $defaultCurrency = $inst->getDefaultCurrency(); | + | |
− | $customer = customer::get(); | + | if($currencyCode && $selectedCurrency) { |
− | if($customer->preffered_currency != $selectedCurrency->id) { | + | $defaultCurrency = $inst->getDefaultCurrency(); |
− | if($selectedCurrency->id == $defaultCurrency->id) { | + | |
− | $customer->preffered_currency = null; | + | if(permissionsCollection::getInstance()->isAuth()){ |
− | } else { | + | $customer = customer::get(); |
− | $customer->preffered_currency = $selectedCurrency->id; | + | if($customer->preffered_currency != $selectedCurrency->id) { |
− | } | + | if($selectedCurrency->id == $defaultCurrency->id) { |
− | $customer->commit(); | + | $customer->preffered_currency = null; |
− | } | + | } else { |
− | } | + | $customer->preffered_currency = $selectedCurrency->id; |
+ | } | ||
+ | $customer->commit(); | ||
+ | } | ||
+ | } else { | ||
+ | setcookie('customer_currency', $selectedCurrency->id, (time() + 2678400), '/'); | ||
+ | } | ||
+ | } | ||
} | } | ||
</source> | </source> |
Версия 07:18, 22 июля 2011
Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях. Версия системы должна быть не ниже 2.8.4. Для этого, в конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "USD", а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here
public function setcurrency(){
$inst = cmsController::getInstance()->getModule("emarket");
$currencyCode = "USD";
$selectedCurrency = $inst->getCurrency($currencyCode);
if($currencyCode && $selectedCurrency) {
$defaultCurrency = $inst->getDefaultCurrency();
if(permissionsCollection::getInstance()->isAuth()){
$customer = customer::get();
if($customer->preffered_currency != $selectedCurrency->id) {
if($selectedCurrency->id == $defaultCurrency->id) {
$customer->preffered_currency = null;
} else {
$customer->preffered_currency = $selectedCurrency->id;
}
$customer->commit();
}
} else {
setcookie('customer_currency', $selectedCurrency->id, (time() + 2678400), '/');
}
}
}
Вызов макроса необходимо прописать в шаблонах страниц, допустим в любом месте тэга <body>. Для tpl шаблонов вызов следующий:
%custom setcurrency()%
В результате, при использовании макроса:
%emarket price(%id%, 'short')%
цена будет указана в валюте, выбор которой был сделан в кастомном методе setcurrency(), 'short' - два шаблона, в папках:
- \tpls\emarket\
- \tpls\emarket\currency\