» » » Правильное отображение русскоязычных значений в доп полях вида перекрёстные гиперссылки [любая версия DLE]

Правильное отображение русскоязычных значений в доп полях вида перекрёстные гиперссылки [любая версия DLE]

Название: Правильное отображение русскоязычных значений в доп полях вида перекрёстные гиперссылки
Автор: DomiTori
CMS: любая версия DLE

Описание:
Данный хак исправляет неправильное отображение русских слов в дополнительных полях вида перекрёстные гиперссылки, выводимые в краткой и полной новости.

Никакой магии, всего лишь определил откуда скрипт берет ссылку в дополнительном поле и поменял кодировку вывода ссылки в новость.

Ищем в файле \engine\modules/show.full.php (в DLE 10.3 это 1336-1337 строки)
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";

В разных версиях DLE содержание строки может быть разным, нас же интересует данный код
urlencode( $value2 )

Меняем два раза значение на
urldecode( $value2 )

И получаем следующее
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urldecode( $value2 ) . "/\">" . $value2 . "</a>";
else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urldecode( $value2 ) . "\">" . $value2 . "</a>";


Далее ищем в файле \engine\modules/show.short.php (в DLE 10.3 это 480-481 строки)
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";

Опять же разных версиях DLE содержание строки может быть разным, нас же интересует данный код
urlencode( $value2 )

Меняем два раза значение на
urldecode( $value2 )

И получаем следующее
if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urldecode( $value2 ) . "/\">" . $value2 . "</a>";
else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&amp;xf=" . urldecode( $value2 ) . "\">" . $value2 . "</a>";


Вот и всё. Кому интересно немного информации
urlencode — URL-кодирование строки. Эта функция удобна, когда закодированная строка будет использоваться в запросе, как часть URL, также это удобный способ для передачи переменных другим страницам.
urldecode — Декодирование URL-кодированной строки. Декодирует любые %## кодированные последовательности в данной строке. Символ "плюс" ('+') декодируется в символ пробела.

Кстати можно сделать немножко по-другому, вместо
urldecode( $value2 )

вставить
rawurldecode( $value2 )

Эффект будет таким же, и хоть заменив код таким образом символ "+" не должен меняться на "%20" (пробел), он всё равно меняется. В общем кому как больше нравится ^_^


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии

4

Falco

Команда сайта 17 сентября 2014 00:56
Спасибо, пригодитцо smile
4
Вы автор? Бред, автор совсем другой человек. Эта запись была на dle-faq.ru
Влюблённая Офелия плыла себе вдаль
Сияла ночь, звенела земля.
4
Хак хороший, но авторство не надо себе присваивать...
4
Цитата: Gameer
Вы автор? Бред, автор совсем другой человек. Эта запись была на dle-faq.ru

Полностью согласен! Админы поправьте, а этого многоуважаемого предупредить.
4
Цитата: Gameer
Вы автор? Бред, автор совсем другой человек. Эта запись была на dle-faq.ru

постараюсь быть максимально краток и распишу все по полкам.
1. указал себя в поле "автор" ибо это поле нужно чем-то заполнить.
2.я автор, потому что сам дошёл до этого, перековыряв код и читая статьи про кодировки.
скажу более того, я облазил интернет, задал вопросы на разных сайтах, где так и не получил ответа.
А вот кстати мой вопрос на этом вашем хвалимом сайте и ровно за год ниодного ответа. более того, я на этом сайте ещё ни разу не получил ни одного ответа на свой вопрос.
Вот где я прочел про urldecode и urlencode и лишь благодаря этому сайту у меня получилось исправить данную проблему. Прежде чем тут суд устраивать, в личку написал бы с ссылкой на сайт, на котором видел реализацию этого хака, там бы и разобрался кто автор чего.
впервые решился поделиться с публикой своими наработками и тут на тебе.
Я вот практически адаптировал один чат для dle под версии 10.1-10.3 + исправил два известных мне бага и подумал над тем чтоб выложить, так в автора адаптации кого писать, тебя Геймер, чтоб не возникал?
4
Цитата: DomiTori
впервые решился поделиться с публикой своими наработками и тут на тебе.

это ни для кого не секрет, все подавно знают как изменить вид ЧПУ. Я считаю, что ты тупо "прочитал" это на dle-faq, у тебя "вау.. получилось", и пошёл себя в авторы записывать. А если самостоятельно допёр, то пожалуй, молодец, но ты не первый. Отсюда наводящий вопрос, а зачем изобретать велосипед, когда он уже есть?
4
я ни на каком faq. ничего подобного не видел,. ко мне человек вконтакте обратился с двумя просьбами: помоч подключить юпод в дле и исправить проблему с корявым отображением ссылок с доп полей. с первым помог, о втором же в очередной раз облазил инет, пусто. задумался, а вправду, как. результат вот. сам сайт на utf8 держу изза этого бага.,вобщем кому что не нравится ходят лесом, кому помог - всегда пожалуйста
4
Доброе время суток !
Подскажите - а как сделать для тегов ? ща поясню.

Вообщем у меня на сайте при переходе по русскому тегу - в строке браузера вот такие иероглифы tags/%D1%E1%EE%F0%ED%E8%EA+%EF%F0%EE%E3%F0%E0%EC%EC/ а фактически - должно быть так ! tags/сборник программ/ знаю что не чего страшного в этом нет, но надо что бы было нормально по русский. DLE 10.2 Win - 1251
4

DomiTori

Посетители 5 октября 2014 04:59
Цитата: malenovski
Доброе время суток !
Подскажите - а как сделать для тегов ? ща поясню.

Вообщем у меня на сайте при переходе по русскому тегу - в строке браузера вот такие иероглифы tags/%D1%E1%EE%F0%ED%E8%EA+%EF%F0%EE%E3%F0%E0%EC%EC/ а фактически - должно быть так ! tags/сборник программ/ знаю что не чего страшного в этом нет, но надо что бы было нормально по русский. DLE 10.2 Win - 1251


делаем по аналогии но с другим кодом.

Ищем в файле \engine\modules\show.full.php (в DLE 10.3 это 610-611 строки)

urlencode( $value )


Меняем два раза значение на
urldecode( $value )


Далее ищем в файле \engine\modules\show.short.php (в DLE 10.3 это 320-321 строки)

urlencode( $value )


Меняем два раза значение на
urldecode( $value )


не замечал что с тегами такая же беда, ну да ладно
4
Спасибо огромное вы реально мне помогли !
Мне хватило заменить только это !
\engine\modules\show.short.php
urlencode( $value )

Меняем два раза значение на
urldecode( $value )

Значит трогать show.full.php не обязательно ?

Да к стати не подскажете как быть с этим ?
/tags/сборник%20программ/

вот это стало в место пробела %20 а как допустим заменить на дефис ?

Спасибо !
4

DomiTori

Посетители 5 октября 2014 14:27
Цитата: malenovski
Значит трогать show.full.php не обязательно

show.short.php выводит на сайте теги в короткой новости, тоесть на главной странице сайта. в самих новостях же выводит теги файл show.full.php.
Не обязательно, но и не повредит)
4
Да - действительно ! что то я не посмотрел :) проверил только в краткой новости - ещё раз ( БОЛЬШОЕ ВАМ СПАСИБО ! )
4

DomiTori

Посетители 5 октября 2014 16:39
Цитата: malenovski
Да - действительно ! что то я не посмотрел :) проверил только в краткой новости - ещё раз ( БОЛЬШОЕ ВАМ СПАСИБО ! )

всегда пожалуйста)

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.