26 октября 2014 г.

— Папа, твой любимый портвейн подорожал тоже из-за курса валют?
— Да, сынок, это так!
— Значит ты будешь меньше пить?
— Почему? Нет, сын, просто ты будешь меньше есть!


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

Когда курс валюты растёт, растут и дополнительные издержки. Постоянное повышение цен на товары не выход для конечного потребителя, ведь рано или поздно он перестанет их покупать. Тут желательно поддержать покупателя, устраивая распродажи, акции или дни фиксированного курса обмена. Варианты есть, для грамотного маркетолога это не проблема. Главное вовремя получать необходимую информацию, в нашем случае это курс обмена валют.

В OpenCart 1.5+ есть соответствующий справочник в разделе Локализация. По умолчанию доступно автоматическое обновление курсов валют со стороны сервиса http://finance.yahoo.com. Этот функционал реализован в файл-модели ./admin/model/localisation/currency.php под видом функции updateCurrencies(). Само обновление контролируется через настройки магазина соответствующей опцией.

В стандартной функции есть один существенный недостаток, который заключается в постоянном опросе источника валют (finance.yahoo.com) даже после того, как будут получены актуальные котировки. Из-за частого обращения к сайту-обменнику (работой с административной панелью OpenCart), последний может отказывать в обслуживании, в результате чего в журнале об ошибках OpenCart будут появляться записи вида PHP Notice: Undefined index: HTTP_HOST и т.п.

Чтобы это устранить, необходимо до строчки $curl = curl_init(); добавить код следующего условия:

if (empty($data)) {
  return false;
}


Но вернёмся к заголовку данной статьи, нас интересуют котировки с официального сайта Центробанка РФ. Код стандартной функции updateCurrencies(), из-за принципиально другого формата экспортируемых данных (XML), уже не подойдёт. Поэтому он был заново переписан и адаптирован под новый формат данных.

В новой версии функции updateCurrencies() введены дополнительные проверки (с регистрацией возможных ошибок в журнале), а также кэширование импортируемых данных, дабы не обращаться лишний раз к сайту-источнику тогда, когда котировки неизменны в течении выходных или праздничных дней, а также при редактировании в OpenCart справочника валют.

Код функции представлен по ссылке ниже, его необходимо поместить в упомянутый выше файл путем замены стандартной функции updateCurrencies(). Напомню, что данное решение предназначено для магазинов с основной валютой RUR, для других валют может потребоваться доработка, которую автор готов выполнить на заказ (при наличии сайта-источника котировок национальной валюты с описанием формата экспортируемых данных).

Скачать: currency.zip

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

0 comments:

Отправить комментарий

  • RSS
  • Twitter
  • Youtube