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

  • 0
    Михаил Ушенин Михаил Ушенин Webasyst 27 февраля 2019 12:12 #

    В Shop-Script 8.3.0 URL страницы сформировался, если я правильно понял ваше описание:

    URL на латинице формируется после перехода из поля для ввода названия, например, клавишей Tab.

    Если у вас проблема сохраняется, покажите её на снимке экрана — возможно, из снимка удастся понять подробности, которых недостаточно в описании.

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

    Посмотрите также, какие сообщения об ошибках появляются в PHP-логе и в консоли браузера в момент возникновения проблемы.

    • -2

      Пару раз было сообщение "$.wa.site недоступен", при каком действии оно возникает сказать не могу - не сразу замети сообщение об ошибке.

    • -2

      webasyst/site/?module=pages&action=translit возвращает пустую строку при вводе на русском. В Сайт та же проблема.

    • -2

      PHP ошибок не генерируется, ответ приходит со статусом ok

    • -3

      Разобрался в чем проблема - на 10 строчек кода 3 ошибки - образец чистейшего говнокода :(

      Рассмотрим waPage.actions.php

      private function translit($str)
      {
          $str = preg_replace('/\s+/', '-', $str);
          if ($str) {
              foreach (waLocale::getAll() as $locale_id => $locale) {
                  if ($locale_id != 'en_US') {
                      $str = waLocale::transliterate($str, $locale);
                  }
              }
          }
          $str = preg_replace('/[^a-zA-Z0-9_-]+/', '', $str);
          return strtolower($str);
      }

      1. проблема в чувствительности метода к последовательности локалей в конфиге locale.php т.е. вот так работает

      return ['en_US', 'ru_RU'];

      а так уже нет

      return ['ru_RU', 'en_US'];

      2. регулярные выражения должны быть с модификатором u на случай всякой экзотики. Неверное выражение - '/[^a-zA-Z0-9_-]+/', '-' должно быть или вначале - '/[^-a-zA-Z0-9_]+/' или экранировано - '/[^a-zA-Z0-9_\-]+/' начиная с PHP 7.3 такой код будет вызывать ошибки т.ч. лучше сразу сделайте пакетную замену по всему фреймворку.

      3. бесполезное условие, учитывая что в массив локалей имеет числовые ключи

      if ($locale_id != 'en_US') {

    • -2

      Странно что при создании страниц товаров slug создается нормально даже если название страницы на русском, я думал проблема где-то в локалях, но видимо нет.

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

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