logo
  • Home
  • About
  • Plugins

Subscribe to Articles

Doing more with Widgets: Home Page Layout

Author: andrew Category: Uncategorized Tags: Organisation, Widgets

Tuesday
Oct 23, 2007

I have been several versions of Wordpress behind for a little while and, with this blog, have just caught up. My verdict? Widgets are pretty cool. Having said that it seems clear that the creators of widgets have missed a trick. Why stop with the sidebar?

Widgets give you control over the layout and contents of your sidebar, but there is no reason why you can’t use them to control other parts of your site. For example, in just ten minutes I was able to convert my home page to give me control over most of the layout. Now I am going to explain how.

Register a second sidebar

In the functions.php file, in my theme folder, I have now registered two sidebars. One is controlling my footer, and the other the content of my home page;

if ( function_exists('register_sidebar') ) {
    register_sidebar(array(
	'name' => 'footer',
        'before_widget' => '<div class="segment">',
        'after_widget' => '</div>',
        'before_title' => '<h3>',
        'after_title' => '</h3>',
    ));
	register_sidebar(array(
	'name' => 'home page contents',
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '',
        'after_title' => '',
    ));
 
}

I’ve given then nice names so I recognise them in the admin console.

Create and register the home page content widget

Again in functions.php, I have produced a function to output the standard contents of the home page loop without any change. The example has a placeholder for simplicity:

function widget_home_page_content(){
 
?>
	<?php if (have_posts()) : ?>
 
		<?php while (have_posts()) : the_post(); ?>
 
		*** Loop Contents ****
 
	<?php else : ?>
 
 
 
	<?php endif; ?>
<?php
 
}

I have then registered this function as a new widget

register_sidebar_widget('Home Page Content',widget_home_page_content);

Pretty simple so far right?

Convert your index to a sidebar

I have replaced the Wordpress loop in my index file, with a call to the second sidebar. My entire index file now looks like this:

<?php get_header(); ?>
 
	<div id="content">
	<?php if ( function_exists('dynamic_sidebar') ) { dynamic_sidebar(2); } ?>
	</div>
 
<?php get_sidebar(); ?>
 
<?php get_footer(); ?>

I can now start to produce and use widgets to place content above and below the contents of my home page, without messing with the theme. I could even go further and break the loop into parts, giving even more control over the precise way posts are displayed, or make a single page theme, using widgets to control the layout.

I’m just wondering how far it is possible go using only widgets.


Share:
image image image image image

Comments

Christoph Voigt (http://www.bastelbude.com)

November 11th, 2007 at 8:35 pm

I guess you could go pretty far with creating a theme that’s completely made out of widgets. However, the gain in flexibility comes with the price of increased administration.
If I’m not mistaken every widget has to be installed as a plugin. Really makeing use of a widget-based theme could easily create a dozen of widgets which will sooner or later clutter the plugins-page. Wouldn’t it be great if you could have a sort-of-wysiwyg editor for managing the entire theme?

Andrew Rickmann (http://www.arickmann.co.uk)

November 11th, 2007 at 11:11 pm

Christopher, it is possible to install widgets as part of the functions.php file that sites in the template itself, so other than installing the template there isn’t really too much more you need to do.

CarpetGuy (http://opinionhead.com)

January 20th, 2008 at 11:16 pm

I have one question, what happens when you upgrade? The way that I understand it, your additions, not done as a plug-in, will get over written when you upgrade. Might it be better to create a plugin instead of just changing code?

Andrew Rickmann (http://www.arickmann.co.uk)

January 21st, 2008 at 7:51 am

CarpetGuy,

You could do it as a plugin but this technique relies on changing the theme itself so if you changed the theme you are likely to lose most of it anyway.

Upgrading WordPress shouldn’t have an effect on this technique though as the only changes are to the theme files.

mak

December 11th, 2008 at 11:05 am

hi please help. i have a theme with 3 columns ie: main page 2 sidebars side by side.

i have the cats, links in one and register and tags in the other.

But when i install a tweet widget the tweet widget is shown in my3 sidebar but everything else just disappears.

i wanted the widget to show under the rest of the items

please help

Andrew Rickmann (http://www.wp-fun.co.uk)

December 11th, 2008 at 8:15 pm

Mak, I don't know the answer I'm afraid. It seems more likely that there is something up with the widget itself.

cakipin (http://www.cakipin.web.id)

January 31st, 2009 at 4:11 am

thanks, it very good scrib


Categories vs Tags: Either, Neither, or Both?
It’s amazing how much you forget

Recommended

WP Remix Banner

Archives

  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007

Tags

2.7 2.8 Admin Advertising Air Blogging blogs Cache Cliche Coding Comments Content Types CSS Curry Death development Disqus Features Habari image Interview Licensing Modes Monday Poll New Features Organisation Personal Platform Plugin Plugin-Practices plugins Plugin update Poll premium Readers Reviews Search Simplification Snippets Spam Themery Themes tools User Interface Widgets WLTC

Copyright 2009 Fun with WordPress - All Rights reserved.

Wordpress theme by: WPUnlimited