Заперт символов при автосоздании алиаса. Как сделать?

При автоматическом создании алиаса получается:
Книга «Название»
Создаётся адрес:
kniga-«nazvanie»
Как запретить кавычки, чтобы было:
kniga-nazvanie

И можно ли как-то перегенерировать все адреса на сайте уже без кавычек (или других символов), чтобы не править вручную?
websfera
20 ноября 2017, 10:36
modx.pro
1
2 821
0

Комментарии: 10

Александр
20 ноября 2017, 14:06
0
Ключ friendly_alias_restrict_chars_pattern в настройках системы. Там подправить шаблон нужно.

Перегенерировать можно через «Управление -> Очистить кэш -> Обновить URI-ссылки»
    websfera
    20 ноября 2017, 14:45
    0
    благодарю. А есть возможность указать, чтобы определённое слово транслитировалось по моему правилу?
    например, чтобы Юпитер был не yupiter а upiter, но там где ключ чтобы оставалось как klyuch
      Александр
      20 ноября 2017, 15:03
      0
      Ну, как вариант можно плагин повесить (вроде на OnDocFormSave), который будет нужные манипуляции с алиасом проводить. Например заменять ^yu на u

      Также, если вопрос только в первой букве «Ю» и используется translit, то можно немного внести правки в его код. Сам процесс транслитерации находится тут:/core/components/translit/model/modx/translit

      В modtransliterate.class.php, можно вставить после

      $ret = strtr($string, $table);

      простенькую замену:

      $ret = preg_replace('/^yu/', 'u', $ret);
      Теперь, в случаи, если первые два символа в строке это yu — они будут заменены на u
        websfera
        20 ноября 2017, 15:20
        0
        $ret = preg_replace('/^yu/', 'u', $ret);
        Внёс, н тоже не срабатывает… Кеш очитил.

        вот что у меня:
        public function translate($string, $table) {
                $ret = $string;
                $filePath = dirname(__FILE__) . '/tables/' . $table . '.php';
                if (is_file($filePath)) {
                    $table = include $filePath;
                    if (is_array($table) && !empty($table)) {
                        $ret = strtr($string, $table);
                        $ret = preg_replace('/^yu/', 'u', $ret);
                    }
                }
                return $ret;
            }
        }
      websfera
      20 ноября 2017, 15:08
      0
      а при обновлении Translit это не слетит?
        Александр
        20 ноября 2017, 15:13
        +1
        Слетит конечно ) Лучше плагин. Принцип такой же: (вешаем на OnDocFormSave)

        Код плагина:
        if ($modx->event->name=="OnDocFormSave") {     
             $alias = $resource->get('alias');
             $alias = preg_replace('/^yu/', 'u', $alias);
             $resource->set('alias', $alias);
        }
        websfera
        20 ноября 2017, 15:18
        0
        странно, новые алиасы создаются согласно внесённым изменениям в friendly_alias_restrict_chars_pattern а вот обновление «Управление -> Очистить кэш -> Обновить URI-ссылки» — не срабатывает. Что не так мог сделать? Кеш почистил…
        Руслан Алеев
        20 ноября 2017, 16:13
        2
        +1
        Здравствуйте!
        1) в MODX есть несколько методов фильтрации символов в URL — я ставлю alphanumeric (только буквы и цифры), см. в «Системные настройки -> Дружественные URL -> Метод фильтрации символов в псевдонимах» и править friendly_alias_restrict_chars_pattern не нужно.
        2) Чтобы поправить транслитерацию символов заходите в /public_html/core/components/translit/model/modx/translit/tables/russian.php и правите на нужное сочетание, но при обновлении, как выше обсуждалось, может слететь, хотя translit не обновлялся, по-моему, никогда :)
          websfera
          20 ноября 2017, 18:19
          0
          а если /public_html/core/components/translit/model/modx/translit/tables/russian.php не трогать а в Системных настройках friendly_alias_translit указать не russian а свой russianmod и изменения внести в дубликат russianmod.php
          Так и обновление не помешает верно?
            Руслан Алеев
            20 ноября 2017, 20:45
            0
            Не знаю даже, думаю, обновлению не помешает.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10