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

[Решено] Смена валюты один раз при открытии страницы магазина покупателем


JohnnyVega

Recommended Posts

Вопрос в следующем.

Есть цены на товар. Забиты для удобства в долларах. Доллар является валютой по-умолчанию. Как сделать так, чтобы при первом открытии странички магазина или товара, валюта автоматом менялась на рубли, а затем уже как покупателю удобно, такую валюту он и выбирает?

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

И есть ли возможность в ocstore делать одноразовые действия? Т.е., открыли первый раз страницу магазина, сделали какие-то действия, затем покупатель ходит по магазину, это действие уже не повторяется... Что-то типа разовой инициализации

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

Ну как бы не очень. Тогда цены у товаров придётся перебивать на рубли... Желательно именно такой вариант как в первом сообщении реализовать. Я в Index.php изменения вносил (переключение на рубли), но тогда на рубли постоянно переключается (при каждой загрузке страницы), т.е. нет потом возможности переключиться на другую валюту (точнее, на другую валюту переключается и тутже снова на рубли)

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

Спасибо, помогло. Держите плюсик.

PS А я что-то не догадался в конструкторе Currency поискать

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

Точнее даже так должно быть, чтобы ошибку не словить, если нет нужной валюты

if ($this->has('RUB')) {
				$this->set('RUB');}		   
				else {
					$this->set($this->config->get('config_currency'));}
  • +1 4
Надіслати
Поділитися на інших сайтах

  • 7 months later...

Точнее даже так должно быть, чтобы ошибку не словить, если нет нужной валюты

