Плагин русские URLs для 0.4.2

И так благодаря вот этому коммиту могу теперь опубликовать плагин Русские URLs. Работает начиная с версии 0.4.2, для версии 0.3.1 есть тут.

Плагин добавляет возможность назначать блогам русские URL, а также регистрировать пользователей с русскими никами. По умолчанию русские URL для блогов выключены. Изменяется в файле конфигурации плагина.

16 комментариев

avatar
С кирилическими логинами работает отлично, в отличии от плагина AnyNames.
С блогами — не хочет, говорит ошибка url блога.
В конфиге для руских урлов блога поставил true, кеш чистил.
avatar
хм, у меня все работает. несколько раз проверил перед аплоадом
avatar
Просмотрел момент, русские нормально все.
Украинские буковки не кушает: і, ї, и т.д.
Можно как-то пофиксить?
avatar
да можно. нужно добавить их в регулярные выражения. хм, есть по этому поводу отличная идея. попробую реализовать в будущей версии.
avatar
везде где в коде плагина встерчается а-яё, заменить на а-яёіїєґ. Вроде должно помочь
avatar
Спасибо. Использование пробелов в url блогов и логинов таким же методом добавить можно?
avatar
насчет пробелов не советую. могут возникнуть проблемы. Ибо все-таки веб это UNIXlike системы, и пробелы в путях много где воспринимаются как окончание ссылки
avatar
кстати есть еще более более простой вариант, разрешающий любые символы относящиеся к буквам, но вы рискуете получить кучу юзеров с неадекватными именами.
а-яё заменяем на \pL
Работает в PHP с версии 5.1.0
avatar
Несколько замечаний:
почему используется делегирование вместо наследования? Ведь делегирование автоматически обламывает остальные плагины, использующие данные классы. livestreet.ru/blog/dev_documentation/4499.html

вставки вида
require_once(Config::Get('path.root.server') . 
'/classes/actions/ActionRegistration.class.php');
require_once(Config::Get('path.root.server') . '/plugins/rusurls/include/func.class.php');
делать не нужно, т.к. файлы из каталога include автоматически подцепляются, а классы экшенов сами подгружаются.

в конфиге
Config::Set('plugins.rusurls.blog', false);
лучше заменить на
$config['blog']=false;
  • ort
  • 0
avatar
Спасибо за подсказки. Переписал согласно рекомендациям. Обновил в каталоге и по прямой ссылке
avatar
Спасибо за плагин, не подскажите как адаптировать его под плагины микротопиков и компаний?
1. В микротопиках на страницах http://***.ru/profile/РусскийЛогин/favourites/micro/, вылетает ошибка
Fatal error: Call to a member function getId() on a non-object in /var/www/***/plugins/micro/classes/actions/ActionProfile.class.php on line 99

2. В плагине компаний на странице отзывов в профиле http://***.ru/company/user/РусскийЛогин/feedbacks/, выдает 404 ошибку.
avatar
Как то решили проблему? Похоже, что при создании топика от пользователя с русским ником та же проблема — невозможно зайти на страницу топика, высвечивает ошибку

Ошибка: 404
К сожалению, такой страницы не существует. Вероятно, она была удалена с сервера, либо ее здесь никогда не было.
avatar
Проблема решена, к сожелению, конкретного кода не подскажу т.к. от плагина даже родных экшенов не осталось (так сильно он переработан).

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

К примеру, в родном файле движка classes/actions/ActionProfile.class.php русские урлы добавляются так (готовый код)

		$this->AddEventPreg('/^[\S\-\_]+$/i','/^(whois)?$/i','EventWhois');				
		$this->AddEventPreg('/^[\S\-\_]+$/i','/^favourites$/i','/^comments$/i','/^(page(\d+))?$/i','EventFavouriteComments');			
		$this->AddEventPreg('/^[\S\-\_]+$/i','/^favourites$/i','/^(page(\d+))?$/i','EventFavourite');	


p.s.: я не программер, объяснил как смог
avatar
Забыл добавить. Изменения вносились не в плагин «русские URLs», а в плагины, которые не работали с русскими урлами в, том числе, и плагин «компании».
avatar
Спасибо! Буду пробовать :)
avatar
Ура! Все получилось!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.