Реклама на сайте Advertise with us

Помогите подправить плагин RusToLat!

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 15.12.06
Сообщения: 673
Рейтинг: 686

Ссылка на сообщениеДобавлено: 20/10/09 в 20:14       Ответить с цитатойцитата 

Итак, вот плагин:

Plugin Name: RusToLat
Plugin URI: http://mywordpress.ru/plugins/rustolat/
Description: Транслитерация русских символов URL в английские.
Version: 0.3

Код плагина:

Код:

<?php
/*
Plugin Name: RusToLat
Plugin URI: http://mywordpress.ru/plugins/rustolat/
Description: Транслитерация русских символов URL в английские. Thanks to Alexander Shilyaev for idea. Send your suggestions and critics to <a href="mailto:skorobogatov@gmail.com">skorobogatov@gmail.com</a>.
Author: Anton Skorobogatov <skorobogatov@gmail.com>
Contributor: Andrey Serebryakov <saahov@gmail.com>
Author URI: http://skorobogatov.ru/
Version: 0.3
*/
 
$gost = array(
   "Є"=>"EH","І"=>"I","і"=>"i","№"=>"#","є"=>"eh",
   "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
   "Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
   "З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
   "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
   "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
   "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
   "Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
   "е"=>"e","ё"=>"jo","ж"=>"zh",
   "з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
   "ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
  );

$iso = array(
   "Є"=>"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g",
   "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
   "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
   "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L",
   "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
   "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"X",
   "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
   "Ы"=>"Y","Ь"=>"","Э"=>"E","Ю"=>"YU","Я"=>"YA",
   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
   "е"=>"e","ё"=>"yo","ж"=>"zh",
   "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
   "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
  );

function sanitize_title_with_translit($title) {
   global $gost, $iso;
   $rtl_standard = get_option('rtl_standard');
   switch ($rtl_standard) {
      case 'off':
          return $title;      
      case 'gost':
          return strtr($title, $gost);
      default:
          return strtr($title, $iso);
   }
}

function rtl_options_page() {
?>
<div class="wrap">
   <h2>Настройки RusToLat</h2>
   <p>Вы можете выбрать стандарт, по которому будет производится транслитерация заголовков.</p>
   <?php
   if($_POST['rtl_standard']) {
      // set the post formatting options
      update_option('rtl_standard', $_POST['rtl_standard']);
      echo '<div class="updated"><p>Настройки обновлены.</p></div>';
   }
   ?>

   <form method="post">
   <fieldset class="options">
      <legend>Производить транслитерацию в стандарте:</legend>
      <?php
      $rtl_standard = get_option('rtl_standard');
      ?>
         <select name="rtl_standard">
            <option value="off"<?php if($rtl_standard == 'off'){ echo(' selected="selected"');}?>>Отключена</option>
            <option value="gost"<?php if($rtl_standard == 'gost'){ echo(' selected="selected"');}?>>ГОСТ 16876-71</option>
        <option value="iso"<?php if($rtl_standard == 'iso' OR $rtl_standard == ''){ echo(' selected="selected"');}?>>ISO 9-95</option>                                
         </select>

         <input type="submit" value="Изменить стандарт" />

   </fieldset>
   </form>
</div>
<?php
}

function rtl_add_menu() {
      add_options_page('RusToLat', 'RusToLat', 8, __FILE__, 'rtl_options_page');
}

add_action('admin_menu', 'rtl_add_menu');
add_action('sanitize_title', 'sanitize_title_with_translit', 0);
?>


Плагин делает потрясающе простую вещь — вместо %D2%E5%F1%F2 в урлах вы получаете латинские буквы test

Допустим, у Вас есть запись с заголовком «Тест». Если у Вас не установлен плагин RusToLat, то ссылка на Вашу запись будет выглядеть весьма некрасиво, примерно так: http://mydomain.ru/2007/03/18/%D2%E5%F1%F2
но после установки и активации плагина, ссылка будет выглядеть так: http://mydomain.ru/2007/03/18/test

В плагине доступны два стандарта транслитерации. Старый — ГОСТ 16876-71 и более свежий ISO 9-95. Вы можете свободно переключаться между ними.



В рнр мало, что понимаю поэтому прошу помощи, за рейт естественно.

Дело в том, что я некоторо время вел блог на ВордПресс и в нем проскакивали в адресах постов и меток русские слова...

Потом я поставил этот замечательный плагин и адреса новых постов были полностью на английском, однако все предидущие посты и метки в которых были русские символы перестали работать.
Выводилась ошибка:

Поиск не дал результатов...

Ни одной записи не найдено.


Очевидно транслитерация происходит во всех постах, страницах и метках.


После отключения плагина все восстеновилось и работало исправно!

Версия движка ВордПресс: 2.8.4

Хотелось бы, чтобы плагин работал только на странице создания поста т.е. только там чтобы происходила транслитерация, и чтобы работа плагина не затрагивала весь блог...

Нехилый заработок на блоге в рунете, где его продвижение неизбежно + темы, плагины и хаки Wordpress

0
 



С нами с 11.08.06
Сообщения: 400
Рейтинг: 208

Ссылка на сообщениеДобавлено: 20/10/09 в 22:11       Ответить с цитатойцитата 

а автору пробовал писать? чего он ответил?

3
 



С нами с 15.12.06
Сообщения: 673
Рейтинг: 686

Ссылка на сообщениеДобавлено: 21/10/09 в 00:06       Ответить с цитатойцитата 

пробовал конечно, молчит пока что, вообще думаю код не очень и сложный для тех кто занет рнр. Поэтому можно и без автора разобраться, если ответит, то выложу тут исходник, но пока мне нужно побыстрей решить проблемму!

Нехилый заработок на блоге в рунете, где его продвижение неизбежно + темы, плагины и хаки Wordpress

0
 



С нами с 06.03.05
Сообщения: 6216
Рейтинг: 7375


Передовик Master-X (01.02.2007) Передовик Master-X (16.02.2007) Передовик Master-X (01.04.2007) Передовик Master-X (01.05.2007) Передовик Master-X (01.10.2007) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 21/10/09 в 09:22       Ответить с цитатойцитата 

Цитата:
Очевидно транслитерация происходит во всех постах, страницах и метках.


а плагин же помоему только урлы постов затрагивает, метки и страницы вроде не трогает

5
 



С нами с 15.12.06
Сообщения: 673
Рейтинг: 686

Ссылка на сообщениеДобавлено: 21/10/09 в 13:38       Ответить с цитатойцитата 

тогда почему же у меня метки на русском не работают?

Вообщем смысл в том, что нужно чтобы плагин работал не глобально, а только на странице:
http://mydomain.ru/wp-admin/post-new.php

Нехилый заработок на блоге в рунете, где его продвижение неизбежно + темы, плагины и хаки Wordpress

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »