Spesso per rendere un layout più accattivante conviene utilizzare un input type image al posto del classico bottone del submit, specialmente per la form di ricerca del sito. Drupal di default propone il classico submit per tutte le sue form; vediamo come utilizzare un' immagine per il submit della form di ricerca. Esistono diversi modi, il più pulito forse è quello di modificare la form attraverso un piccolo modulo scritto apposta per questa necessità. Un modulo non è altro che una cartella contenente due files
- Un file .info con alcune informazioni riguardanti il modulo
- Un file .module con la logica del modulo
Supponiamo di voler creare un modulo chiamato "cercaimmagine":
la logica del file .module, che in questo caso dovrà chiamarsi cercaimmagine.module è semplicissima
function cercaimmagine_form_alter(&$form, $form_state, $form_id) { switch ($form_id) { // form di ricerca case 'search_theme_form': $form['submit']['#type'] = 'image_button'; $form['submit']['#id'] = 'bottoneaccedi'; $form['submit']['#attributes'] = array [1]( // immagine del submit 'src' => base_path().drupal_get_path('theme','miotema').'/img/cerca.png', 'alt' => t('search') ); break; } }
Il file cercaimmagine.info serve solo per comunicare a Drupal l'esistenza del modulo stesso
name = cercaimmagine description = input type image core = 6.x
Abbiamo utilizzato l'hook form alter [2] per modificare l'output di una form specifica, ovvero quella di ricerca, cambiando la tipologia dell'input submit. Chiaramente è necessario specificare quale immagine utilizzare come bottone di invio della form. In questo caso abbiamo detto a Drupal di utilizzare un'immagine "cerca.png" che risiede nella sottocartella "img" del tema "miotema". L'id della form da modificare lo trovate nel sorgente della pagina sottoforma di id della form
<form action="/" accept-charset="UTF-8" method="post" id="search-theme-form">
Dobbiamo solo ricordarci di cambiare il simbolo "-" con "_". Possiamo quindi utilizzare questo modulo per apportare tutte le modifiche che ci servono alla varie form di Drupal.
Links:
[1] http://www.php.net/array
[2] http://api.drupal.org/api/function/hook_form_alter