Как избавиться от %D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F?

Главные вкладки

Аватар пользователя Химический Али Химический Али 23 февраля 2009 в 11:33

Создаю дополнительные поля в профиле пользователя, используя стандартный модуль profile. Значения полей на русском языке. Хочу реализовать функционал "интересов", когда пользователь перечисляет свои интересы у себя в профиле и, кликнув по ссылке на "интерес", можно получить список пользователей, имеющих такой же. Все это реализуетсяи работает, но есть косяк: это url-ы, которые генерирует при этом друпал. Текст интереса он передает прямо в url, а т.к. тот на русском, то он перекодирует слово в абракадабру типа %D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F.

Вопросы

а) Как этого избежать?
б) Можно ли хотя бы транслитерировать это каким-то образом?
в) Как обрисовать проблему на drupal.org чтобы они к выходу 7 версии придумали решение?

Комментарии

Аватар пользователя yugin yugin 23 февраля 2009 в 11:59

хммм, как-то непривычно от вас вопросы тут видеть. обычно наоборот решения выкладываете. но тем не менее, к вопросу присоединюсь.
и добавлю к п.3 - а в чем сложность в описании проблемы? С переводом на английский могу всегда помочь.

Аватар пользователя Geldora Geldora 23 февраля 2009 в 12:36

+ 1000!!!

Очень важная проблема, может и поближе, чем к 7ке сделают?

п.2 Я когда-то давно задавала такой вопрос, ответа никто не дал, как это сделать, вроде через новые токены, а потом в пазауто. http://drupal.ru/node/20617

Если найдете решение, выложите пож-ста, многие будут благодарны!

Аватар пользователя alexandr.poddubsky alexandr.poddubsky 23 февраля 2009 в 12:43

б) Можно ли хотя бы транслитерировать это каким-то образом? сами же и ответили-- модулек есть транслитерации. жуткий правда. еще его не пробовал тока глянул-ужаснулся-оставил на потом.

Аватар пользователя 10banov 10banov 23 февраля 2009 в 13:04

А с помощью чего реализуется вся система показа людей с одинаковыми интересами?
Где-нибудь хранится сам путь до i-го интереса?

Если храниться в $your_path, то можно взять код из pathauto.inc (132 строка - функция преобразования пути)
Наверно можно просто использовать pathauto_cleanstring($your_path)
А можно и выдрать оттуда код транслитерации:

$output = $your_path;

static $i18n_loaded = false;
static $translations = array();

// находим файл с правилами транслитерации
if (!$i18n_loaded) {
 $path = drupal_get_path('module', 'pathauto');
 if (is_file($path .'/i18n-ascii.txt')) {
  // перегоняем все в массив замен
  $translations = parse_ini_file($path .'/i18n-ascii.txt');
 }
 $i18n_loaded = true;
}

// заменяем все вхождения массива $translations в строку $output
$output = strtr($output, $translations);

на выходе $output получиться в транслите.
В той же функции pathauto_cleanstring() идет обработка слешей.

Аватар пользователя gumk gumk 23 февраля 2009 в 13:47

а надо это? поисковики се равно прочтут ваше слово "Россия", а современные браузеры покажут его и так правильно

Аватар пользователя PVasili PVasili 24 февраля 2009 в 10:33

А как такую "эстетичную" ссылку будет видеть человек у которого нет шрифтов с поддержкой кирилицы(ифрита,фарси, и т.д.)?

Аватар пользователя PVasili PVasili 24 февраля 2009 в 13:53

Вариантов транслитерации только же сколько и кодировок в великом и могучем... Начиная от почтовой, гостовской и т.д.
Лучше уж так Wink Чем увидеть что-то непотребное на русском после двойного преобразования.

Аватар пользователя PVasili PVasili 25 февраля 2009 в 11:51

Как вы представляете себе кастомизируемую ссылку? Один захочет свой URL по госту, другой по почтовому транслитерировать в итоге - половина людей увидет в броузере абсолютно разные адреса Smile

Аватар пользователя seaji seaji 10 ноября 2015 в 11:46

Нужно менять схему базы данных.
В профилях есть только две таблицы profile_fields и profile_values.
Тупо нет места, где хранить транслитерированный url.
К тому же, как сказал Дрис на последнем своем выступлении на DrupalCon DC (http://buytaert.net/state-of-drupal-presentation-march-2009), модуль profile будет успешно похоронен в связи с использованием "fields in core".

Уж и надгробную плиту сделали (Взято из презентации Дриса).