Ненужные страны и региона.Непонятный баг

Нашел на форуме инструкцию
как отключить ненужные страны и регионы.
http://forum.webasyst.ru/viewtopic.php?id=18887

Редактор регионов есть в настройках.
Страны удалять нельзя, т.к. это системный справочник.
Но в конфиге магазина вы можете органичить список стран для выбора,
файл wa-config/shop/checkout.php

Найдите там country и добавьте iso_codes:

Например, чтобы была только Россия и Украина:
'country' =>
array (
'iso_codes' => array('rus', 'ukr'),
'localized_names' => 'Страна',
),

Добавил но получился баг(((
возникает пустое значение страны
<select name="customer[address.shipping][country]">
<option value=""></option> <--- как его убрать??????
<option value="blr">Беларусь</option>
<option value="kaz">Казахстан</option>
<option selected="selected" value="rus">Российская Федерация</option>
<option value="ukr">Украина</option></select>

6 ответов

  • 1

    Сделал заработало

  • 1

    Сделал заработало

  • 1

    Сделал заработало

  • 1

    Сделал заработало

  • 1
    Алексей Болобан 14 июля 2015 15:14 #

    Здравствуйте!

    При регистрации идет последовательность: 1. Регион 2.Город 3.Улица 4. Страна . Как сделать так чтоб последовательность была 1. Страна 2. Регион и.т.д. В настройках личного кабинета все это обозначается как "Адрес"

  • -1
    нашёл ,ошибка в классе и модели для страны
    • +1
      оказывается нельзя выбрать другую страну по дефолту для магазина в случае оформления заказа при создании нового пользователя ,этот параметр просто не передается .
      Я думаю планируется добавить в поселение настройку Страна по умолчанию
      • +2
        так кому нужна такая фича с выбором страны по умолчанию при оформлении заказа
        идёте в wa-system/contact/waContactCountryField.class.php
        идёте на строчку 87
        public function getHtmlOne($params = array(), $attrs = '')

        ищете в методе(функции)
        if (isset($this->options['iso_codes']) && is_array($this->options['iso_codes'])) {
        $iso_codes = array_flip($this->options['iso_codes']);
        } else {
        $iso_codes = null;
        }

        и заменяете на

        if (isset($this->options['iso_codes']) && is_array($this->options['iso_codes'])) {
        $iso_codes = $this->options['iso_codes'];
        } else {
        $iso_codes = null;
        }

        дальше чуть ниже смотрим на такой мутный код

        $html = '<select '.$attrs.' name="'.$this->getHTMLName($params).'"><option value=""></option>';

        foreach ($this->model->allWithFav() as $v) {
        if (!$iso_codes || isset($iso_codes[$v['iso3letter']]) || $v['iso3letter'] === '') {
        if ($v['name'] === '') {
        $html .= '<option disabled>&nbsp;</option>';
        } else {
        if (!$selected && $v['iso3letter'] == $value) {
        $at = ' selected';
        $selected = true;
        } else {
        $at = '';
        }
        $html .= '<option value="'.htmlspecialchars($v['iso3letter']).'"'.$at.'>'.htmlspecialchars($v['name']).'</option>';
        }
        }

        заменяем его на

        $translite=false;
        if ($iso_codes) { $all_country = $this->model->getByField('iso3letter',$iso_codes,true);$translite=true;$current_locale = wa()->getLocale();} else $all_country =$this->model->allWithFav();
        $html = '<select '.$attrs.' name="'.$this->getHTMLName($params).'">';
        foreach ($all_country as $v) {
        if (($v['name'] !== '')&&($v['iso3letter'] !== '')) {
        if (!$selected &&(($v['iso3letter'] == $value)||$v['fav_sort'])) {
        $at = ' selected';
        $selected = true;
        } else {
        $at = '';
        }
        if ($translite) $v['name'] = waLocale::translate('webasyst',$current_locale, $v['name']);
        $html .= '<option value="'.htmlspecialchars($v['iso3letter']).'"'.$at.'>'.$v['name'].'</option>';
        }
        }
        • +1
          теперь если выбрать страну звездочкой в странах ,то она становится страной по умолчанию в случае оформления заказа или регистрации юзера
        • +2
          Юрий Сергеев Юрий Сергеев 30 июля 2015 04:02 #

          Спасибо, ваше решение помогло! Почему разработчики не включат подобное решение в сборку по умолчанию? Ведь, насколько я понимаю, при следующем обновлении придется снова вносить все изменения. Вообще странная логика, когда человек отмечает, что магазин территориально в одной стране, а по умолчанию отмечена другая и нужны какие-то еще танцы с бубном по этому поводу.

          • 0
            Lecor Lecor 27 декабря 2015 11:23 #

            Что бы все покупали плагин "Делает страну по умолчанию"

        • +1
          Koribo Koribo 30 ноября 2015 14:03 #

          У меня ошибка после замены кода


          Parse error: syntax error, unexpected '$html' (T_VARIABLE), expecting function (T_FUNCTION) in /home/koribo/sushipovar.com.ua/www/wa-system/contact/waContactCountryField.class.php on line 149

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите