Изобрел очередное колесо - а именно замену старому доброму компоненту translit.
Все тоже самое, только yTranslit работает через запросы к Api Яндекса, и мы получаем красивые дружественные урлы. Например:
pagetitle: Обратная связь
alias: feedback-contact
//
pagetitle: Спортивный кружок
alias: sports-circle
//
pagetitle: Главная страница сайта текстильного завода
alias: the-main-page-site-textile-mill
Не знаю, как вам, а лично мне очень надоели кривые транслитирированные имена у страниц сайта. Так, по моему, будет гораздо лучше.
Также обратите внимания, что Яндекс накладывает некоторые ограничения на запросы. Хотя, 10 000 запросов и\или 1 000 000 символов за сутки, думаю, хватит всем для работы с ресурсами.
Настройка ровно одна: friendly_alias_ytranslit_url, в которой вы можете поправить направление перевода. По умолчанию это ru-en. Не забываем также написать что-нибудь и в настройке friendly_alias_translit, например russian.
Если хотите временно вернуться к обычному translit - поправьте 2 параметра в системе: friendly_alias_translit_class и friendly_alias_translit_class_path. Нужно просто убрать букву y.
Пакет можно качать из репозитория Simple Dream. Исходный код на Github.
отличное расширение! Я на данный момент пользуюсь плагином через google translate, отключал в настройках сайта automatic_alias и плагином проверял поле alias, если пустое — плагин заполнял.
Почему-то мне кажется, что на запрос «Текстильны завод» поисковик посчитает URL tekstilnyj-zavod более релевантным, чем textile-mill. Потому что в Рунете не принято называть завод mill-om.
Шагу не ступить без мысли «а как там поисковики?»
Меня греет надежда, что они все таки смотрят в контент, а не на url. Иначе посты Хабра вообще бы не индексировались — там все урлы ниочемными циферками.
Василий к сожалению реалии таковы, что магазинам торгующим в рф приходится под яндекс подстраиваться — а это кривой транслит вместо красивого перевода)). ytranslit замечательно пойдет для сайтов ориентированных не на ру нет.
Да не вопрос — каждый сам выберет, что ему лучше.
Так и я о чем)))
Александр не все сайты торгуют, не всем нужна релевантность в ру нете есть, еще европа, где наш транслит выглядит тарабарщиной.
© 1981 Билл Гейтс: «640КБ должно быть достаточно для каждого»
© 2012 Василий Наумкин: «10 000 запросов за сутки, думаю, хватит всем для работы с ресурсами»
Что же будет, когда эти 10000 запросов будут исчерпаны? Алиас не будет генериться, или же будет простой транслит? Например необходимо обновлять каталог раз в неделю, а там около 100к позиций.
Алиас генерируется один раз, когда он пуст. Если он у ресурса уже есть — запроса не будет.
Если вводить алиас вручную, или задавать при обновлении — запроса тоже не будет. Ну и в последней версии добавился параметр, который позволяет указать регулярку, чтобы подходящие под нее pagetitle не слались на Яндекс для перевода.
В конце концов, при любой ошибке алиас будет русский, как pagetitle и вы легко найдете эти ошибочные алиасы простым скриптом.
Минус: если в базе нету нужного слова (а это может быть что угодно — сокращение, аббревиатура и прочее), то возвращается тот же результат. Это косяк Яндекса конечно, но думаю стоит в компоненте сделать проверку, не то ли значение вернулось от Яндекса. Например, «Трололо». Он не переведёт.
Надо самому назначать alias для таких слов.
Столкнулся с такой же проблемой. Слово есть, а перевода у Яндекса нет. Предлагаю делать warning в журнал ошибок для URL часть которых не корректно перевелись. Проверку осуществлять regexp на наличие русских символов в alias'е который вернул Яндекс.
Кстати, не хотите поправить эту штуку на новый API яндекс переводов? Гляньте: http://translate.yandex.net/api/v1/tr.json/translate?lang=ru-en&text=
Пока нет времени, убрал пакет из репозиториев.
Там в API практически ничего не поменялось, добавили только обязательный ключ и перешли на протокол HTTPS. Можно и в текущей версии в настройках поменять параметр friendly_alias_ytranslit_url с
на
Ключ получать здесь http://api.yandex.ru/key/form.xml?service=trnsl
Не работает yTranslit: service unavailable. Request: https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20130703T230630Z.e27da959345974db.199a81981a258bc94748fa6aaf056d06c3a017e8&lang=ru-en&text=наши-работы. Response:
Видимо из за https.
Да, в параметре friendly_alias_ytranslit_url URL должен быть обязательно начинаться с https
Хотя https и есть, из-за автозамены url сразу не заметил. Сама ссылка работает. CURL установлен? Попробуйте после этой строчки https://github.com/bezumkin/yTranslit/blob/master/core/components/ytranslit/model/modx/ytranslit/modtransliterate.class.php#L53 добавить еще и
Сама ссылка рабочая curl установлен не понимаю почему возвращается пустой результат
Ну поставьте тогда временно сразу после curl_exec
Может детально ошибку опишет
странно на денвере не работает. на реальном хостинге все норм. в чем проблемма?
1. Проблемы с сертификатом 2. Не подгружаются библиотеки openssl 3. curl для Denwer скомпилен без поддержки openssl, если такое возможно Это первое что пришло в голову. Думаю curl_error($ch) выдало бы информацию в чем проблема.
а что случилось с ytranslit, нельзя скачать в репозитарии MODX?
Читай комменты выше.
Обновлённый yTranslit вернулся в репозиторий.
Нашелся баг, modx 2.2.9 При попытки изменить Таймаут в секундах (у меня сервер в нидерландах, там 1 мало) у нас не дает изменить значение 1, кидает ошибки
Удали эту настройку и обновись на новую версию - починится.
Все отлично работает, спасибо!
Установил из репозитория yTranslit Саппор хостинга уверяет что Curl скомпилирован с openssl, что подтверждается phpinfo()
но в логах при сохранении документа выводит:
как продиагностировать ошибку, от чего такое получается ?
Попробуй увеличить таймаут запроса.
curl_error($ch) пишет в лог: SSL certificate problem: unable to get local issuer certificate Для отключения проверки сертификата в файле core/components/ytranslit/model/modx/ytranslit/modtransliterate.class.php сразу после:
добавить:
Понял, постараюсь обновить компонент.
Не работает, прошу помощи! modx 2.2.6 Denver Ключ от Яндекса получен cURL support enabled SSL Version OpenSSL/1.0.1c
translit - работает, а ytranslit - нет. Оставляет кириллицу как есть :( Где копать?
Пробовал на хостинге на modx 2.2.13 Там SSL Version NSS/3.12.4.5 Но translit там не стоит (он нужен для ytranslit?) В общем, тоже не работает.
Что я не сделал?
Непонятно то что ты сделал, так что говорить что еще не сделал совсем не ясно. Перечитай внимательно статью, вдумчиво и вспомни и проверь что сделал и не сделал.