Хак Кирилические url

Тема в разделе "DLE", создана пользователем staker, 28 июн 2009.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. staker

    staker

    Регистр.:
    24 ноя 2006
    Сообщения:
    226
    Симпатии:
    33
    Как бы это сделать? Открываем движек и смотрим где формируются url. К ужасу видим, что файлов этих много. Вникаем и видим, а ларчик-то просто открывается. Пишем функцию, собсно можно и без нее, но все-таки. Как известно, в ДЛЕ для перевода названия новости в транслит существует специальная функция, имя ей totranslit Свою же мы назовем tocirilic Вот её код (не забудьте её добавить в engine/modules/functions.php и в engine/inc/functions.inc.php)
    PHP:
    function tocirilic($var$lower true$punkt true) {
        
    $NpjCaps "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
        
    $NpjSmall "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
        
        
    $var str_replace".php"""$var );
        
    $var trimstrip_tags$var ) );
        
    $var preg_replace"/\s+/ms""-"$var );
        
    $var strtr$var$NpjCaps$NpjSmall );
        
        if ( 
    $punkt $var preg_replace"/[^a-z0-9\_\-.]+/mi"""$var );
        else 
    $var preg_replace"/[^a-z0-9\_\-]+/mi"""$var );

        
    $var preg_replace'#[\-]+#i''-'$var );

        if ( 
    $lower $var strtolower$var );
            
        return 
    $var;
    }
    Как видите изобретать велосипед я не стал, а просто взял функцию ДЛЕ и убрал от туда лишнее, плюс переименовал её ) Программисты спросят, зачем нужны $NpjCaps $NpjSmall и strtr( $var, $NpjCaps, $NpjSmall ); ведь для этого есть более удобная функция в PHP, имя ей strtolower(), но в даном случае ,эта функция не будет работать как нужно, по сему мы сделали так. Дальше все просто, идем по всем файлам и меняем totranslit на tocirilic вуаля, у нас кирилические url p.s. Чтобы в старых новостях появились кирилические url, нужно отредактировать их в админке, ну или написать простенький скриптик, который это сделает за вас :)

    (c) Alex
     
  2. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    920
    В чем смысл данного действия? Наоборот все правят чтобы урлы были стандартного типа, а тут наоборот в сторону изврата путь... Рускими урлами ты отсекаешь часть аудитории зарубежной и часть рускоязычной. У первой части сайт просто не откроется, а у второй будет выглядеть убого, да и стандарт для браузеров это латинское написание ссылок.
     
    antiterror нравится это.
  3. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    Totranslit используеться не только для прооброзования url поэтому не стоит менять где попало с notranslit на tocirilic (aKa cyrillic)
     
  4. Bereza

    Bereza

    Регистр.:
    9 май 2007
    Сообщения:
    222
    Симпатии:
    69
    Смысл думаю есть... Посмотрев на выделение запроса в найденном урле (яндекс)... наглядно убедиться можно набрав в яндексе запрос к примеру "Колонна"... В общем сдается мне что это лучше транслита во всяком случае для оптимизации под яндекс...
     
  5. eshkin

    eshkin

    Регистр.:
    13 апр 2006
    Сообщения:
    597
    Симпатии:
    255
    в урлах типа site.info/399-транслит.html - учитывается id новости вначале и любые сивмолы перед html =) поэтому кириллическими урлами врятли кого то можно отсечь от просмотра сайта.
     
  6. Bereza

    Bereza

    Регистр.:
    9 май 2007
    Сообщения:
    222
    Симпатии:
    69
    Гугл тоже прекрасно индексирует такие урлы так что отказываться не придется...
     
  7. amenor

    amenor Читатель

    Заблокирован
    Регистр.:
    3 фев 2009
    Сообщения:
    94
    Симпатии:
    17
    Я вот много уже такого слышал! Что значит отсекаются? Если сайт на русском языке, то и посетители будут русские, с русской клавиатурой. А стандарт для браузеров, мне как то побоку, всё открывается хорошо и всё также отображается. К тому же для seo гораздо лучше на русском урлы.
    Конечно какие-то исключения к моим словам есть, но это уже по конкретной ситуации смотреть.
     
  8. JESUS

    JESUS

    Регистр.:
    28 ноя 2006
    Сообщения:
    374
    Симпатии:
    110
    ага, сейчас даже кириллические урлы вводят, а тут из-за части урла будут сайт из индекса выкидывать...
     
  9. Drum41k08

    Drum41k08 Hosting - it's my

    Регистр.:
    15 дек 2008
    Сообщения:
    309
    Симпатии:
    28
    Не Urlы а домены, сейчас уже вполне можно регать полноценные кириллические домены. Так что модуль очень полезный. :)
     
  10. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.378
    на какую версию это все и можно пример сайта?
    и собственно главное: теги будут русскими или им нет?
     
Статус темы:
Закрыта.