Jump to content
Sign in to follow this  
zeyser

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

Recommended Posts

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

Opencacart 2.0

 

 

Share this post


Link to post
Share on other sites

\system\library\currency.php

		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'));
		}

прибить сюда свою логику

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by nikifalex

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

да

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

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

Share this post


Link to post
Share on other sites

да

$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

Share this post


Link to post
Share on other sites

лучше это сделать еще одну

есть валюта по умолчанию

и добавить типа

валюта типа еще одна.

 

делов на полчаса так то.

 

Искать и делать копипаст по слову config_currency прямо в проекте

Share this post


Link to post
Share on other sites

Не понял. Если не составит труда, напишите более развернуто.

Share this post


Link to post
Share on other sites

тогда не надо.

потом программисту дадите 500, он сделает

Share this post


Link to post
Share on other sites

А если так оставить как есть?

Share this post


Link to post
Share on other sites

оставьте конечно. еще 30 лет проработает, не сломается

Share this post


Link to post
Share on other sites

оставьте конечно. еще 30 лет проработает, не сломается

Благодарю!

Share this post


Link to post
Share on other sites

Подскажите как такое же сделать для 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));

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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');
        }

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
17 часов назад, nikifalex сказал:

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

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

 

Share this post


Link to post
Share on other sites

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

