Recently a client wanted an unusual block. The block contained three social media links (facebook, twitter and youtube) and the search form. The easy solution would be with a static block or block menu and position it with css, but I wanted all the markup in a single block...ok here we go!
Custom Drupal Search Block - Step 1.
First create a custom module. This will require an .info file and .module file. My module is called deckfifty:
My deckfifty.info file contains:
name = deckfifty custom description = "deckfifty.com custom" core = 6.x
My deckfifty.module file utilizes Drupal's hook_block() function:
/**
* Implementation of hook_block().
*/
function deckfifty_block($op = 'list', $delta = 0) {
}
Custom Drupal Search Block - Step 2.
Now I'll add a block, give it a name which I've wrapped in the t() function, and use a separate function to supply the content (_deckfifty_social_media_search):
/**
* Implementation of hook_block().
*/
function deckfifty_block($op = 'list', $delta = 0) {
switch ($op) {
case 'list':
$blocks[0]['info'] = ' t('Social Media and Search')';
return $blocks;
case 'view':
switch ($delta) {
case 0:
$block['content'] = _deckfifty_social_media_search();
break;
}
return $block;
}
}
Custom Drupal Search Block - Step 3.
Now lets define the content function and add the static social media links:
function _deckfifty_social_media_search() {
$output = '';
//facebook
$output .= '<div class="social-media"><a title="like us on facebook" class="facebook" href="http://www.facebook.com">like us on facebook</a></div>';
//twitter
$output .= '<div class="social-media"><a title="follow us on twitter" class="twitter" href="http://www.twitter.com">like us on twitter</a></div>';
//youtube
$output .= '<div class="social-media"><a title="watch us on youtube" class="youtube" href="http://www.youtube.com">watch us on youtube</a></div>';
return $output;
}
Custom Drupal Search Block - Step 4.
For us to display the search form we'll call the drupal_get_form function:
function _deckfifty_social_media_search() {
$output = '';
//facebook
$output .= '<div class="social-media"><a title="like us on facebook" class="facebook" href="http://www.facebook.com">like us on facebook</a></div>';
//twitter
$output .= '<div class="social-media"><a title="follow us on twitter" class="twitter" href="http://www.twitter.com">like us on twitter</a></div>';
//youtube
$output .= '<div class="social-media"><a title="watch us on youtube" class="youtube" href="http://www.youtube.com">watch us on youtube</a></div>';
//search
$output .= '<div class="social-media last">'.drupal_get_form('search_block_form').'</div>';
return $output;
}
Ok, we're almost done. Save the file and enable the block. Of course you'll want to do a little styling to get it just right, but at least this way all your markup will be in one block!