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

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.0.3.1 были по-умолчанию фунты и никак на рубли не хотел переходить. Вылечилось сначала отключением ненужных языков, потом в настройках магазина переключением на нужный и затем удалением остальных. Не забудь поставить 1.00000000 тому, что нужен тебе.
 
Какая версия ОС? У меня в 2.0.3.1 были по-умолчанию фунты и никак на рубли не хотел переходить. Вылечилось сначала отключением ненужных языков, потом в настройках магазина переключением на нужный и затем удалением остальных. Не забудь поставить 1.00000000 тому, что нужен тебе.
1.0 стоит на скрытой валюте. Если ставить на второй, то будет неудобно считать курс. Язык только один изначально.
Как по мне проблема в коде, что видно из того как я ее решил.
 
в system/library/currency.php находишь эти строчки
Скрытое содержимое доступно для зарегистрированных пользователей!


вместо UAH поставь валюту ,которая должна быть видна на сайте
в админке валюту которая на сайте включи , а основную, в которой цены залиты - выключи.
 
Удали всю валюту кроме UAH ее поставь по умолчанию
 
"Не скрытых валют" больше, чем одна?

Если одна - жестко задать в конце библиотеки
Код:
$this->set('UAH');

Если больше - я это решал добавлением дополнительной настройки, скажем "config_regional_currency", и сменой на нее. Таким образом логика опенкарта не страдает - он для внутренних рассчетов и пересчетов использует валюту "config_currency".

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

ну или что там у вас спрятано) А так да, валюта будет устанавливаться именно та, которая стоит "по умолчанию"
 
Назад
Сверху