if ($this->has('RUB')) {
				$this->set('RUB');}		  
				else {
					$this->set($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($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($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 {
	if ($this->has('RUB')) {
        	 $this->set('RUB'); 
	} else {
        	 $this->set($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 {
	if ($this->has('RUB')) {
			 $this->set('RUB');
	} else {
			 $this->set($this->config->get('config_currency'));
	}
   }
Теперь пишет ошибка сервера.
Надіслати
Поділитися на інших сайтах


Точнее даже так должно быть, чтобы ошибку не словить, если нет нужной валюты

if ($this->has('RUB')) {
				$this->set('RUB');}		  
				else {
					$this->set($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($this->config->get('config_currency'));
	 }
на Ваш вариант и в интеркассе стали рубли, только сумма немного больше указанной ребует к оплате (если цена 3040 то, у qiwi, например, 3821.61 - процент её наверное).
Надіслати
Поділитися на інших сайтах


на Ваш вариант и в интеркассе стали рубли, только сумма немного больше указанной ребует к оплате (если цена 3040 то, у qiwi, например, 3821.61 - процент её наверное).

Нет, это не из-за моего куска кода. В моём куске кода просто проверяется, есть ли в валютах "рубль". Если есть, то он ставится при инициализации магазина (первом открытии страницы), если валюты "рубль" нет - то ставится валюта по-умолчанию.

PS Мне когда-то такое было нужно. Цены на товар вбивались в долларах (доллар был валютой по-умолчанию), а отображались на сайте при первом открытии рубли

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

Нет, это не из-за моего куска кода. В моём куске кода просто проверяется, есть ли в валютах "рубль". Если есть, то он ставится при инициализации магазина (первом открытии страницы), если валюты "рубль" нет - то ставится валюта по-умолчанию.

PS Мне когда-то такое было нужно. Цены на товар вбивались в долларах (доллар был валютой по-умолчанию), а отображались на сайте при первом открытии рубли

Но всё равно спасибо) Помогло.
Надіслати
Поділитися на інших сайтах


Нет, это не из-за моего куска кода. В моём куске кода просто проверяется, есть ли в валютах "рубль". Если есть, то он ставится при инициализации магазина (первом открытии страницы), если валюты "рубль" нет - то ставится валюта по-умолчанию.

PS Мне когда-то такое было нужно. Цены на товар вбивались в долларах (доллар был валютой по-умолчанию), а отображались на сайте при первом открытии рубли

Поправочка, заработало на версии 1.5.3.1 с шаблоном версии 1.5.1.3 (http://www.planetaweb.com.ua/obzorcns/prochee/7705-ustore-premium-theme-updated-for-opencart-1521.html)

А на другом (версия 1.5.3.1 и шаблон - копия дефолтного) - нет.

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


  • 4 weeks later...

Поправочка, заработало на версии 1.5.3.1 с шаблоном версии 1.5.1.3 (http://www.planetawe...ncart-1521.html)

А на другом (версия 1.5.3.1 и шаблон - копия дефолтного) - нет.

Та же самая песня, на шаблоне 1.5.1.3 норм + 3% интеркассы, а на шаблоне 1.5.3.1 не работает или ошибка.
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Здраствуйте, хотел уточнить, получается, что

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($this->config->get('config_currency'));
        }

меняем на

                        if ($this->has('RUB')) {
                               $this->set('RUB');}               
                               else {
                                       $this->set($this->config->get('config_currency'));}

Полностью заменяем да? У меня после смены, на сайте стало отображаться в рублях, но на доллары не дает переключиться. Это не особо кретично, просто хотелось бы знать.

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


  • 6 months later...

В 1.5.4.1 такой код

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->has('RUB')) {
             $this->set('RUB');
    } else {
             $this->set($this->config->get('config_currency'));
    }
}

не сработал, выдает ошибку:

Parse error: syntax error, unexpected T_PUBLIC in /home/45643215/domains/домен.ru/public_html/system/library/currency.php on line 41

 

В 41-ой строке находится:

public function set($currency) {

Кто понимает в чем проблема, помогите пожалуйста решить данный вопрос.

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


  • 9 months later...

<modification>
<id>One start currency default RUB</id>
<version>1.0.0</version>
<vqmver>2.4.0</vqmver>
<author>Vitaly Pashentsev</author>

<file name="system/library/currency.php">
<operation error="skip">
<search position="replace">
<![CDATA[
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($this->config->get('config_currency')); ]]>
</search>
<add>
<![CDATA[
if (isset($this->request->get['currency']) && (array_key_exists($this->request->get['currency'], $this->currencies))) {
if ($this->has('USD')) {$this->set('RUB');} else {$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))) {
if ($this->has('USD')) {$this->set('RUB');} else {$this->set($this->request->cookie['currency']);}
} else {
if ($this->has('USD')) {$this->set('RUB');} else {$this->set($this->config->get('config_currency'));}
}
}
]]>
</add>
</operation>
</file>
</modification>

Если правильно понял то начирикал модуль vqmod

Если в первый раз заход на страницу, тогда ставим рубли

Если удалили сессии на сервере, то ставим рубли

Если в куках не чего не делаем ) значит ранее была выбрана нужная валюта

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


  • 3 months later...
  • 4 months later...

Здравствуйте, на другом моем сайте появилась проблема. При выборе валюты она не меняется на главной. В карточке товара все хорошо. На главной остается та что по умолчанию. Вот посмотрите сами swiss-watches.kiev.ua Подскажите где копать?

 

вот как прописал в currency.php

 

}

if (isset($this->request->get['currency']) && (array_key_exists($this->request->get['currency'], $this->currencies))) {
if ($this->has('USD')) {$this->set('UAH');} else {$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))) {
if ($this->has('USD')) {$this->set('UAH');} else {$this->set($this->request->cookie['currency']);}
} else {
if ($this->has('USD')) {$this->set('UAH');} else {$this->set($this->config->get('config_currency'));}
}

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


  • 2 months later...

есть проблема с переключением

 

вот такой код

 

	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 ($_SERVER['HTTP_HOST']=='thai-voyage.by') {
				$this->set('BYR');}		   
				else {
					$this->set($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('BYR');
    	}

что не так делаю?

пробовал удалять куку в браузере, всё равно при заходе валюта по умолчанию

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

ну вообще замени этот блок.

там же и куки, и сессия, и возможность задать валюту POST`ом...

зачем оставлять возможность выбора?

if (($this->request->server['HTTP_HOST']=='thai-voyage.by') && $this->has('BYR')) {
	$this->set('BYR');
} elseif (($this->request->server['HTTP_HOST']=='thai-voyage.ru') && $this->has('RUB')) {
	$this->set('RUB');
} else {
	$this->set($this->config->get('config_currency'));
}
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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