• Автор:

    Flesha
  • Добавлено:

    сен 18, 2014
  • Комментариев:

    1
  • Просмотров:

    1370

Хак Правильное отображение русскоязычных значений

Хак Правильное отображение русскоязычных значений

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

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

Изменяем:
1. Ищем в файле \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>";

2. Далее ищем в файле \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[&#39;allow_alt_url&#39;]) $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» (пробел), он всё равно меняется. В общем кому как больше нравится ^_^

Автор: DomiTori
CMS: любая версия DLE
Вернуться

Комментарии:


  1. strel → 15 декабря 2014 00:41
    Привет. А в tags - как это же проделать? спасибо
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.