Темизация формы поиска (в частности замена кнопки на изображение )

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

Аватар пользователя Alexzei Alexzei 4 декабря 2012 в 22:52

Здравствуйте, темизирую магазин в связке Drupa 6 + ubercart использую тему carthelp (сборка инет магазина).

Добрался до формы поиска и завис, перелопатил гору материала, в файле template.php прописал следующие функции:

<?php

function carthelp_theme(){
  return array(
    
'search_block_form' => array(
      
'arguments' => array('form' => NULL),
    ),
  );
}
 
function 
carthelp_search_block_form($form) {
  
$output '';
  unset(
$form['search_block_form']['#title']);
  
    
$form['search_block_form']['#attributes']['class'] = 'sbox';
    
$form['submit']['#type'] = 'image_button';
    
$form['submit']['#id'] = 'b_img';
    
$form['submit']['#src'] = drupal_get_path('theme''carthelp') . '/images/sbtn.png';
    
$form['submit']['#attributes']['class'] = 'sbtn';
  
  
$form['search_block_form']['#value'] = 'поиск';
  
$form['submit']['#value'] = 'Найти';
  
$form['search_block_form']['#attributes'] = array(
    
'onBlur'=> "if (this.value.length == 0) {this.value='{$form['search_block_form']['#value']}'}",
    
'onFocus'=> "if (this.value== '{$form['search_block_form']['#value']}') {this.value=''}"
  
);
  
$output .= drupal_render($form);
  return 
$output;
}
?>

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

Помогите, кто может, заранее благодарен

Комментарии

Аватар пользователя Alexzei Alexzei 5 декабря 2012 в 8:31

В этом случае чистый CSS не очень подходит, т.к. кнопка submit определяется для всех кнопок сайта, соответсвенно при если мы чисто поменяем дизайн кнопки через CSS то все кнопки изменятся, а если переопределять класс для данной конкретной кнопки, всё равно прийдется лезть в код,

Что касается статьи, там из примера видно, что имеется та же проблема что и у меня, кнопка находится за DIVом с текстовым полем поиска

Аватар пользователя pantey_33rus pantey_33rus 5 декабря 2012 в 11:41

Alexzei wrote:
В этом случае чистый CSS не очень подходит, т.к. кнопка submit определяется для всех кнопок сайта, соответсвенно при если мы чисто поменяем дизайн кнопки через CSS то все кнопки изменятся, а если переопределять класс для данной конкретной кнопки, всё равно прийдется лезть в код,

Что касается статьи, там из примера видно, что имеется та же проблема что и у меня, кнопка находится за DIVом с текстовым полем поиска


так в данном примере показана функция замены этой кнопки на изображение, а далее стилями перемещай куда тебе ее нужно!

Аватар пользователя Alexzei Alexzei 5 декабря 2012 в 12:12

<?php $form['submit']['#type'] = 'image_button'; ?>

В том то всё и дело, эта функция ДОЛЖНА заменять кнопку на картинку, но на деле получается кнопка, а сверху картинка, и всё это художество вынесено за DIV с текстовым полем поиска, тоесть сама кнопка находится снизу поля, и с этим ничего поделать не получается.

Аватар пользователя varvashenia varvashenia 5 декабря 2012 в 12:24

скорее всего кнопка живёт не в $form['submit'] а где-то в дебрях $form['search_block_form'] - сделайте вывод объекта с формой и посмотрите где конкретно она обитает.
По поводу css и кнопок на всё сайте - можно же поменять кнопку только в пределах формы по её классу/id

Аватар пользователя Alexzei Alexzei 6 декабря 2012 в 8:58

не получается вывести объект напрямую в шаблон <?php print ();?> Вывожу его через регион, но тут возникает проблема, он оборачивается в кучу DIVов со своими класами, кто нибудь знает, как снести всё это добро и вывести просто Serch form??? обернутый в собственный див ???

Аватар пользователя Alexzei Alexzei 6 декабря 2012 в 8:58

не получается вывести объект напрямую в шаблон <?php print ();?> Вывожу его через регион, но тут возникает проблема, он оборачивается в кучу DIVов со своими класами, кто нибудь знает, как снести всё это добро и вывести просто Serch form??? обернутый в собственный див ???

Аватар пользователя Alexzei Alexzei 6 декабря 2012 в 8:58

не получается вывести объект напрямую в шаблон <?php print ();?> Вывожу его через регион, но тут возникает проблема, он оборачивается в кучу DIVов со своими класами, кто нибудь знает, как снести всё это добро и вывести просто Serch form??? обернутый в собственный див ???