MODx - плагин TransAlias - автоматическая транслитерация адресов

В CMS/CMF MODx для автоматической транслитерации URL-ов страниц в комплект входит плагин TransAlias. Однако, по умолчанию настроен он так, что позволяет добавлять URL-ы, содержащие и русские буквы.

Для транслитерации русских букв в строке URL адреса следует произвести небольшую настройку плагина. А именно - заходим на вкладку “Конфигурация” (Элементы - Управление элементами - Плагины- TransAlias (8) - 1.0.1 Human readible URL translation supporting multiple languages and overrides), и выбираем значение “russian” для параметра Trans table

Там же можно настроить и разделитель слов (word separator) - дефис-минус или нижнее подчеркивание:

  • modx-transalias-plugin.htm (используется разделитель dash);
  • modx_transalias_plugin.htm (используется разделитель underscore);
  • еще есть “none”, но думаю “всё в кучу” будет смотреться намного хуже

Кстати, по умолчанию все URL-ы приводятся к нижнему регистру. Чтобы плагин “пропускал” буквы верхнего регистра (т.е. разрешить в URL-ах заглавные буквы) следует слегка подправить код (вообще, не рекомендуется.. но мы ведь аккуратно):

$alias = strtolower($modx->stripAlias(trim($pagetitle)));

заменить на (просто убрать strtolower - функция, которая и преобразует заглавные буквы в строчные)

$alias = $modx->stripAlias(trim($pagetitle));

Для того, чтобы плагин работал, в настройках событий (вкладка “Системные события”) должна стоять галочка напротив события OnStripAlias.

При необходимости отключить плагин TransAlias (как и любой другой плагин MODx) можно просто поставив галочку напротив “Плагин отключен”.

Автоматическая генерация URL на основе pagetitle

Может возникнуть ситуация, когда требуется автоматически сгенерировать alias-ы для всех документов на основе существующих значений заголовков страницы. Т.е. тоже самое, что делает TransAlias, но для всех документов, у которых значение alias не заполнено.

Официальных плагинов вроде mass rebuild alias или mass generate alias я не нашёл (для Revo, например, можно использовать FixAliases AutoAlias)

Набросал модуль FixAliases, который позволит автоматически программно сгенерировать Алиасы на основе заголовков. Вариант черновой, делался для себя. На большом количестве документов и в определённых фазах луны просто может глючить - поиграться с числами 0,7.. 0 - это стартовый документ, 7 - глубина. Все пожелания и предложения оставляйте в комментарии.

< ?php /* modX evo module FixAliases */
//
echo '
Start FixAliases
';
$ids = $modx->getChildIds(0,7);
if (!$docs = $modx->getDocuments($ids, 1, 0, 'id,pagetitle',"alias=''"))
exit('Nothing to fix');
//
$table = $modx->getFullTableName('site_content');
//
foreach ($docs as $k => $doc) {
$alias = $modx->stripAlias($doc['pagetitle']);
$modx->db->update(array('alias'=>$alias),$table, 'id='.$doc['id']);
echo "
updated «{$doc['pagetitle']}» {$doc['id']} alias=$alias";
}
//
echo '
End FixAliases
';

При необходимости можно дополнить автоматической очисткой кэша. Однако, перегенерация alias-ов - операция разовая - может быть лишней.

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Комментарии (4) к записи “MODx - плагин TransAlias - автоматическая транслитерация адресов”

  1. Скептик сообщает :

    Я не пойму почему этот плагин у меня не срабатывает. Я создаю документ, прописыва название (тайтл и т.п.) кроме псевдонима, сохраняю, но псевдоним не создаеется… почему?

  2. levik сообщает :

    Скептик, какая версия MODx? Галочка в событиях установлена? Галочка “отключён”?

  3. Сергей сообщает :

    Все сделал как указано. Но не работает. версия 1.0.4. OnStripAlias.- галочка стоит,Плагин отключен” -галочка не стоит. Работать не хочет.

  4. Vadim сообщает :

    У меня не убираются точки в сформированном урле. Думаю что это плохо. Как это можно поправить?

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