Приветствую вас, читатели cccp-blog.com!
Сегодня мы продолжаем наше знакомство с бесплатными CMS для создания Интернет-магазина и, в частности, с OpenCart.
В предыдущих статьях я познакомил вас с основами создания сайтов на базе CMS и особенностями данного процесса при использовании упомянутого движка.
Мы продолжаем двигаться по намеченному вектору, и в данной небольшой статье нами будет установлена в OpenCart валюта по умолчанию. Небольшим данный очерк будет потому, что данное действие не является чем-то выдающимся и сложным, чтобы писать о нём труд в формате «Война и мир»
Но, тем не менее, вопрос насущный, часто задаваемый и требующий наглядности. Поэтому, незамедлительно переходим к сути.
На что влияет в OpenСart валюта по умолчанию?
Перед тем, как мы переступим к практическим действиям, хотелось бы рассказать, зачем нужна в OpenCart валюта по умолчанию и что от неё зависит.
Во-первых, думаю, все владельцы магазинов на базе OpenCart знакомы с ситуацией, когда в магазин добавляется новая валюта, а покупатели при переходе в магазин видят цены абсолютно в другой. Без внесения каких-либо корректив в OpenCart валютой по умолчанию является доллар США. Данная ситуация возникает потому, что при добавлении новой валюты она не становится доступной по умолчанию.
При наличии в магазине нескольких денежных единиц в клиентской части магазина доступен элемент выбора валюты, в которой будут отображаться цены. Но его могут не заметить либо покупатель может вообще не знать о его существовании и подумать, что у вас какой-то зарубежный магазин, товары из которого будут очень долго идти и расплачиваться нужно будет указанной по умолчанию валютой.
Редкому клиенту понравится данное положение дел и, скорее всего, он поищет интересующий его товар у ваших конкурентов, что явно не на руку вам, как владельцам магазинов.
Продолжим развивать ложившуюся ситуацию. Допустим, вы добавили в OpenCart новую валюту, к примеру, российский рубль, и цены на товары вы хотите указывать в данных единицах. Кстати, о том, как в OpenCart добавлять рубли написано здесь. Ничего не подозревая, вы просматриваете витрину магазина, а там… мало того, что цена в долларах, так ещё и числовое значение такое, как вы указали в рублях
Мало кого порадует ситуация, когда в вашем магазине футболка будет стоить не предполагаемые 1000 российских рублей, а 1000 долларов США
Поэтому ошарашенным покупателям ничего не останется, как покинуть ваш Интернет-магазин и поискать товар где-то подешевле.
Подводя резюме под вышесказанным, денежная единица по умолчанию влияет на то, какие цены будут видеть покупатели при переходе на сайт вашего магазина.
Если по умолчанию установлен доллар – цены будут в долларах, рубли – в рублях, гривны – в гривнах и т.д.
Думаю, с этим понятно
А поскольку при добавлении новой денежной единицы в OpenCart валютой по умолчанию она не становится, то во избежание возникновения указанных выше забавных ситуаций необходимо уметь самостоятельно делать данное действие. Чем мы сейчас и займёмся.
Валюта по умолчанию в OpenСart: практическая часть
Перед началом самого процесса пару слов о версии движка, которая участвует в данном уроке.
Я использовал версию 2.0.3.1, т.к. на данный момент она является самой последней из русифицированных. Но для владельцев магазинов на предыдущих версиях движка порядок действий и названия пунктов меню ничем отличаться не будут.
При использовании сборок на базе OpenCart некоторые различия в структуре меню и их наименовании могут наблюдаться, но в целом процесс будет идентичен.
Также стоит упомянуть, что перед тем, как делать какую-то денежку дефолтной (по умолчанию), её сначала нужно добавить (если она, конечно, не включена в состав OpenCart или его сборки). Для примера разовьём смоделированную ранее ситуацию, когда вы добавили в магазин российские рубли и хотите сделать их в OpenCart валютой по умолчанию.
Поскольку при установке дефолтной денежной единицы мы будем иметь дело с настройкой магазина на OpenCart, то наш путь начинается со входа в админку магазина путём введения в адресной строке веб-браузера следующей строки: «доменное_имя_сайта/admin». В появившемся окне вводим логин/пароль администратора:
Небольшое уточнение: если после произведённых действий ничего не произошло, проверьте соединение с Интернет, если ваш сайт расположен на хостинге, и запущен ли локальный сервер, если вы работаете с локальной копией.
О работе с локальными серверами вы можете прочитать в статье «Программы для создания сайтов«.
Если проблема всё равно не решилась, пишите в комментариях, постараюсь вам помочь.
Для того, чтобы установить в OpenCart валюту по умолчанию, в главном меню админки перемещаемся по следующему маршруту — «Система-Настройки». В версии OpenCart 2+, где текстовое меню было заменено на графическое, пункт «Система» выглядит в виде шестерёночки:
На открывшемся экране нажимаем на кнопочку в виде карандашика, напротив наименования магазина, для редактирования его параметров:
На открывшемся экране переходим во вкладку «Локальные» и в пункте «Валюта» выбираем значение «Рубль», чтобы российский рубль сделать в OpenCart валютой по умолчанию:
После этого сохраняем изменения нажатием на кнопку «Сохранить». Для того, чтобы внесённые изменения отображались в витрине магазина, необходимо сбросить кэш браузера и почистить cookie, иначе в OpenCart валюта по умолчанию для вас не изменится.
По этой причине денежную единицу по умолчанию необходимо выставлять перед тем, как размещать магазин на хостинге, чтобы веб-браузеры ваших клиентов изначально кэшировали нужную информацию. В противном случае, если у них не стоит автоочистка cookie и кэша браузера, то внесённые вами изменения они могут так и не увидеть.
Настройка курса валют в OpenCart
Итак, в OpenCart валюту по умолчанию мы установили.
Можно смело идти наслаждаться изменениями в витрине магазина, но нам ещё необходимо проверить курс валют в OpenСart. Это необходимо сделать, чтобы цены на товары отображались корректно и не вводили в заблуждение покупателей.
Сделаем это сейчас, чтобы не возвращаться в админку из витрины.
Итак, в главном меню админки перемещаемся по следующему пути: «Система – Локализация — Валюты»:
На открывшемся экране представлен перечень всех валют, которые имеются в вашем магазине. Здесь нужно обратить внимание на столбец «Значение», который содержит значения курсов валют в OpenCart.
Здесь у денежки по умолчанию должно быть «1», чтобы все остальные при автоматическом обновлении курса валют в OpenCart принимали значения относительно её.
Если в OpenCart валюта по умолчанию имеет значение, отличное от «1», необходимо его незамедлительно изменить. Для этого напротив требуемой денежной единицы нажимаем на кнопку в виде карандашика для её редактирования:
На данном экране нас будет интересовать поле «Значение», где нужно будет прописать «1» для денежной единицы, установленной по умолчанию. Нажимаем на кнопку в виде дискетки для сохранения и двигаемся дальше.
Раз уж мы разоворили о курсе валют в OpenCart, то следует сказать, что его значения можно вбивать вручную, а можно устанавливать автоматическое обновление значений, которое по умолчанию берётся из сервиса http://finance.yahoo.com.
Для того, чтобы сделать обновление курса валют в OpenCart автоматическим (по умолчанию) или вводить его вручную, нужно перейти на знакомый нам экран редактирования параметров магазина по пути «Система – Настройки – Редактирование магазина — Локальные»:
И в пункте «Автоматическое обновление валюты» установить необходимое значение: «Да» — курс валют OpenCart будет автоматическим, «Нет» — значения будут задаваться вручную.
После всех введённых изменений наконец заходим в витрину магазина, чтобы убедиться в их работоспособности:
Как видим – всё ОК
В нашем магазине OpenCart валюта по умолчанию – выбранный нами рубль, и все цены на товары, соответственно, тоже в рублях. Для проверки правильности курса валют в OpenCart меняем валюту в витрине на доллар и наслаждаемся изменениями:
Здесь всё тоже отлично: товар с названием «iPhone» вместо 101 российского рубля стоит 1,38 доллара США. А значит, цены соответствуют текущему курсу валют, что не может не радовать
Кстати, ежедневно выполняется автоматическое обновление валют OpenCart, что очень удобно и не потребует от вас дополнительных трудозатрат. Поэтому я не рекомендую менять данную настройку, которая и так установлена по умолчанию.
Вот и всё, что я хотел вам сказать
На протяжении сегодняшнего урока нами была установлена в OpenCart валюта по умолчанию. А также я рассказал вам немного о курсе валют в OpenCart и способах его установки.
Надеюсь данный материал был вам полезен и скучно вам не было
Подписывайтесь на обновления на сайте, чтобы быть в курсе новых статей. Оставляйте ваши мнения и пожелания в комментариях под статьёй, а также делитесь записью с друзьями в социальных сетях. Ваше внимание – самая большая награда за мой труд и показатель того, что я занимаюсь данным проектом не зря
Всем спасибо и до новых встреч
Большое спасибо статью, это очень полезная информация для меня.
Спасибо вам за отзыв
Очень рад, что смог вам помочь 
Правильно ли я понял что нужно указывать цену в валюте с учётом маржи уже? И модуль автоматом будет пересчитывать цену товаров с учетом изменения курса?
Добрый день!
Если я правильно понял Ваш вопрос, то вы хотите указывать цену на товар в валюте (доллар, евро и т.д.), а в магазине видеть цены на товары в рублях, с учётом курса?
В таком случае, порядок несколько будет отличаться от того, который указан в статье. Т.к. здесь указаны рекомендации для случая, когда валюта, в которой Вы указываете цену, и которую видит покупатель на витрине, совпадают.
Чтобы задать цену в долларах, а на витрине были видны рубли или гривны, нужно:
1) валюта по умолчанию — рубль
2) в списке валют для доллара ставите в поле «Значение» 1
3) сохраняетесь и можете указывать цены в долларах, а покупатели будут видеть в рублях по курсу доллара
Тут нужно не забывать про обновление курсов. Если хотите, чтобы курс автоматически пересчитывался каждый день, то ничего не предпринимайте — OpenCart всё сделает сам
Если вы хотите указать свой курс, то нужно отключить автоматическое обновление курса в админке, а в настройках валют указать значения относительно доллара.
В целом, думаю, нужно будет посвятить данной проблеме отдельную статью, чтобы описать всё наглядно и более подробно
Больше спасибо за ответ, искал как задавать цены в долларах, а выводить в рублях, ваш ответ помог
Только вот с автообновлением курса по такой схеме проблема.
Если выбрать валюту по умолчанию рубли, то OpenCart при обновлении ставит для него 1.0, а другие валюты высчитывает.
т.е выходит так:
Доллар 0.01530000
Рубль (По умолчанию) 1.000000
а правильно должно быть так:
Доллар 1.000000
Рубль (По умолчанию) 65.36199951
Решил проблему путем правки функции refresh в файле /admin/model/localisation/currency.php (OpenCart 2.2.0.0).
1) Исправил curl_setopt($curl, CURLOPT_URL, ‘http://download.finance.yahoo.com/d/quotes.csv?s=USDRUB=X&f=sl1&e=.csv’); чтобы отправлялся запрос на получение «сколько рублей в 1$»
2) Жестко прописал USD: $this->db->query(«UPDATE » . DB_PREFIX . «currency SET value = ‘1.00000’, date_modified = ‘» . $this->db->escape(date(‘Y-m-d H:i:s’)) . «‘ WHERE code = ‘USD'»); чтобы он прописывал единицу для долларов
3) Жестко прописал RUB: $this->db->query(«UPDATE » . DB_PREFIX . «currency SET value = ‘» . (float)$value . «‘, date_modified = ‘» . $this->db->escape(date(‘Y-m-d H:i:s’)) . «‘ WHERE code = ‘RUB'») чтобы для рублей он ставил полученное значение
Сейчас автообновление валют работает, но может был способ проще, не знаете?
Добрый день!
Спасибо за Ваш объёмный комментарий, действительно было интересно почитать.
Да, признаю, мой предыдущий ответ всё-таки больше подходит для ситуации, когда курс будет указываться вручную. При автоматическом обновлении OpenCart для валюты по умолчанию снова ставит 1, и все остальные курсы сбрасываются.
Ваш способ достаточно интересен, не встречал раньше.
Немного проще ситуацию с автоматическим обновлением курса доллара при выводе на витрине рублей/гривен можно ещё решить, прописав в system/library/currency.php в строке
public function format($number, $currency = », $value = », $format = TRUE)
валюту, цены в которой Вы хотите увидеть у товаров в витрине, в формате:
public function format($number, $currency = ‘RUB’, $value = », $format = TRUE)
При этом валюта по умолчанию должна быть доллар или другая, в которой будут указываться цены в админке. По идее, при данном способе автообновление курса должно происходить без проблем.
Дмитрий, огромное спасибо за ваш мод, тоже с этим бился. Так как изначально OC 2.3 засасывает не курс USD, а курс рубля! 0.0156! А должно быть 64! Вы это тоже заметили. Я применил ваш мод, и теперь цифры во фронте стали верные, и работает автооапдейт. Это безусловный прогресс. Только теперь в админке курс USD = 1.00000000, а RUB = 64! Для идеального завершения вечера не хватает того, чтобы во фронте все осталось как есть, но RUR = 1, а USD = 64. Так будет правильно и по логике вещей (правильные курсы) и валюта по-умолчанию (рубль) будет равна 1, как и строго рекомендуется во всех мануалах. Сможете поколдовать?
Ответ можно дать вот здесь https://opencartforum.com/topic/827-avtomaticheskoe-obnovlenie-kursa-valiut/?p=602341 так как там такие вопросы уже обсуждались, и там можно вставлять код, который не бьется кавычкером (тут код бьется).
Заранее вам очень признателен!
Добрый день! Вам тоже спасибо за отзыв
Насчёт ответа на ваш вопрос — прочитайте предыдущие комментарии, там уже обсуждались похожие ситуации и предлагались рабочие пути решения. Думаю, вам они могут.
Здравствуйте. У меня сайт на сборке 1.5.6.4 в админке цены в долларе,на витрине отображается цена в гривне,но через какое-то время цена на витрине выставляется в долларе. Подскажите в чем может быть причина.У меня валюта по умолчанию — доллар,в локализации валют курс прописан.Зараннее спасибо.
Добрый день! Ответ на ваш вопрос содержится в комментариях выше — там описаны различные способы решения Вашей проблемы. Они все рабочие — выбирайте тот, который будет наиболее удобен Вам.
Вопрос:
Сборка 2.0 магазин автоматически тянет курс рубля к доллару, но не с центробанка. Можно ли это как-то изменить и использовать курс с Центробанка?
Добрый день! Для правки источника курса валют для OpenCart нужно копать в направлении admin/model/localisation/currency.php и править функцию updateCurrencies(). Список конкретных действий я планирую оформить в виде отдельной статьи, поэтому описывать его сейчас не буду. Подписывайтесь на обновления, чтобы быть в курсе новых публикаций проекта.
Интересует есть ли возможность задать курс для каждого конкретного товара, (или задать свою цену в каждой валюте для каждого товара)
Здравствуйте! Конечно, существует такой способ. О нём я писал в одном из своих ответов в комментариях к данной статье. Достаточно отключить автоматическое обновление курса валют в админке и вручную указать цены для каждого товара в той валюте и по тому курсу, как Вам душа пожелает.
Успехов в реализации!
Здравствуйте! Это все хорошо! Но как просто от покупателя убрать дополнительную цену? У меня на сайте в карточке товара показана для покупателя основная цена и дополнительная в скобках.
Жаль, нельзя сюда прикрепить скрин…
Добрый день! Зашёл на ваш сайт — не увидел того, что вы описываете. Возможно, проблема в админке? Можете, кстати, залить скрин на облако и прикрепить ссылку.
Доброго времени суток!
Вот ссылка https://drive.google.com/open?id=0B40-j5XX1g8oQkI1LXlYUWl6akk
Посмотрите, пожалуйста.
Самое интересное, что я не вижу ценника в долларах. Возможно, это потому, что я просматриваю сайт анонимно, а вы залогинились под своей учёткой администратора?
Тогда это вполне возможно, что вам, как админу, доступна дополнительная информация, которая обычным пользователям не показывается. Проверьте мои предположения у себя на компьютере, открыв сайт в режиме «Инкогнито» (в Google Chrome такой режим точно есть).
В любом случае, если Вас этот ценник раздражает и Вы не можете найти, как отключить его в админке, вы всегда можете убрать его раз и навсегда с сайта, воспользовавшись инструкциями, описанными здесь — http://cccp-blog.com/sozdanie-saytov/menyaem-interfejs-sajta-samostoyatelno
Вы не видите цену на сайте в долларах, так как я временно отключил эту функцию.
Какую именно функцию? Вы отключили отображение цены в долларах для покупателей? Так разве это не то, чего вы изначально добивались?
А подскажите что делать если часть цен на товары стоит в руб. а другая часть стоит в долларах в админке, и нужно чтобы все выводилось в рублях? как решить проблему? можно ли как-то сделать чтобы конвертировались цены в отдельных товарах?
Здравствуйте! Честно говоря, затрудняюсь ответить на Ваш вопрос. Насколько я помню, в стандартном OpenCart (без всяких сборок) есть только поле «Стоимость», где можно указывать численное значение. Т.е. валюту указать нигде нет позможности для каждого отдельного товара. Как тогда у вас часть товаров в долларах, а часть в рублях??? Или у вас стоимость 49 — это доллары, а 3600 — это рубли? Объясните, пожалуйста.
Pashaster 29.08.2017
Или у вас стоимость 49 — это доллары, а 3600 — это рубли? Объясните, пожалуйста.
Да именно такая ситуация. Например товар от одного производителя стоит цена 35 ( это евро) а от другого производителя стоит 76 (доллары) а от третьего 2000 (это рубли), реально ли как то сделать, чтобы там где евро и доллары конвертировалось все в рубли?
Да уж… Вы хоть сами понимаете, что это глупая ситуация? Как сайт будет понимать, в какой валюте вы указываете стоимость, если Вы не выбираете эту валюту нигде?
Что вам мешает выбрать валюту по умолчанию «рубли» и вводить в админку товару стоимость в рублях, пересчитав его цену в долларах по нужному курсу на калькуляторе?
Если же вы всё-таки хотите указывать стоимость товаров в разных валютах, необходимо будет в админке при редактировании товара добавить поле для выбора валюты. И попутно нужно будет где-то в админке указать значение курса либо тянуть его по АПИ с какого-то стороннего сервиса. Ну, а на витрине отображать всё в рублях.
Но, боюсь, что самостоятельно Вы такое не реализуете. Нужно будет обращаться за помощью к профессиональным программистам, т.к. это масштабная и достаточно редкая кастомизация самого ядра OpenCart.