Есть поле "дата рождения" типа "дата" с виджетом "выбор из списка".
на странице node/add оно отображается в виде fieldset с legend и 3 select-ами: месяц, дата, год.
мне нужно:
1) чтобы шло не месяц-дата-год, а дата-месяц-год
2) убрать fieldset и сделать сначала legend и потом сразу select или container
Помогите как это сделать!?
Комментарии
Помогите перевести статью
http://codekarate.com/blog/removing-fieldset-drupal-7-date-field
Помогаю.
Убираем из fieldset поле даты в Drupal 7
Это - относительно легко, но я ломал голову над этим дольше, чем было необходимо. Бывают ситуации, когда нужно, чтобы поле даты не было вставлено внутрь fieldset. В одном обсуждении на Drupal.org (http://drupal.org/node/1467712) предлогают патч к модулю даты. Я думаю, что намного лучше просто использовать слой темы, так как оно для этого и предназначено... переопределять вывод (имеется ввиду вывод кода - прим. пер.) темы. Основная проблема для большинства людей, в том, что им не комфортно писать PHP код или они не уверены какие функции переопределять в template.php, чтобы получить желаемый результат.
Таким образом, если ты ищешь самый простой способ убрать в Drupal 7 поле даты из Fieldset, вставь этот код в template.php файл своей темы (заменить MYTHEME названием вашей темы).
<?phpfunction MYTHEME_date_combo($variables) {
return theme('form_element', $variables);
}?>
Просто для справки, оригинальная функция темы была вызвана theme_date_combo и расположена в date.theme файле модуля даты. Вот оригинальный код:
<?phpfunction theme_date_combo($variables) {
$element = $variables['element'];
$field = field_info_field($element['#field_name']);
$instance = field_info_instance($element['#entity_type'], $element['#field_name'], $element['#bundle']);
// Group start/end items together in fieldset.
$fieldset = array(
'#title' => t($element['#title']) . ' ' . ($element['#delta'] > 0 ? intval($element['#delta'] + 1) : ''),
'#value' => '',
'#description' => !empty($element['#fieldset_description']) ? $element['#fieldset_description'] : '',
'#attributes' => array(),
'#children' => $element['#children'],
);
return theme('fieldset', array('element' => $fieldset));
}?>
Все просто..., просто нужно знать какую функцию переопределять.
seryak спасибо, но я уже раньше все решил немножко по другому, этот способ в некоторых случаях почемуто приводил к ошибке 500 на серваке