В /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');
}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By ashap
      1 400.00 руб
      Скачать/Купить дополнение


      Автоматическое обновление курса валют
      Модуль позволяет обновлять курс валют с сайтов ЦБ РФ (cbr.ru), НБ Украины (bank.gov.ua), Приват Банк - все 4 варианта курсов ПриватБанк (карточный покупка, карточный продажа, наличный покупка, наличный продажа) (privatbank.ua), НБ РБ (nbrb.by), Европейский ЦБ (ecb.int). Использует стандартный функционал обновления раз в сутки при заходе на главную админ панели, ручного обновления из списка валют, а также имеет уникальную функцию обновления по расписанию через cron
       
      Модуль умеет увеличивать полученный курс на заданный процент.
       
      * Не заменяет системные файлы
      * Не требует vqmod
      * Устраняет ошибку в админ панели Warning: Division by zero in ...../admin/model/localisation/currency.php
       
      Смотрите также другие модули по ссылке
       
       
      Добавил ashap Добавлено 04.06.2018 Категория Модули Системные требования Для работы автоматического обновления по расписанию на хостинге (сервере) необходим cron с поддержкой curl или wget Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена  
    • By mitandaster
      Добрый день
      ОС 3.0
      60% товара у меня в рублях от поставщиков.
      но 40% товаров привязаны к доллару. И приходится следить (и часто пропускаю) за правильным перерасчетом цен.
      Как можно в карточке товара выбирать нужную валюту? рубли или доллары.
      Сейчас в карточке товара есть графа для ввода цены и все. валюта по умолчанию руб
      Я сделала вторую валюту - дол. Но, ожидаемо, в карточке товара не появился выбор валюты.
      Подскажите
      спасибо!
    • By louise170
      1 350.00 руб
      Скачать/Купить дополнение


      Валюта плюс
      Модуль дает возможность указывать в товарах базовую цену в разных валютах - это бывает необходимо, если вы торгуете товарами иностранных производителей и соотв. ваши цены сильно зависят от колебания курсов валют. На вкладке Данные после поля "Цена" появляются два поля Базовая цена и Базовая валюта туда можно прописать цену в нужной вам валюте. Аналогично для опций, акций и скидок тоже добавляются поля для Базовой цены. Далее все цены из полей базовой цены переводятся по курсу в основную валюту магазина в стандартные поля цен.

      Возможности:
      Если в настройках модуля стоит автоматическое обновление валют, модуль сам при заходе в админку автоматически обновляет курсы валют раз в сутки с сайта выбранного вами (по умолчанию ЦБ РФ) и меняет все цены на товары, у которых базовая цена больше нуля. Можно не использовать автообновление, а задавать курсы руками и обновлять цены товаров по нажатию кнопки "Обновить цены товаров" на странице модуля. Настройка запуска обновления курсов и цен по крону. Для каждой из валют можно задать процент коррекции курса. Для разных производителей можно задать разные курсы валют. Любой валюте можно задать курс руками и поставить галочку, чтобы при обновлении этот курс не менялся. Базовую валюту в скобках на страницах сайта можно отображать или не отображать, для этого есть чекбоксы в настройках модуля, они появляются в настройках, если вы используете currency_plus_frontend.xml Все цены из базовых по курсу переводятся в стандартные поля для цен, поэтому далее с товарами могут работать любые другие модули в обычном режиме, например, фильтровать или сортировать товары по цене. Различные виды округления получающихся цен. Получение курсов валют возможно с одного из шести сайтов разных банков.
        Модуль Валюта плюс совместим с модулем Управление ценами.
       
      Модуль Валюта плюс совместим с модулем Option To Product.
       
      Версия модуля Валюта плюс для Опенкарт 1.5.x совместим с модулем Связанные опции.
       
      Также модуль может совместно работать с модулями экспорта-импорта товаров:
      Автоматическая обработка прайс-листов CSV Price Pro import/export (нужно на вкладке Макросы создать поля для базовой цены и валюты)
        Версия модуля Валюта плюс для Опенкарт 1.5.x совместима с модулем Batch Editor 0.2.3
       
      Никакие системные файлы не затираются, модуль работает на vqmod/ocmod.
       
      Модуль тестировался на:
      Opencart
      1.5.1.3 1.5.2.1 1.5.3.1 1.5.4.1 1.5.5.1.1 1.5.6 1.5.6.4 2.0.1.1 2.0.3.1 2.1.0.1 2.1.0.2 2.2.0.0 2.3.0.2 3.0.2.0 MaxyStore
      1.5.4.1 1.5.5.1 2.0.1.1
      Поддерживаемые языки:
      русский украинский английский
      Пример работы модуля:
      http://ocstore1541.opencartplus.ru/
      http://opencart2.opencartplus.ru/
      https://ocstore2302.opencartplus.ru/
      http://opencart3020.opencartplus.ru/

      Демо админки:
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      https://ocstore2302.opencartplus.ru/admin/
      http://opencart3020.opencartplus.ru/admin/
      доступ
      demo / demo

      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.

      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.

      Требования к серверу
      На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 10.0). Чтобы проверить его наличие скачайте файл:
      http://opencartplus.ru/download/test_ioc_php.zip
      разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_домен/test_ioc_php.php Для корректной работе на Опенкарте 1.5.х на вашем сайте должен быть установлен VQMOD не ниже версии 2.4.1, если у вас стоит версия ниже - нужно обновиться отсюда: https://github.com/vqmod/vqmod/releases Если вы собираетесь получать курсы валют автоматически с выбранного сайта то необходимо, чтобы на вашем сервере был включен curl.
      FAQ
      FAQ по модулю "Валюта плюс" FAQ общие вопросы по Опенкарту  
       
      Добавил louise170 Добавлено 05.02.2014 Категория Цены, скидки, акции, подарки Системные требования PHP 5.6+, IonCube Loader версии 10.0+, CURL, для Опенкарта 1.5.х - VQMOD не ниже версии 2.4.1 Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Да Старая цена 0  
    • By zcell
      750.00 руб
      Скачать/Купить дополнение


      Мультивалютный магазин с автоконвертацией по курсу ЦБ РФ и Yahoo (автообновление и фиксированные курсы валют)
      Цены по курсу ЦБ РФ и Yahoo | Разные валюты у товаров | Фиксированные курсы валют |
      100% совместимость | Пакетное назначение валюты |  Легкая установка
       
      Новая версия от 21 ноября!

      ВОЗМОЖНОСТИ:
      - Актуальные цены по курсу ЦентроБанка РФ и Yahoo
      - Пакетное редактирование валюты товаров по категории и/или бренду
      - Автоподсчет сконвертированной цены при редактировании цен товара;
      - Разные валюты для опций, скидок, акций и основной цены;
      - Возможность указать разные валюты у товаров;
      - Возможность использовать валюты с фиксированным курсом;
      - Клиенты видят суммы в валюте по умолчанию (рассчитанные по актуальному курсу);
      - Автоматическое обновление курса валют.
       
       
      ПРЕИМУЩЕСТВА:
      - Простая установка;
      - Интеграция в ядре системы, что позволяет получить интеграцию с подавляющим большинством модулей и шаблонов;
      - Не грузит систему, всего один файл.
        
       
      ПОДДЕРЖКА:
      В случае, если модуль не заработает в вашем магазине (1% вероятность), могу оказать бесплатную помощь по интеграции, но не более 30 минут (в 99% случаев этого времени достаточно).
      Сообщения без адреса сайта будут игнорируются. Для помощи по интеграции потребуется доступ по FTP и доступ в административную панель.
       
         
       
       
      УСТАНОВКА:
      0. Сделать БЕКАП базы данных!
      Для Opencart 1.5.x:
      1. Закачать через FTP файл модуля в папку vqmod/xml
      Для Opencart 2.1.x, 2.2.x, 2.3.x,3.x.x:
      1. Воспользоваться стандартным установщиком дополнений Opencart.
      Для всех версий:
      2. Открыть раздел Система - Локализация - Валюты
       
      КАК ПОЛЬЗОВАТЬСЯ:
      - После установки, зайдите в раздел (Система - Локализация - Валюты) - модуль автоматически проверит и создаст необходимые для функционирования поля
      - Зайдите в Система - Настройка -> Локализация и выберите подходящий метод обновления валют
      - Добавьте валюты (Система - Локализация - Валюты), если отсутствую необходимые валюты. Необходимо указать правильно код валюты - большими буквами, например RUB, USD, EUR
      - Выберите в каждом товаре, у которого валюта отлична от основной, нужную валюты (селектор находится справа от поля цены)
      - Если вам нужна фиксированная валюта (например 1 уе = 65 руб), то создаете новую валюту, пишите вымышленный код валюты, например FIX, FIC, FIE, чтобы система обновления не меняла курс автоматом, в поле значения курса пишите значение курса в рублях, далее выбираете эту валюту в нужных товарах.
        
      КАК РАБОТАЕТ МОДУЛЬ (для программистов и интеграторов):
      - Модуль создает дополнительные поля price_value и currency в таблице product, product_special, product_discount и product_option_value.
      - В поле price вышеуказанных таблиц хранится вычисленное значение цены по указанному значение price_value для валюты currency.
      - При обновлении курса валют во всех таблицах запускается перерасчет цены согласно новому курсу
      - При каждом сохранении товара поля для данного товара пересчитываются по текущему курсу
      - Фронт никак не модифицируется модулем, в связи с чем получаем 100% совместимость
       
      Административная панель: 
      - Цены товаров могут задавать в разных валютах (например указываете 10 USD в админке - на фронте будет цена по актуальному курсу доллара в рублях);
      - Валюты задаются как индивидуально для каждого товара, так и работает пакетное назначение, например в BatchEditor;
      - В заказах фиксируется сумма в рублях, по курсу соответствующему моменту оформления заказа (то есть цена товаров в заказе будет фиксирована).
       
      Фронт: 
      - Все цены автоматически показываются в основной валюте сайта;
      - Работает конвертация цены Опций, Скидки за количество;
      - Работает конвертация в мини-корзине, корзине и оформлении заказа;
      - Также корректно работает переключение между валютами в интернет магазине с пересчетом по актуальным курсам.
       
      Обновление курса валют:
      - Происходит при открытии главной страницы административной панели;
      - Источником курса валют является ЦБ РФ и Yahoo (если не удалось получить данные у ЦБ РФ, получит у Yahoo).
       
      Валюты:
      1. Стандартные валюты
      Любые валюты, которые поддерживаются ЦБ РФ или Yahoo
      2. Фиксированные курсы валют
      Например, если поставщик зафиксировал курс на 75 руб.
      Можно будет завести валюту и указать ей нужный курс, при обновлении курс будет сохраняться.
       

       

       


       
      Добавил zcell Добавлено 28.12.2015 Категория Цены, скидки, акции, подарки Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена 900  
    • By vitaliik1999
      Изменение языка и всесто с этим валюты для ocStore 3/0/2
      нужно чтобы это все роботало без проблем и как настроить правильно валюты в админ. чтобы конверсия роботая верно или чтобы для каждой валюты можно было задавать значения.
      нужен совет или готовый вариант
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.