Ошибки в алгоритме генерации ЧПУ
08.05.2011Голосование
Голосование на
Ошибки в алгоритме генерации ЧПУ
Всего проголосовало:
3
| Тип | Ошибка |
| Состояние | Исправлено |
| Приоритет | Высокий |
| Версия | 4.58 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | Барсук Ленивый |
| Исполнитель | Блоголётчик |
Заголовок 'Эргономика таба "Метки"' при преобразовании в URL получился ergonomika-taba-metkiquot.htm, что очевидно неправильно и не человекопонятно.
Все html-entities и прочие коды, не входящие в алфавит, должныотфильтровываться до построения URL. Тестовая строка
Вспоминая бессмертное «Жить или не жить, вот в чем вопрос…»
RSS комментарии к этой записи
Рубрики: Ошибки
Комментарии (20) на запись “Ошибки в алгоритме генерации ЧПУ”
Оставить комментарий
<code>Вспоминая бессмертное «Жить или не жить, вот в чем вопрос…»</code>
<literal>Вспоминая бессмертное «Жить или не жить, вот в чем вопрос…»</literal>
Блоголётчик пишет:
И еще опять же про рендерер — посмотри на то, как показывается текст Эргономика таба "Метки" в списке тикетов и прочих местах, как <code>Эргономика таба "Метки"</code>, а не «Эргономика таба „Метки“»
Блоголётчик пишет:
И текст ссылки, и сам URL показывает, что результаты - неудовлетворительные.
Кроме этого, надо отметить, что
Перефразируя бессмертное — «Менять иль не менять, вот в чем вопрос…»
в
PerefraziruJa_bessmertnoe__MenJat_il_ne_menJat,_vot_v_chem_vopros.html
можно считатьбезупречным - все проблемные места обойдены
Блоголётчик пишет:
И это - неправильно, транслитерировать надо всех, кто не полностью ангельскийБлоголётчик пишет: Туда и смотрел, и не увидел языконезависимой транслитерации, только ru2lat()
Про другие языки - это из личного опыта или теоритическое предположение? Вообще то движок сейчас только на двух языках, таблицами транслитерации (если таковые вообще существуют кроме русского) должен заниматься переводчик на свой язык. Нет языка - нет таблицы.
проверка есть:
if (litepublisher::$options->language == 'ru') $s = self::ru2lat($s);
в методе encode
Блоголётчик пишет:
Из личного, теоретики в соседнемм вагоне. Я, вообще-то, удивлен методологией реализации транслитерирования (с чисто программерской стороны, глядя на весь остальной идеологически-выдержанный код). "Все что может - случается, что не может - случается тоже, но реже". Как можно закладываться изначально на один язык, если реализация под любое количество (алгоритмически правильное) стоит тех же трудов в коде (чуть больше только для подумать-спланировать)
Какой смысл двигать в ненаших интернетах (локализация интерфейса - наживное, они могут начинать жить и с английским), если для немецкого, испанского, скандинавов та же генерация урлов утебя принципиально ущербна? Транслитерационные словари накидать не проблема, их есть у меня
Надо, конечно, признаться, что большинство регэкспов были заимствованы из wordpress - кому как а мне регэкспы даются очень тяжело. Больше каких либо косяков я не замечаю - а что там не так?
Блоголётчик пишет:
На каждый язык дополнительный if?
К результату транслитерации как раз претнезий нет, для русских заголовков - вполне ничего. Проверочная фраза из 2307 коммента даст тут сейчас красивый линк?
Блоголётчик пишет:
Только зачем их выделять в отдельную сущность, если все равно это задача того желокализатора, что и интерфейс переводит? И при нынешнем коде даже появление транслитерационного словаря не приведет к автомагической транслитерации, а хорошо бы - чтобы приводил, для любого языка
Да вобщем то без разницы - if, switch .. case или ассоциативный массив - зависит отколичества вариантов. Эта часть кода (генерация урлов) не нуждается в какой либо оптимизации по скорости или памяти, так как выполняется редко.
Участков кода, нуждающихся в пересмотре достаточно много и модуль генерации урлов стоит далеко не на первом месте - проблемы решаются по мере их поступления. Как например - либо заниматься подчищением кода этого модуля или прикрутить пользовательские страницы. Первое не приведет ни к чему - не появятся новые фичи, не исправятся ошибки, ни появятся новые локалицзации, когда как второе сущепственно улучшит движок, а по трудозатратам примерно одинаково. Движок далеко не идеал и вобщем здании (т.е. набора фичей) приходится выставлять приоритеты. Например сайт нуждается в улучшении, безнадежно отстает документация, каталог тем, сайт на английском, подпроект магазин/каталог товаров и тп. и т.дд.
С двойным перекодированием названия поста получилось нехорошо: для всех редакторов делается замена html символов чтобы не порушить html. Сейчас поправлю.
Чисто мысль: поделиться на двек редакции
1. Блоговая
2. Общего назначения
Ядро одно, а вот набор плагинов может быть (и должен) разным. Мне вот LP смотрится как блог, но для полноценного блога не хватает того-сего по мелочи... И при этом я не фапаю на SEO, просто пишу тексты
http://адрес_сайта.ru/index.php?url=/ - это для того, чтобы попасть на главную страницу сайта. Подскажите как с этим бороться можно, чтобы было как у людей http://адрес_сайта.ru/ переход на главную и дальше. Сами чпу ссылки генерируются исправно, но попасть на страницу на которую ведет эта ссылка невозможно
Для начала надо убидится, что стоит сервер apache с модулем rewrite - тогда возможны виртуальные адреса. Если движок не смог во время инсталяции обнаружить модуль rewrite, то появляется галочка, которую следовало бы отметить вперед инсталяцией. Если вы уверены, что модуль rewrite имеется, то можно в админке обслуживание/запуск выполнить скрипт:
litepublisher::$site->q = '?';
после чего адреса станут "нормальными", а вот если rewrite вовсе нет, то такое действие приведет к краху сайта