Помощь Цены отображаются в скрытой валюте

Тема в разделе "Opencart", создана пользователем Knoxville, 28 авг 2015.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. Knoxville

    Knoxville Создатель

    Регистр.:
    14 авг 2015
    Сообщения:
    30
    Симпатии:
    8
    Столкнулся с данной проблемой:
    Цены отображаются в скрытой валюте, если она установлена по-умолчанию.

    Опыта работы с php нет.
    Набросал решение:

    Код:
        public function __construct($registry) {
            $this->config = $registry->get('config');
            $this->db = $registry->get('db');
            $this->language = $registry->get('language');
            $this->request = $registry->get('request');
            $this->session = $registry->get('session');
    
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency");
    
            foreach ($query->rows as $result) {
                $this->currencies[$result['code']] = array(
                    'currency_id'   => $result['currency_id'],
                    'title'         => $result['title'],
                    'symbol_left'   => $result['symbol_left'],
                    'symbol_right'  => $result['symbol_right'],
                    'decimal_place' => $result['decimal_place'],
                    'value'         => $result['value']
                );
            }
    
            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'));
            }
        }
    Код:
        public function __construct($registry) {
            $this->config = $registry->get('config');
            $this->db = $registry->get('db');
            $this->language = $registry->get('language');
            $this->request = $registry->get('request');
            $this->session = $registry->get('session');
    
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency c where c.status = 1");
    
            foreach ($query->rows as $result) {
                $this->currencies[$result['code']] = array(
                    'currency_id'   => $result['currency_id'],
                    'title'         => $result['title'],
                    'symbol_left'   => $result['symbol_left'],
                    'symbol_right'  => $result['symbol_right'],
                    'decimal_place' => $result['decimal_place'],
                    'value'         => $result['value']
                );
            }
           
            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']);
            } elseif ((empty($this->currencies)) || (array_key_exists($this->config->get('config_currency'), $this->currencies))) {
                $this->set($this->config->get('config_currency'));
            } else {
                reset($this->currencies);
                $this->set(key($this->currencies));
            }
        }
    

    Может есть решения по гениальней?
     
  2. Mr.TeRay

    Mr.TeRay Постоялец

    Регистр.:
    28 мар 2010
    Сообщения:
    85
    Симпатии:
    5
    по моему дело в кеше, если я тебя правильно понял, то ты был на валюте одной, а потом в админке ее удалил или отключил и она осталась?
    включи ее, потом установи нужную и скрой снова..
    хотя наверное я дурак и тебя не так понял
     
  3. Knoxville

    Knoxville Создатель

    Регистр.:
    14 авг 2015
    Сообщения:
    30
    Симпатии:
    8
    Проблемы возникают у новых посетителей(в основном ИЕ и Мозила). И сменить валюту они не могут.
     
  4. KoT_777ru

    KoT_777ru Создатель

    Регистр.:
    14 авг 2015
    Сообщения:
    41
    Симпатии:
    2
    Какая версия ОС? У меня в 2.0.3.1 были по-умолчанию фунты и никак на рубли не хотел переходить. Вылечилось сначала отключением ненужных языков, потом в настройках магазина переключением на нужный и затем удалением остальных. Не забудь поставить 1.00000000 тому, что нужен тебе.
     
  5. Knoxville

    Knoxville Создатель

    Регистр.:
    14 авг 2015
    Сообщения:
    30
    Симпатии:
    8
    1.0 стоит на скрытой валюте. Если ставить на второй, то будет неудобно считать курс. Язык только один изначально.
    Как по мне проблема в коде, что видно из того как я ее решил.
     
  6. shutle

    shutle

    Регистр.:
    9 авг 2013
    Сообщения:
    176
    Симпатии:
    63
    в system/library/currency.php находишь эти строчки


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

    d0ber Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Удали всю валюту кроме UAH ее поставь по умолчанию
     
  8. nethare

    nethare Постоялец

    Регистр.:
    27 окт 2012
    Сообщения:
    104
    Симпатии:
    30
    "Не скрытых валют" больше, чем одна?

    Если одна - жестко задать в конце библиотеки
    Код:
    $this->set('UAH');
    
    Если больше - я это решал добавлением дополнительной настройки, скажем "config_regional_currency", и сменой на нее. Таким образом логика опенкарта не страдает - он для внутренних рассчетов и пересчетов использует валюту "config_currency".

    Как вариант, конечно, если прятать фиксированную валюту, можно еще и
    Код:
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency c where not (c.code = 'EUR')");
    
    ну или что там у вас спрятано) А так да, валюта будет устанавливаться именно та, которая стоит "по умолчанию"