Разные таблицы транслита для языковых контекстов

Задача — для разных языковых контекстов использовать разные таблицы переводов т.к., к примеру, в украинском «и»=>«y» а в русском «и»=>«i».
Класс modTransliterate использует общий friendly_alias_translit.
Может кто знает как заставить его использовать конфиг определенного контекста?

Пока сделал плагин:
<?php
if ($modx->event->name == 'OnDocFormSave') {
  $pagetitle = $resource->get('pagetitle');
  $translitTableName = $modx->getContext($resource->get('context_key'))->getOption('friendly_alias_translit');

        if ($translitTableName && $modx->getService('translit')) {
            $alias = $modx->translit->translate($pagetitle, $translitTableName);
        }
        $resource->set('alias', $alias);
        $resource->save();

}
Но решение плохо тем что всегда пересоздается новый alias — даже когда пользователь ввел его самостоятельно.
Alex
13 января 2017, 22:20
modx.pro
961
+1

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

Гриборий
16 января 2017, 01:18
0
Так устанавливайте алиасы только при первом сохранении ($mode == 'new'), и проверив, что пользователь сам ничего не ввел.
    Alex
    16 января 2017, 01:26
    0
    Спасибо за интерес к моему топику.
    Не подскажите, как я могу проверить что пользователь сам ничего не ввел?
    Если он обновит ресурс и стрет алиас — тогда ($mode == 'new') не поможет.
      Гриборий
      16 января 2017, 14:12
      +1
      как я могу проверить что пользователь сам ничего не ввел?
      Так же, как и получаете pagetitle:
      $resource->get('alias');
      Если он обновит ресурс и стрет алиас — тогда ($mode == 'new') не поможет.
      А, похоже, это и не нужно, будет достаточно только проверки алиаса на пустоту. Во время создания он же либо пустой, либо вручную заполнен пользователем. Конечно, если у вас отключена стандартная настройка генерации псевдонимов.
        Alex
        16 января 2017, 18:18
        0
        Конечно, если у вас отключена стандартная настройка генерации псевдонимов.
        Точно, об этом я не подумал. Спасибо
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4