Создание псевдонима на основе русского заголовка.

Во первых хочу поблагодарить автора оригинального кода за очень простое и красивое решение.

Комментарии в теле кода вполне достаточны , хочу только заметить,что от оригинала данный код отличается одной функцией - если поле alias не ="" (не пустое ), то новый псевдоним не создаётся. Это позволяет модифицировать псевдоним вручную при необходимости.

  1.  
  2. /*==============================================================================
  3.   Title: AutoAliasRus2Lat
  4.   Category: Plugin
  5.   Author: Predvoditelev Sergey
  6.   Author URI: http://predvoditelev.ru/blog/
  7.   Version: 1.0.0
  8.   Last Update: 07.12.2007 19:30
  9. ==============================================================================*/
  10.  
  11. /*==============================================================================
  12. Описание:
  13. Данный плагин при сохранении страницы автоматически создает псевдоним (Alias)
  14. для страницы на основе её заголовка (Page Title), при этом символы кирилицы
  15. заменяются на транслит.
  16. ==============================================================================*/
  17.  
  18. /*==============================================================================
  19. Данный плагин основан на популярном плагине для WordPress - RusToLat.
  20. Побробнее об RusToLat:
  21. Plugin Name: RusToLat
  22. Plugin URI: http://mywordpress.ru/plugins/rustolat/
  23. Description: This plugin convert cyrillic characters in post title to latin characters.
  24. Very usefull for russian-speaking users of Wordpress.
  25. You can use this plugin for creating human-readable links.
  26. Thanks to Alexander Shilyaev for idea. Send your suggestions and critics to
  27.  <a href="mailto:skorobogatov@gmail.com">skorobogatov@gmail.com</a>.
  28. Author: Anton Skorobogatov <skorobogatov@gmail.com>
  29. Contributor: Andrey Serebryakov <saahov@gmail.com>
  30. Author URI: http://skorobogatov.ru/
  31. Version: 0.3
  32. ==============================================================================*/
  33.  
  34. // Вы можете выбрать стандарт, по которому будет производится транслитерация заголовков.
  35. // off - Отключена
  36. // iso - ISO 9-95
  37. // gost - ГОСТ 16876-71
  38. // По-умолчанию используется ISO 9-95
  39. $rtl_standard = 'iso';
  40.  
  41. global $alias;
  42. global $pagetitle;
  43.  
  44. $gost = array(
  45. "Є"=>"EH","І"=>"I","і"=>"i","№"=>"#","є"=>"eh",
  46. "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
  47. "Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
  48. "З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
  49. "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
  50. "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
  51. "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
  52. "Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
  53. "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
  54. "е"=>"e","ё"=>"jo","ж"=>"zh",
  55. "з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
  56. "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
  57. "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
  58. "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
  59. "ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya"
  60. );
  61.  
  62. $iso = array(
  63. "Є"=>"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g",
  64. "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
  65. "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
  66. "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L",
  67. "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
  68. "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"X",
  69. "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
  70. "Ы"=>"Y","Ь"=>"","Э"=>"E","Ю"=>"YU","Я"=>"YA",
  71. "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
  72. "е"=>"e","ё"=>"yo","ж"=>"zh",
  73. "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
  74. "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
  75. "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
  76. "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
  77. "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
  78. );
  79.  
  80. if($alias == "") {
  81. switch ($rtl_standard) {
  82. case 'off':
  83. $alias = $pagetitle;
  84. break;
  85. case 'gost':
  86. $alias = strtr($pagetitle, $gost);
  87. break;
  88. default:
  89. $alias = strtr($pagetitle, $iso);
  90. break;
  91. }
  92.  
  93. $alias = strtolower( $alias );
  94. $alias = preg_replace('/&.+?;/', '', $alias); // kill entities
  95. $alias = str_replace( '_', '-', $alias );
  96. $alias = preg_replace('/[^a-z0-9\s-.]/', '', $alias);
  97. $alias = preg_replace('/\s+/', '-', $alias);
  98. $alias = preg_replace('|-+|', '-', $alias);
  99. $alias = trim($alias, '-');
  100.  
  101. }
  102.  
  103.  
Последнее изменение документа: 22 Сентябрь 2009
Anonymous
Posts: 5
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #6 on : Втр Апрель 05, 2011, 22:05:43
У меня TransAlias отказывался транслитеровать, хотя вроде с настройками баловался прилично. Помог данный плагин - работает отлично. Есть одно дополнение, по дефолту плагин работать не будет - нужно отключить TransAlias перед этим.
Anonymous
Posts: 5
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #5 on : Втр Май 04, 2010, 08:12:15
TransAlias плохо воспринимает "entities" (&.+?;/). Может вылетать с ошибкой.
Soleri
Posts: 5
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #4 on : Пнд Апрель 19, 2010, 06:48:46
щас уже подефолту есть плагин TransAlias
admin
Posts: 1
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #3 on : Птн Апрель 02, 2010, 14:38:21
Да вообщем то, как любой другой плагин для modx.
Заходим в раздел управление элементами -> плагины.
Создаём новый плагин, называем его как нибудь, например RusToLat.
Копируем содержимое из примера, и выбираем событие по которому этот плагин должен работать - OnBeforeDocFormSave.
Anonymous
Posts: 5
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #2 on : Птн Апрель 02, 2010, 13:25:12
Плагин может и хороший , но не понятно как его подключать
Anonymous
Posts: 5
Comment
Re: Создание псевдонима на основе русского заголовка.
Reply #1 on : Птн Апрель 02, 2010, 13:24:30
Ну и как его подключать?

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.