Меняем страну по умолчанию в Virtuemart 1.1 и 2.0 при оформлении заказа и регистрации

Делаем заказ, а страна показывается как United States и указание Russian Federation в настройках магазина ни к чему не приводит. В некоторых случаях это может не дать пользователю сделать заказ, вывалив ошибку типа «Данный метод оплаты (или доставки, всякое может быть) доступен только для Российской федерации». На точность сообщения не претендую, но смысл будет таким. В общем, пора починить.

Меняем страну по умолчанию в Virtuemart 1.1

Перво-наперво определимся, как будет выглядеть у нас название нашей страны. Russian Federation — это как-то не патриотично. Пишем по-русски. Для этого идем в «Список стран«, ищем там «Russian Federation» и меняем на славянскую «Российскую Федерацию». Остальные поля не трогаем, они нужны.

Теперь идем в базу данных и ищем там таблицу jos_vm_user_info, которую открываем для редактирования (не Обзор, чтобы посмотреть данные, а именно надо отредактировать таблицу) и в поле «country» меняем US на RU. Сохраняем и радуемся, теперь по умолчанию будет вставляться страна с кодом RU (помните, я говорил, что не надо редактировать ничего кроме названия страны).

Меняем страну по умолчанию в Virtuemart 2.0

Статья была бы несколько не полной, если остановиться только на 1.1. Вот рецепт для Virtuemart 2.0

Если в ранней версии магазина проверка происходит по коду страны, то в новой версии используется ID.

Открываем файл /administrator/components/com_virtuemart/helpers/shopfunctions.php и ищем строку 322. Где-то там есть это:

return JHTML::_ ('select.genericlist', $countries_list, $idA, $attrs, $id, $name, $countryId);

От версии к версии точная строка может меняться, но это должна быть последняя строка в функции renderCountryList. Так вот, перед ней вставляем эту строку:

if($countryId == 0){$countryId = 123;}

где 123 = это ID страны. ID страны можно узнать в таблице #_virtuemart_countries в поле virtuemart_country_id. Для Российской Федерации код будет 176. То есть (для танкистов) мы говорим: «Если код страны равен нулю (не выбран, например), то установить его 123», а Virtuemart уже в следующей строке сам разберется, что это за страна 123 и подставит ее.

То есть, код для России будет такой:

if($countryId == 0){$countryId = 176;}
return JHTML::_ ('select.genericlist', $countries_list, $idA, $attrs, $id, $name, $countryId);

Вот как-то так, легко и непринужденно это все и делается.

0

Меняем страну по умолчанию в Virtuemart 1.1 и 2.0 при оформлении заказа и регистрации: 6 комментариев

  1. Михаил

    Работает. Но есть такая проблема: моя форма требует обновления поля «страна». То есть, если кликаю на другую страну, а потом на Россию, то работает. А если не трогать поле, то просит заново вводить данные.
    Использую плагин one_page. Вот это место:

    — Выберите —
    Российская федерация

    Не подскажете?

Добавить комментарий