Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Где проверяется валюта по умолчанию?


Recommended Posts

Здравствуйте. Подскажите пожалуйста куда вставить этот код:

if ($this->language->get('code')=='en')
	{
	$this->currency->set('USD');
	} else if ($this->language->get('code')=='de')
	{
	$this->currency->set('USD');
	} else if ($this->language->get('code')=='pl')
	{
    $this->currency->set('EUR');
	} else if (($this->language->get('code')=='uk') or ($this->language->get('code')=='ru'))
	{
    $this->currency->set('UAH');
	};

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

 

(сейчас работает но нужно обновлять страницу по 2 раза).

 

Спасибо.

Надіслати
Поділитися на інших сайтах


Здравствуйте, Подскажите пожалуйста в каком файле определяется валюта по умолчанию? (Opencart 1.5.5.1.2).

 

Я так понимаю, язык по умолчанию определяется единицей в поле "Значение".

 

Не могу найти в каком файле opencart делает проверку.

Надіслати
Поділитися на інших сайтах


Спасибо. Пробовал как здесь https://opencartforum.com/topic/7752-решено-смена-валюты-один-раз-при-открытии-стран/

if (isset($this->request->get['currency']) && (array_key_exists($this->request->get['currency'], $this->currencies))) {
	 $this->set($this->request->get['currency']);
   } elseif ((isset($this->session->data['currency'])) && (array_key_exists($this->session->data['currency'], $this->currencies))) {
	$this->set($this->session->data['currency']);
   } elseif ((isset($this->request->cookie['currency'])) && (array_key_exists($this->request->cookie['currency'], $this->currencies))) {
	$this->set($this->request->cookie['currency']);
   } else {


if (($this->language->get('code')=='en') or ($this->language->get('code')=='de'))
	{
	$this->set('USD');
	} else if ($this->language->get('code')=='pl')
	{
         $this->set('PLN');
	} else if (($this->language->get('code')=='uk') or ($this->language->get('code')=='ru'))
	{
    $this->set('UAH');
	} else $this->set($this->config->get('config_currency'));
	}
   }
Не реагирует на этот код. Прописал по аналогии для условий что выше, работает, но только после еще одной перезагрузки страницы.  (к примеру открываю url английской версии сайта - остаются грн, перегружаю страницу - только тогда переключаются $).

 

Если вписать вместо 

  	public function format($number, $currency='', $value = '', $format = true) {
  	public function format($number, $currency='USD', $value = '', $format = true) {
то сразу со старта загружаются $, но некуда прикрутить проверку на текущий язык
Надіслати
Поділитися на інших сайтах


Кажется понял, проблема в $this->language->get('code') - оно срабатывает после 2 перезагрузки. Тогда непонятно как получить идентификатор текущего языка магазина без перезагрузки?

Надіслати
Поділитися на інших сайтах


То есть нужно чтобы при переходе на английскую версию (сайт/en) по умолчанию стояла валюта $, на украинскую (сайт/uk/) грн и тд.

Кажется понял, проблема в $this->language->get('code') - оно срабатывает после 2 перезагрузки. Тогда непонятно как получить идентификатор текущего языка магазина без перезагрузки? 

Надіслати
Поділитися на інших сайтах


Ну хоть кто-то сам пытается разобраться, остальным же "разжуй и в рот положи".

 

Вот Вам информация в помощь. 

 

Модель ModelLocalisationCurrency

# Загрузка модели:
$this->load->model('localisation/currency');
# Использование:
$this->model_localisation_currency->function_name($params);
# Функции:
public function getCurrencyByCode($currency) //Получение валюты по коду
public function getCurrencies() //Получение данных всех валют

Модель ModelLocalisationLanguage

# Загрузка модели:
$this->load->model('localisation/language');
# Использование:
$this->model_localisation_language->function_name($params);
# Функции:
public function getLanguage($language_id) //Получение языка
public function getLanguages() //Получение списка всех языков

Библиотека Library/currency

// Currency Валюта
$this->currency->set($currency); // Устанавливает код валюты, который будет использоваться в сессии
$this->currency->format($number, $currency = '', $value = '', $format = TRUE); // "format" валюты 
$this->currency->convert($value, $from, $to); // Конвертирует значение одной валюты в другую
$this->currency->getId(); // Возвращает ID текущей валюты (1, 2, 3, 4)
$this->currency->getCode(); // Возвращает код текущей валюты (USD, EUR, GBP, AUD, etc)
$this->currency->getValue($currency); // Возвращает текущий курс для указанной валюты
$this->currency->has($currency) // Проверяет существует ли указанная валюта
 

Библиотека Library/language

// Language Язык
$this->language->load($filename); // Загрузка языка
$this->language->get($key); // Возвращает значение языковой переменный текущего языка

Настройки config

$this->config->get('config_language');//Получение ID языка установленного в магазине по умолчанию

Инфу брал со своего блога

Надіслати
Поділитися на інших сайтах

Решение нашел, в обход opencart (наверно не самое лучшее, но работает).

 

 

В system/library/currency.php

 

после

} elseif ((isset($this->request->cookie['currency'])) && (array_key_exists($this->request->cookie['currency'], $this->currencies))) {
      		$this->set($this->request->cookie['currency']);

    	} else {

добавил код (получаю текущий урл средствами php и проверяю входит ли туда подстрока папки языка)

  $result = '';
  $default_port = 80;
 

  if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) {

    $result .= 'https://';

    $default_port = 443;
  } else {

    $result .= 'http://';
  }

  $result .= $_SERVER['SERVER_NAME'];
 

  if ($_SERVER['SERVER_PORT'] != $default_port) {

    $result .= ':'.$_SERVER['SERVER_PORT'];
  }

  $result .= $_SERVER['REQUEST_URI'];



			
	        if (strpos($result, '/en/')) 
			{
				$this->set('USD');
			} elseif (strpos($result, '/de/'))
			{
				$this->set('EUR');
			} elseif (strpos($result, '/pl/'))
			{
				$this->set('PLN');
			} else $this->set($this->config->get('config_currency'));

Для нового пользователя загружается валюта в зависимости от языка входа на сайт  

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.