Отображение цены товара на сайте в другой валюте — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
Стоит задача: в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях.
+
'''Стоит задача:''' в административной части сайта добавлять товары с ценой в долларах (USD) или евро (EUR), а на сайте отображать цены в рублях.
Версия системы должна быть не ниже 2.8.4.
+
 
Для этого, в конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = "USD",
+
Для реализации данной задачи, версия системы должна быть не ниже 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 = "USD";
+
    // Валюта в которой необходимо отображать цены на сайте.
 +
     $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.