Ошибка в формировании URL
17.02.2011Голосование
Голосование на
Ошибка в формировании URL
Всего проголосовало:
2
| Тип | Ошибка |
| Состояние | Исправлено |
| Приоритет | Высокий |
| Версия | 4.27 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | Константин |
| Исполнитель | Блоголётчик |
При русском заголовке поста получается "пустой" URL вида
http://сайт.com/папка/-.htm , т.е. делать блог на двух языках не получится, или вбивать урл руками. Этот костыль
идет еще как минимум с 3.49, как я недавно обнаружил.
P.S. А зачем такой огромный шрифт в тикетах?!
Имхо 14px вполне достаточно...
RSS комментарии к этой записи
Рубрики: Ошибки
← Ранее Ошибка в настройке плагинов
Позже Ошибка редактирования тикетов →
Комментарии (28) на запись “Ошибка в формировании URL”
Оставить комментарий
Сейчас посмотрел генерацию урла, там стоит условие:
if (litepublisher::$options->language == 'ru') $s = $this->ru2lat($s);
То есть предпологается, что транслитерация производится при русском,, что вполне логично - странно было бы ее делать для японского, хотя это гипотитическое предположение. Можно это дело поменять на настройку, либо как вариант оформить транслитерацию в виде плагина, кторый бы включался/отключался. Ссейчас ттранслитерация в ядре.
Есть еще мало используемая и кажется с какими то проблемами (если не ошибаюс при повторном редактировании) урла в виде процентов.
Проблему понял, подумаю как разрулить малой кровью. Либо можешь придумать какое то ологичное решение?
Насчет решения... сложно сказать, я ведь не програмер. Может быть проверять заголовок поста при формировании урла, и если все в диапазоне [AZaz] плюс доп. символы, то ничего не трогать, в противном случае транслитеровать.
Мне все-таки логичнее делать проверку в любом случае, подобно проверке урла на валидность, как писал выше. Алгоритм примерно такой:
- проверяем на латиницу - [a-zA-Z0-9] =>
если латинские символы есть, то формируем урл из них;
проверяем на кирилицу - [а-яА-Я0-9] =>
если кирилические символы есть, то транслитеруем и формируем урл из транслитерации;
Note: если заголовок смешанный, то русская часть потеряется, но все равно получится не пустой урл. В теории можно формировать урл в два этапа, сначала из той латиницы, что (если) имеется, потом из кирилицы, что (если) имеется, и в итоге каким-то образом состыковывать полученные части. Но это, наверное, будет технически трудоемко, особенно если учитывать позиции тех и иных символов, и как мне кажется, не слишком оправдано.
генерируем урл, например, по принципу дата-месяц-год-час-минута-секунда-id поста (например 12-september-2010-14-29-38-003), или ремдомная комбинация букв и цифр плюс дата-время... тут возможно масса вариантов, лишь бы названия не могли совпасть в принципе...
При таком раскладе всегда будет получаться какой-либо уникальный урл поста независимо от языка.
P.S. При отправке коммента зависает загрузка всего, что после кнопки Отправить, что-то в футере, как я понимаю. Не мог отправить коммент, пока не остановил загрузку страницы.
Проверка на русские буквы затруднительна: используется кодировка utf-8, где русские буквы это два символа, а латиица один символ и для регэкспов надо будет предварительно конвертировать строку в windows кодировку, а потом обратно.
Думаю, что описанные тобой правила подойдут для плагина, так как я их не могу назвать универсальными правилами.
В настоящее время для урла есть шаблон, ккоторый может не включать заголовок поста, а состоять из даты или любых других свойст поста. По умолчанию шаблон /[title].htm но можно сдлать например /[year]/[month]/[id].htm или нечто другое. Я сегодня поправлю генерацию урла - добавлю события для возможного плагина.
Комментирование проверю после разлогинивания: залогинненым под админом все работает
Ну и пускай тогда латиница будет латиницей, а все остальное кодируется. Все лучше чем пустой урл. Это, я так понимаю, только для аглицкой версии?
Кстати, вот чего тормозит - pagead2.googlesyndication.com - не может до нее достучаться. Может, это от меня только?
Уже заливаю 4.28, сейчас протестируем. Спасибо!
Оффтоп: А у меня только визуальное ощущение или движок потяжелел с 3-й версии? Визуально 2.80 с тремя сотнями постов летает веселее, чем пустая четверка (все на файлах). Плагинов везде по минимуму. И заметил, что памяти стал отъедать до 7Мб... 2-3 мне больше нравилось, хотя я понимаю, что чудес не бывает, но все же...
Опробовал по серьзному :):
Все по дефолту, кроме галочки урлкодирования.
Тест 1
Со включенной галочкой настройки/ссылки/урлкодирование из заголовка
Мой 2 пост на русском - Testing Blogolet
делает урл
http://сайт.ком/428/%0%9%0%%0%9%202%20%0%%0%%1%81%1%82%20%0%%0%0%20%1%80%1%83%1%81%1%81%0%%0%%0%%20-%20esting%20logolet.htm
Из Testing Blogolet
делает
http://сайт.ком/428/esting%20logolet.htm
Тест 2
С включенным плагином транслита и включенной галочкой урлкодирования:
Мой 3 пост на русском - Testing Blogolet
http://so.fetishcharm.net/428/oj%203%20post%20na%20russkom%20-%20esting%20logolet.htm
Тест 3
С включенным плагином транслита и выключенной галочкой урлкодирования:
http://so.fetishcharm.net/428/moj-4-post-na-russkom-testing-blogolet.htm
Просто супер! Спасибо!
Попутно:
в en.admin.ini line 49 - русский, надо бы deficons = "Default icons"
и еще где-то русский засел, 2 и 3 стр. снизу в меню Files кракозябами.
Плагин Admin history - опять ерунда со ссылками, вида
http://сайт.ком/428http://сайт.ком/428/admin/plugins/
Backup to Dropbox и Oldest posts теперь работают нормально.
И старая мелочь: убираем из темы верхнее меню - нет навигации в админке. Володя, ну посади пожалуйста это меню жестко в сайдбар в режиме адинистрирования!
Ресурсы: 4.21..5.2MB | 0.09..0.38 Sec
Время, видимо от загрузки сервера пляшет (шаред)
Спасибо за перечен недочетов - поисправляю, была для англ версии продублирована строка themefiles - меню views/themefiles было подпорчено. Вновом обновлении испавлю англ меню.
Насчет фиксированного меню - не совсем понял, что удаляется и что где должно быть
Если мне не нужно верхнее меню я закомментирую стр. 18-20 в index.tml
<div id="topmenu">
$template.menu
</div>
И в админке верхнее меню пропадет тоже. Со всей навигацией по админке. Поэтому предлагаю все, что сидит ныне в верхнем меню, посадить в отдельное меню в сайдбар, которое появляется всегда в режиме администрирования и видно только в админке. А вообще это старая наша старая тема о автономной, независимой от темы и неизменяемой админке. :) Сейчас она вполне хороша - так вот "зашить" ее намертво в движок и убрать из виджетов все не относящееся к администрированию, а темы пусть меняются сами себе...
Главный сервер - ngings для отдачи статики, для php поднимается апач, который дергает скрипты, ну и соответственно так был сконфигурирован php. Апач не кеширует статику, а ngings берет почти всю память под кэш статики и скорость сервера возрастает
Подумываю вообще о плном отказе от аача, только ngings, но в таком режиме я никогда движок не тестировал, за неименем ngings
Про верхнее меню - думаю это излишне, для админки можно оставить тему с темой с меню, а для других видовиспользовать любые другие темы.
Разруливать отсутствие меню в теме я не планирую - остается на ответственности автора темы