Разные таблицы транслита для языковых контекстов
Задача — для разных языковых контекстов использовать разные таблицы переводов т.к., к примеру, в украинском «и»=>«y» а в русском «и»=>«i».
Класс modTransliterate использует общий friendly_alias_translit.
Может кто знает как заставить его использовать конфиг определенного контекста?
Пока сделал плагин:
Класс 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 — даже когда пользователь ввел его самостоятельно. Комментарии: 4
Так устанавливайте алиасы только при первом сохранении ($mode == 'new'), и проверив, что пользователь сам ничего не ввел.
Спасибо за интерес к моему топику.
Не подскажите, как я могу проверить что пользователь сам ничего не ввел?
Если он обновит ресурс и стрет алиас — тогда ($mode == 'new') не поможет.
Не подскажите, как я могу проверить что пользователь сам ничего не ввел?
Если он обновит ресурс и стрет алиас — тогда ($mode == 'new') не поможет.
как я могу проверить что пользователь сам ничего не ввел?Так же, как и получаете pagetitle:
$resource->get('alias');
Если он обновит ресурс и стрет алиас — тогда ($mode == 'new') не поможет.А, похоже, это и не нужно, будет достаточно только проверки алиаса на пустоту. Во время создания он же либо пустой, либо вручную заполнен пользователем. Конечно, если у вас отключена стандартная настройка генерации псевдонимов.
Конечно, если у вас отключена стандартная настройка генерации псевдонимов.Точно, об этом я не подумал. Спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.