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

[Решено] Как подменить валюту "по умолчанию" на сайте не меняя его в админке?


Recommended Posts

К примеру цены "по умолчанию" стоят в евро, стоит курс где за 1 евро дают ***. Как при первом заходе на сайт отображать цены не в евро? При этом посетителю нужно оставить возможность переключится на евро в дальнейшей работе. 

Opencacart 2.0

 

 

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


get['currency'] - что это за 'currency' не могу понять... Мы вот тут проверяем прошел ли запрос get-ом на name='currency'? Подскажите, пожалуйста! Или просто поясните, что делает кусок вашего кода в конструкторе.

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


да, $this->request->get это аналог $_GET

Поправьте меня, если я неправ. Мы проверяем был ли запрос на 'currency' и если он был то мы кидаем по всюду его значение. Как я понимаю там наш код валюты фигурирует(EUR,RUB). Тоесть он уже там. И если мы первый раз заходим на сайт, то в currency EUR будет? 

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


да

$this->config->get('config_currency')

валюта по умолчанию из настроек

Супер! То, что доктор прописал! 

Вот, что получилось:

		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 {
			$this->set('UAH');
		}
	}

Такой быдлокод, как ни странно, принес результат как и требовалось. Может можно что-то лучше придумать?

nikifalex, большое спасибо!  

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


  • 1 year later...

Подскажите как такое же сделать для ocStore 2.3.0.2.2 ?

Там я так понимаю путь к этой логике лежит в /catalog/controller/startup/startup.php

 

$code = '';
        
        $this->load->model('localisation/currency');
        
        $currencies = $this->model_localisation_currency->getCurrencies();
        
        if (isset($this->session->data['currency'])) {
            $code = $this->session->data['currency'];
        }
        
        if (isset($this->request->cookie['currency']) && !array_key_exists($code, $currencies)) {
            $code = $this->request->cookie['currency'];
        }
        
        if (!array_key_exists($code, $currencies)) {
            $code = $this->config->get('config_currency');
        }
        
        if (!isset($this->session->data['currency']) || $this->session->data['currency'] != $code) {
             $this->session->data['currency'] = $code;
        }
        
        if (!isset($this->request->cookie['currency']) || $this->request->cookie['currency'] != $code) {
            setcookie('currency', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
        }        
        
        $this->registry->set('currency', new Cart\Currency($this->registry));

 

 

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


25 минут назад, nikifalex сказал:

@System256 ну а что не получается? или просто страшно?

Пробовал заменить

if (!array_key_exists($code, $currencies)) {
            $code = $this->config->get('config_currency');
        }

на

if (!array_key_exists($code, $currencies)) {
            $code = $this->set('RUB');
        }

Эффекта нет, кэш чистил.

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


17 часов назад, nikifalex сказал:

а какой вы хотите эффект? Куки еще надо почистить как минимум.

Почистил куки, после захода на сайт в currency опять поступает USD.

 

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


  • 2 weeks later...

Задача решена. Возможно кому-то пригодится.

В /catalog/controller/startup/startup.php меняем

$code = ''; //Строка 142

На

$code = 'RUB'; // Строка 142

И

if (!array_key_exists($code, $currencies)) {
	$code = $this->config->get('config_currency');
}

На

if (!array_key_exists($code, $currencies)) {
	$code = $this->set('RUB');
}

 

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


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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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