Неверная страна при заполнении профиля покупателем Принято

3

Такая вот неприятность выяснилась:

В настройках магазина страна: Украина
В настройках оформления заказа страна (фиксированное значение): Украина

Клиент проходит процесс регистрации. На этом этапе он заполняет только имя, фамилию, телефон, е-мейл, пароль. После этого клиент заходит в свой профиль для заполнения адреса и не может выбрать свой регион т.к. выпадающий список состоит только из регионов РФ. Выясняется, что по-умолчанию в таком случае страна указана РФ, а ведь поле фиксированное и скрытое. Страну клиент поменять не может и заполнить адрес из-за этого не может.
Этот баг проявляется только если клиент после регистрации пытается заполнить свой профиль.
Если после регистрации происходит оформление заказа, то на этапе ввода адреса проблем не возникает - скрытое поле "страна" - Украина, список регионов - украинский.

26 комментариев

  • 0
    Михаил Ушенин Михаил Ушенин Webasyst 24 января 2017 11:34 #

    Не удалось повторить такую ситуацию. После регистрации тестовый клиент перешёл в личный кабинет и начал редактировать свой профиль. В списке регионов — только украинские регионы.

    Покажите на снимках экрана все настройки, связанные с этой проблемой.

    • +1
      Плебей Плебей 24 января 2017 11:41 #

      Так выглядит страница сразу после перехода в раздел Профиль - Редактировать. На этом скрине видно, что по-умолчанию страна - РФ (соответственно и регионы российские). Здесь поле не скрыто. В моей теме поле страны скрыто.

    • +1
      Плебей Плебей 24 января 2017 11:45 #

      Вот настройки:


    • +1
      Плебей Плебей 24 января 2017 11:48 #

    • +2
      Плебей Плебей 24 января 2017 12:51 #

      Михаил, вот нашел топик: https://support.webasyst.ru/10865/kak-zadat-stranu...

      Из него следует, что страной по-умолчанию всегда есть РФ. И получается, что нельзя скрывать поле "Страна", даже если установить для него фиксированное значение, т.к. эта "фиксированность" срабатывает только при оформлении заказа. Но на заполнение профиля не влияет никак. Это явный баг. Адресные поля профиля покупателя и адреса доставки живут каждый своей жизнью, а должны подчиняться одной логике и иметь одни истоки.

      • 0
        Михаил Ушенин Михаил Ушенин Webasyst 25 января 2017 17:18 #

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

        Попробуйте повторить те же самые настройки в облаке Webasyst, пожалуйста.

        • +1
          Плебей Плебей 26 января 2017 01:35 #

          Бред какой-то. В облаке на тестовом аккаунте проблемы нет. Натройки те же. Даже не представляю куда копать. В файлы фреймворка и приложений изменения не вносил. Да и обновляюсь, все равно затерлось бы... Откуда ж именно в этом месте может подставляться РФ? Везде Украина по-умолчанию.

          • 0
            Михаил Ушенин Михаил Ушенин Webasyst 26 января 2017 13:02 #

            Для информации вам на всякий случай: если вам не удастся самостоятельно выяснить причину проблемы, то можете обратиться в нашу службу поддержки за расширенной диагностикой.

            • +1
              Плебей Плебей 27 января 2017 00:53 #

              Михаил, снова здравствуйте.

              1. Создал чистую установку WA+SS на поддомене. Та же проблема. Можно предположить, что виноваты какие-то кривые настройки хостинга. Но, в таком случае, формирование и вывод полей контактной информации не подчиняется настройкам в Вебасист, а пользуется настройками хостинга? Т.е. назначение фиксированного значения поля, фактически, не работает при регистрации и заполнении адреса.

              2. Еще раз проверил в облаке. Таки да - при включении заполнения адресных данных в момент регистрации покупателя (ставим галочку адрес в настройках авторизации) поле "страна", во-первых - не скрыто, хотя галочка в настройках контактных данных снята, и, во-вторых - не заполнено настройками по-умолчанию (фиксированным значением). Кстати, и РФ не подставилось.

              Адрес тестовой установки: t1. kosmetichka. com. ua (пробелы убрать)

              • +3
                Михаил Ушенин Михаил Ушенин Webasyst 27 января 2017 11:11 #

                На этом тестовом сайте у вас, видимо, не указано фиксированное значение страны. В этом случае при редактировании адреса в профиле пользователя страна подставляется автоматически в зависимости от текущей локали фронтенда. Если локаль русская (ru_RU), то по последним 2 символам в её обозначении (RU) автоматически подставляется страна с таким кодом — Российская Федерация. Аналогично при использовании локали en_US автоматически подставятся США.

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

                Для того чтобы выбрать её в настройках структуры сайта, нужно добавить конфигурационный файл ru_UA.php в директории wa-system/locale/data/ (можно для простоты скопировать в него содержимое файла русской локали ru_RU.php). В этой копии русского файла замените название языка с "Русский" на "Украинский", чтобы различать локали в настройках сайта. И iso3-код на всякий случай измените с rus на ukr. Примерно вот так:

                <?php
                return array(
                    'iso3' => 'ukr',
                    'name' => 'Украинский',
                    'region' => 'Украина',
                    'english_name' => 'Ukrainain',
                    'english_region' => 'Ukraine',
                    ...

                После этого нужно также скопировать поддиректории с русскими языковыми файлами (например, wa-apps/shop/locale/ru_RU/LC_MESSAGES/) всех продуктов (Shop-Script и его плагинов, всех остальных приложений, используемых на сайте, а также самого Вебасиста в директории wa-system/webasyst/locale/), заменив в именах этих копий поддиректорий идентификатор локали ru_RU на ru_UA.

                Затем в конфигурационном файле wa-config/locale.php добавьте строку с новой локалью (чтобы фреймворк "узнал", что нужно использовать новую локаль)

                <?php
                return array (
                  0 => 'en_US',
                  1 => 'ru_RU',
                  2 => 'ru_UA',    //вот так
                );

                После выполнения всех этих действий очистите кеш в Инсталлере. Собственные файлы локализации (те самые копии, которые вы создадите) при обновлениях не удаляются, поэтому эти изменения должны продолжить работать нормально.

                Теперь в настройках поселения витрины магазина (да и во всех остальных поселениях, если вы сделали копии поддиректорий с файлами локализации соответствующих приложений, как для магазина) в разделе "Структура" приложения "Сайт" можно выбрать новую локаль с названием "Украинский".

                Важно: для всего этого нужно, чтобы на сервере была установлена украинская локаль! Проверить это можно вот такой командой в консоли Linux-сервера (может быть доступна по SSH):

                locale -a

                — покажет список всех установленных локалей, или

                locale -a | grep -i ua

                — покажет список всех установленных локалей, в идентификаторах которых есть фрагмент ua (без учёта регистра символов).

                • +1
                  Плебей Плебей 27 января 2017 12:35 #

                  Михаил, спасибо огромное! Вот она - старая добрая поддержка ВА.

                  Страна у меня в настройках (Магазин-Настройки-Оформление заказа-Контактные данные) выставлена фиксированно ukr и галочка снята. Но select со списком стран все равно отображается.

                  Проделал все манипуляции по Вашей инструкции (локаль на сервере есть). Файла wa-config/locale.php не было, я дописал. Кеш зачистил вдоль и поперек. И "О чудо!" - частично заработало. Частично потому, что при редактировании профиля уже по-умолчанию Украина, но при новой регистрации поле страны вообще пустое, надо выбирать самому (но так и в облаке, писал выше). Плюс перестала показываться капча. Про капчу есть подозрение, что файлы .po .mo не надо было в режиме текста копировать? Прав?

                  Выбор страны при регистрации - чепуха. Все равно нет смысла грузить клиентов лишними полями. А вот с капчей вопрос.

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 27 января 2017 12:38 #

                    Файлы локализации нужно было копировать как есть, а не переносить их содержимое текстовым редактором, если вы об этом:

                    файлы .po .mo не надо было в режиме текста копировать?

                    По поводу капчи: посмотрите, какие возникают ошибки.

                    • +1
                      Плебей Плебей 27 января 2017 12:57 #


                      Файлы локализации нужно было копировать как есть, а не переносить их содержимое текстовым редактором

                      Не, не об этом. Я их по F5 (пользуюсь FAR для фтп) копировал. Но выставлял копирование не в binary, а в text.

                      Ошибок никаких не выдается. Ни в приложении "Логи", ни в логах сервера. Просто капча не показывается. До манипуляций с локалями показывалась.

                    • +1
                      Плебей Плебей 27 января 2017 13:59 #

                      Причину непоказа капчи понял. Всему виной файл wa-config/locale.php

                      Убрал его и капча показывается. Вот только выбора украинского языка теперь, естественно, нет. Вернул файл назад и капча снова не показывается...



                      • +1
                        Михаил Ушенин Михаил Ушенин Webasyst 27 января 2017 14:29 #

                        Покажите содержимое файла — возможно, вы допустили ошибку в нём.

                        • +1
                          Плебей Плебей 27 января 2017 14:31 #
                          <?php
                          return array (
                          0 => 'en_US',
                          1 => 'ru_RU',
                          2 => 'ru_UA',
                          );

                          Тоже так думал. Уже и вручную переписывал, и ваш вариант копипастил...


                        • +1
                          Плебей Плебей 27 января 2017 14:52 #

                          Да, еще и так пробовал:

                          <?php
                          return array(
                              'en_US',
                              'ru_RU',
                              'ru_UA',
                          );

                          Взято отсюда: https://support.webasyst.ru/1134/user-interface-tr...

                          Ни в какую не хочет.

                          Удалял этот файл и дописывал ru_UA в файле wa-system/locale/locale.php

                              $locales = array('en_US', 'ru_RU', 'ru_UA');

                          Так срабатывает, но затрется ж при обновлении...

                          • +1
                            Алексей Алексей Webasyst 27 января 2017 15:05 #

                            Можно через приложение https://www.webasyst.ru/store/app/mylanglite/ добавлять/удалять локали.
                            При обновлении эти файлы не затрутся.

                            • +1
                              Плебей Плебей 27 января 2017 15:10 #

                              Алексей, спасибо за ответ.

                              Оно-то все можно. Но, с одной стороны, не хотелось бы нагружать фреймворк лишними приложениями. А, с другой, вопрос такого радикального отношения фреймворка к файлу wa-config/locale.php остается открытым. Похоже на какой-то баг...

                              • +1
                                Алексей Алексей Webasyst 27 января 2017 15:39 #

                                В частности это приложение работает только в бекенде и не используется при работе других приложений, поэтому нагрузки не будет.

                                Пока не удаётся повторить описываемую вами ошибку.

                                • +1
                                  Плебей Плебей 27 января 2017 15:50 #

                                  Я присматриваюсь к MyLang (полной версии), т.к. второй язык мне нужен. Но пока не готов платить такую сумму, подожду более адекватной цены.

                                  А проблему я нашел. Я файл этот писал в utf-8, поменял на 1251 и все заработало... Может я чего-то не понимаю, но странно это все.

                                • +3
                                  Плебей Плебей 27 января 2017 16:05 #

                                  Михаил, Алексей, премного благодарен вам за помощь!

                                  А на будущее - передайте, пожалуйста, разработчикам пожелание, чтоб сделали так, что назначение фиксированного значения поля все же влияло на это поле во всех формах - и редактирования профиля, и регистрации. Плюс, чтоб сделали "страну по умолчанию" рабочим инструментом. Есть же соответствующие настройки в магазине/фреймворке, но они не влияют на эту функцию абсолютно и приходится танцевать с бубном, локали дописывать и т.п.

                                  Вот пример, о чем я говорю: http://ksmtest.webasyst.cloud/signup/ При том, что везде, где можно, выставлена Украина, плюс в настройках полей это фиксированное и скрытое значение, все равно поле "страна" присутствует и изначально не selected.

                                • +2
                                  Alex Alex 6 марта 2018 00:03 #

                                  в октябре 2013 года поднимал этот вопрос, зачем выбирать страну в которой работает магазин, если это ни на что не влияет. Вот сейчас поставил с нуля магазин и опять грабли(

                                • +1
                                  Alex Alex 6 марта 2018 00:35 #

                                  в таблице wa_country делаем сортировку для РФ "2", а для Украины должно быть "1", если указали страну как избранную в настройках. Теперь работает как нужно.

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

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