Отображение цены товара на сайте в другой валюте — различия между версиями
VITL' (обсуждение | вклад) |
VITL' (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях. | + | '''Стоит задача:''' в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях. |
− | + | ||
− | + | Для реализации данной задачи, версия системы должна быть не ниже 2.8.4. | |
+ | В конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "", | ||
а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here | а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here | ||
Строка 7: | Строка 8: | ||
public function setcurrency(){ | public function setcurrency(){ | ||
$inst = cmsController::getInstance()->getModule("emarket"); | $inst = cmsController::getInstance()->getModule("emarket"); | ||
− | $currencyCode = " | + | // Валюта в которой необходимо отображать цены на сайте. |
+ | $currencyCode = "RUR"; | ||
$selectedCurrency = $inst->getCurrency($currencyCode); | $selectedCurrency = $inst->getCurrency($currencyCode); | ||
Строка 44: | Строка 46: | ||
* \tpls\emarket\ | * \tpls\emarket\ | ||
* \tpls\emarket\currency\ | * \tpls\emarket\currency\ | ||
+ | |||
+ | |||
+ | Для XSLT-Шаблонизатора, необходимо в основном xsl-шаблоне сайта, в котором прописан тег '''head''' и '''body''', | ||
+ | необходимо прописать вызов: | ||
+ | <source lang="xml"> | ||
+ | <xsl:value-of select="document('udata://custom/setcurrency')" /> | ||
+ | </source> | ||
+ | |||
+ | в теге head. |
Версия 15:14, 16 августа 2011
Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях.
Для реализации данной задачи, версия системы должна быть не ниже 2.8.4. В конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "", а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле ~classes/modules/custom.php, после слов: //TODO: Write your own macroses here
public function setcurrency(){
$inst = cmsController::getInstance()->getModule("emarket");
// Валюта в которой необходимо отображать цены на сайте.
$currencyCode = "RUR";
$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\
Для XSLT-Шаблонизатора, необходимо в основном xsl-шаблоне сайта, в котором прописан тег head и body,
необходимо прописать вызов:
<xsl:value-of select="document('udata://custom/setcurrency')" />
в теге head.