By default, Drupal lists recent contents on the front page. The list is a simple top down paginated list.

Often this is not a desirable situation. Except blogs, I have never seen a single Drupal site that shows recent content listings like this. Now Drupal does not even expose a view for this, otherwise you could have just edited that view and changed the content listing style to a grid or table, something more suited to a front page. Some sites might not want the recent content lists in any form at all.
How to remove this thing?

The block ‘Main Page Content’ is the one responsible for rendering the central content for a particular page. For example, if you go to <site hostname>/node/23 the content of node 23 will be rendered in this block. If you go to user/5 the user profile for the user with ID 5 will be rendered here. By default, the URL of a Drupal site’s front page is <site hostname>/node, which renders this undesirable recent content listings.
Wait a minute. I could just configure the ‘Main Page Content’ block and show it on all pages except the front page!

So simple. So easy. Problem solved.
Apparantly. Just refresh your home page and you will still see the recent content listings.
Hmmm ….. Drupal is overriding this configuration.
So let us disable this listing at the much lower level, at a level where Drupal would not override it.
We are going to create a simple custom module and use hook_menu_alter to disable this listing.
For Drupal 6 and 7, custom modules are places in the sites/all/modules directory. We are going to call our module ‘Empty Front Page’. Create a directory called empty_front_page in sites/all/modules. Inside this directory, create two files, empty_front_page.info, empty_front_page.module.
In empty_front_page.info, put in the following code
name = Empty Front Page
description = Do not show anything on the front page.
package = Custom Modules
core = 7.x
In empty_front_page.module, put in the following code
function empty_front_page_menu_alter(&$items)
{
$items[‘node’][‘page callback’] = “new_callback”;
}
function new_callback()
{
return “”;
}
Include a starting php brace at the top of your code, but omit the closing php brace.
This is the way you write a hook. The name of our hook is menu_alter, and our module is empty_front_page. Therefore the function implementing the hook will be called empty_front_page_menu_alter.
Drupal’s menu items are stored as a list of paths in an associative array. The path names are the array keys and an array of properties acts as the value for a particular key. For our problem, we are interested in the path /node, or in other words, $items[‘node’]. The property ‘page callback’ defines the callback function for that path. We are setting a new callback in our code, and in our callback function, we are just returning an empty string. So when /node is now called, instead of recent content listings, just an empty string is returned.
Now go ahead and enable the module. Then clear the cache from <site hostname>/admin/config/development/performance. This is required because Drupal caches menu items in the database to avoid looking up the hook_menu implementations every time.
Refresh your home page.
Voila!
Another way of solving this problem is to use a different page as your home page from <site hostname>/admin/config/system. However, I am not a fan of this method, since you have to create another page and put all your front page blocks into it. Furthermore, using a module for this is a great starting point for developers who expect to use a lot of custom code in their Drupal site, since you get the feel of creating a custom module straight away.