Возникла задача в форме поиска по сайту заменить кнопку на изображение.
Задача была решена написанием в template.php следующего кода:
$form['submit']['#theme'] = 'button';
$form['submit']['#button_type'] = 'image';
$form['submit']['#attributes'] = array(
'src' => '/img/go.gif',
'alt' => t(Search)
);
return drupal_render($form);
}
function phptemplate_button($element) {
// following lines are copied directly from form.inc core file:
//Make sure not to overwrite classes
if (isset($element['#attributes']['class'])) {
$element['#attributes']['class'] = 'form-'. $element['#button_type'] .' '. $element['#attributes']['class'];
}
else {
$element['#attributes']['class'] = 'form-'. $element['#button_type'];
}
// here the novelty begins: check if #button_type is normal submit button or image button
$return_string = '<input ';
if ($element['#button_type'] == 'image') {
$return_string .= 'type="image" ';
}
else {
$return_string .= 'type="submit" ';
}
$return_string .= (empty($element['#id']) ? '' : 'id="'. $element['#id'] .'" ');
$return_string .= (empty($element['#name']) ? '' : 'name="'. $element['#name'] .'" ');
$return_string .= 'value="'. check_plain($element['#value']) .'" ';
$return_string .= drupal_attributes($element['#attributes']) ." />\n";
return $return_string;
}
Кнопка как надо заменилась изображением, проблема возникла в отображении. Дело в том что кнопка (которая стала картинкой) почему-то расположилась ниже строки поиска, буквально на следующей строке и никак не удается поставить ее на ту же строку что и поле input type="text".
Никакие внешние факторы не влияют, т.е. перено кнопки на следующую строку никак не связан с ограничением страницы или ширины блока/таблицы, в которой находится форма.
Я не силен в CSS, хотя проблема скорее всего именно в этом и кроется. Пожалуйста, подскажите, что и где в стилях нужно ковырять чтобы поставить эти элементы формы в одну строку.
Комментарии
а вы вывод html напишите и css к нему
Да, скорее всего. Вам нужно всего лишь выстроить все в линию (inline).
http://uremkom.ru/
вот
input #edit-search-theme-form-keys вот этому инпуту пропиши в ЦСС float:left и по коду может так проще?
$form['search_block_form_keys']['#title'] = t(' ');
$form['submit']['#button_type'] = 'image';
$form['submit']['#attributes'] = array(
'src' => '/'.path_to_theme().'/images/go.gif',
'alt' => t('Search')
);
return '<div class="container-inline">'. drupal_render($form) .'</div>';
}
function phptemplate_button($element) {
// Make sure not to overwrite classes.
if (isset($element['#attributes']['class'])) {
$element['#attributes']['class'] = 'form-'. $element['#button_type'] .' '. $element['#attributes']['class'];
}
else {
$element['#attributes']['class'] = 'form-'. $element['#button_type'];
}
return '<input type="'. $element['#button_type']. '" '. (empty($element['#name']) ? '' : 'name="'. $element['#name'] .'" ') .'id="'. $element['#id'].'" value="'. check_plain($element['#value']) .'" '. drupal_attributes($element['#attributes']) ." />\n";
}
только картинку со стрелкой перенесите в папку IMAGES Вашей темы.
Спасибо!
А как можно заменить изображением кнопку "вход"?
Можно через хак или через CSS (лучше).