Дек
16
2009

Как в drupal убрать двоеточия и звёздочки в подписях к элементам форм

На работе одному из клиентов делал опросник (webform) и им не нравилось, что вопросы выглядят примерно так: «Сколько Вам лет?:». Т.е. двоеточие после знака вопроса тут явно не в тему. Плюс если вопрос обязателен, то еще и красная звёздочка в конце добавляется. И это касается не только вопрос в опросниках, но такая же ситуация будет и в форме контактов и в любой другой форме. Есть два решения проблемы. Ниже о них и расскажу.

Начал я сперва изучать исходники с целью, чтобы найти функцию типа theme_label (ведь текст вопроса или подпись к инпуту формы вставлен именно в label). И затем я планировал просто написать свою имплементацию этой функции в файле template.php внутри папки с моей темы. Но функцию theme_label я не нашёл, но затол обнаружил функцию темы theme_form_element($element, $value) в файле includes/form.inc Из неё стало понятно, что функции theme_label не будет. Т.к. в API форм Drupal введено понятие элемента формы и именно в нём (элементе) отрисовывается форма ныжным образом.

И в этой функции есть такие строки:

if (!empty($element['#id'])) {
$output .= ‘ \n»;
}
else {
$output .= ‘ \n»;
}

И тут мы как раз и видим, что  в label подставляется текст, обрабатываемый через шаблон !title: !required Который можно задавать через перевод интерфейса (т.е. олн обрабатывается через функцию t(»)). Поэтому сразу напрашивается первое решение: заходим в «Администрирование» > «Перевод интерфейса» > «Поиск». Для поиска вводим фразу !title: !required и затем задаём её перевод просто как !title Но тут есть недостаток. Это самый простой способ, но не совсем правильный. Если ваш сайт будет иметь так же и англоязычную версию, то в ней по-прежнему после label будет идти двоеточие. Поэтому для более правильным будет написать свою имплементацию функции theme_form_element. Для этого вы можете скопировать оригинальную функцию из файла includes/form.inc в файл template.php в вашей теме. При этом поменяйте название функции в соответствии с названием вашей темы. Например если Ваша тема называется «mytheme», то функция должна называться mytheme_form_element.

Можно использовать и другие названия для функций. Для этого рекомендую поставить и включить модуль для drupal theme developer из проекта devel. Тогда вы сможете просто подводить мышкой к разным элементам на странице, а этот замечательный модуль будет вам подсказывать возможные названия функций для этого элемента.

posted in drupal by yas375

Follow comments via the RSS Feed | Оставить комментарий | Trackback URL

2 Comments to "Как в drupal убрать двоеточия и звёздочки в подписях к элементам форм"

  1. Дима wrote:

    Как это же сделать в drupal 7?

  2. ShiftDel wrote:

    ‘#prefix’ => ‘Hello’ ))

Leave Your Comment