Widgets on Pages 0.0.7

We have just released the latest update to our Widgets on Pages WordPress plugin. The changes for this latest release are as follows;

  • Resolved potential conflict with other plugins. Thanks to Massa P for the tip-off.
  • Sidebars/Widgets can be added through the use of template tags in the theme code. This provides a very simple way to add extra sidebars to your WordPress theme.
  • Contextual help added (minimal but hopefully gives some direction).
  • Improved use of id and class attributes for more standard proof CSS implementation. NOTE: this may mean that current CSS to remove default bullet points now breaks. Please see our blog post on removing these bullet points.

Using the Template Tags

The latest 0.0.7 release allows the addition of widgets (through the addition of sidebars) to your WordPress theme via the addition of a simple template tag. If, for example, you have a Widgets on Pages sidebar named “wop_1″ then you can add the following code to your theme’s PHP code. Note of course that this code needs to be added at the correct position in the code. Further information on WordPress template tags can be found at WordPress.org.

<?php widgets_on_template("wop_1"); ?>

Removing bullet points from Widgets on Pages sidebar

We’ve had several people asking how they can style the wordpress widgets that are displayed in their posts and pages when using the Widgets on Pages plugin… so we thought we’d write up a set of tutorials on how to get what you want from the plugin. We start with our most requested style query…

Removing the bullet points

The problem

When using the Widgets on Pages plugin to show a widgets outside of the normal sidebars defined by a wordpress theme the outputted widgets can appear with bullet points next to them.

Widgets on Pages with bullet point showing

Widgets on Pages with bullet point showing

The cause

WordPress outputs the widgets in a sidebar as an unordered list (HTML ul tag). A lot of themes have these unordered lists styled with the CSS list-style: disc or something similar (browsers can have this as their default too) which means these bullet points appear. The reason you don’t see these bullet points next to the widgets in the standard theme sidebars is that they have been styled deliberately to remove these.

The solution

All we have to do is style the list using the CSS list-style property… simply add the following to the theme’s CSS file… et voila!

div.widgets_on_page li { list-style:none }

Note: Pre 0.0.7 versions have an id of widgets_on_page rather than class

div#widgets_on_page ul { list-style:none }
Widgets on pages with bullets removed

Widgets on pages with bullets removed

Widgets on Pages v0.0.6

It is with great pleasure that we can announce the 0.0.6 version of the WordPress plugin Widgets on Pages.

The latest version allows the user to name their Widgets on Pages sidebars and use these names in the posts and pages. This gives the user a much more explanatory route to adding WordPress widgets (via sidebars) into pages and posts on their blog and/or website.

Widgets on Pages option page

Widgets on Pages option page

The new version also gives the user an extra helping hand in getting started in adding widgets into WordPress posts by showing the required shortcode (that bit of text that adds the sidebar to the post) in the sidebar’s description.

Setting up Widgets on Pages sidebar

Setting up Widgets on Pages sidebar

We hope that you all find this plugin useful and again we appreciate all feedback including feature requests for future versions.

Widgets on Pages – v0.0.4 update

We have just released our 0.0.4 version of the Wigets on Pages WordPress plugin. This release has only one change but is one that covers the majority of the requests from our users… namely upping the limit of the number of sidebars that are available. In fact we didn’t just up the maximum number but we have scrapped it completely.

We decided to remove the maximum limit as it was obvious that peaople were using the plugin in many different ways that were different from how we perceived it being used. Some minimal javascipt validation has been added to try and ensure that the plugin doesn’t break even though the input value has been opened right up.

Please feel free to give us feedback on the plugin if you’re using it.

Widgets on Pages – Dirty Hack for Multiple Sidebars

I recently had requests to update the Widgets on Pages wordpress plugin to allow for multiple sidebars to be defined. This was is certainly on our roadmap for the plugin but at present we just don’t have the time. So instead I’m gonna post some code which will let you adapt the plugin in it’s current state to cope with more. This is by no means the best way forward as ideally the number of widget areas should be dynamic… and that is the reason we are not updating the plugin ourselves to adopt this methodology.

UPDATE:: OK, so curse of the coder fell upon us… and we did make the update to the plugin to allow additional sidebars to be defined. The newest version of the plugin can be downloaded from WordPress.org.

The new version allows for up to 5 sidebars to be defined via the settings menu. There is one default widget area so this can be used out of the box. Each sidebar can be called independently via a shortcode by supplying an id=x argument to the shortcode.

Widgets on Pages WordPress Plugin

Our newest WordPress plugin Widgets on Pages has just been released (and actually already improved and upgraded to 0.0.2). The plugin allows for a widget area (sidebar) to be populated  and then shown inline in a the core content of a page or post.

This can be very useful if you need to, for example, display separate areas of content on the front page of your site… and all the time making sure the content is still manageable by normal wordpress content managers.

At present the plugin only supports one definable widget area that can be used (though it can be included in multiple pages and/or posts.

The latest version of the plugin can be found at the WordPress.org plugin repository.

Our other plugins are listed on our WordPress plugins page

WPEC Bulk Tools Plugin Update

The WPEC Bulk Tools plugin has just been updated to version 0.0.3. The update (inc the 0.0.2 update) provide support for newer versions of WordPress and the WP eCommerce plugin as well as a new bulk file upload feature to set prices from a CSV file.

The WPEC Bulk Tools plugin can be downloaded free from the official WordPress plugin directory.

The latest update has come about following a brief email chat with one of the existing users. Thanks to r3altordotcom on twitter.

WordPress Dropdown of Child Pages

A friend of our across at About a Ball wanted to know if there was a way of adding code to a WordPress page template to list child pages in a dropdown list which when selected would take the user to the selected child page. Well… here it is;

<form action="/" method='get'>
ID;
$children = wp_dropdown_pages("child_of=$parent_id&echo=0");
$select = preg_replace("#]*)>#", "", $children);
echo $select;
?>

New Plugin – WPEC Bulk Tools

Gingerbread Design are proud to announce their first official community offering – The WPEC Bulk Tools plugin. This WordPress pluign is designed to deliver bulk tools to e-Commerce sites powered by the WP e-Commerce plugin.

The WPEC Bulk Tools plugin can be downloaded free from the official WordPress plugin directory and has been tested against the 2.7 and 2.7.1 releases.

The idea from the plugin first came during the build of a client site where the client was very adamant that bulk manipulation of products was something that they would greatly have appreciated from their previous e-Commerce solution… and therefore we were very pleased to assist in the implementation of such a function.

PHP and MySQL Tag Cloud

This tutorial shows you how to write a simple Tag Cloud using PHP and MySQL and presenting using standard XHTML and CSS.

The basis of using this is that you have a database for your journal entries… most blogging engines follow this approach.

To start with we need to create a couple of new database tables. One will simply hold the list of available tags and the other will hold records which will match journal entries to the tags that are listed against them. For this tutorial I have a table named “tags” which has 2 columns, 1 named id which is an auto_increment column and the other is a string field which holds the tag text. The other table is named “article_tags” which also has two columns. The first field holds the id from the &ldquo;tags&rdquo; table and the second field holds the id value of the journal entry.

To output the tag cloud we essentially count up the number of entries in the article_tag table for each tag. We also have 5 “levels” of tag which are are used to assign a class to the outputted XHTML which will be used to assign a different display property to for each level of popularity of the tags. I have actually been a bit poor in my implementation of the class names for each level of popularity and have given then names such as “largest”. I really should have used names like “tag_level_5″ which would remove the presentation information from the XHTML whilst keeping it semantically correct.

The PHP used has been put into a function which outputs all the tags in an unordered list. This means that if the site is viewed with CSS disabled or via another presentation method for example a screen reader that the page still makes sense. This approach is also useful in terms of how the site is seen by search engines.

// ################################
// TAG CLOUD
// ################################
function tag_cloud(){
  echo "<div id='tag_cloud_div'>
    <h2>tag cloud</h2>
    <ul>\n";
  $tag_query = "SELECT count(article_tags.tag_id),
  tags.tag from article_tags
  left join tags on article_tags.tag_id = tags.id
  group by article_tags.tag_id order by tags.tag";
  $tag_result = mysql_query($tag_query);
  $lowest = 25;
  $highest = 0;
  while ($tag_data = mysql_fetch_row($tag_result)) {
    $tags[$tag_data[1]] = $tag_data[0];
    if ($tag_data[0] < $lowest) {
      $lowest = $tag_data[0];
      }
    if ($tag_data[0] > $highest) {
      $highest = $tag_data[0];
      }
    }
  $step = (($highest - $lowest) / 5);
  $smallest_tag = $lowest;
  $small_tag = $smallest_tag + $step;
  $medium_tag = $small_tag + $step;
  $large_tag = $medium_tag + $step;
  $largest_tag = $medium_tag + $step;
  foreach ($tags as $key => $value){
    if ($value >= $largest_tag) $tag_class = 'largest_tag';
    else if ($value >= $large_tag) $tag_class = 'large_tag';
    else if ($value >= $medium_tag) $tag_class = 'medium_tag';
    else if ($value >= $small_tag) $tag_class = 'small_tag';
    else $tag_class = 'smallest_tag';
    echo "<li class='$tag_class'><a href='/articles/tag/$key'>$key</a></li>\n";
    }
  echo "  </ul>
    </div>\n";
  ?>
  </div>
  <?
}

CSS is then used to style the output so it’s displayed as stream of text where the font size for each tag is dependant on the class which was assigned above (which relates to how popular the tag is).

#tag_cloud_div {
  float:right;
  width:275px;
  padding: 10px;
  border: 1px solid #3F3C20;
  background-color: #DAD306;
  }

#tag_cloud_div li{
  display: inline;
}

#link_list_div {
  float:right;
  width:275px;
  padding: 10px;
  border: 1px solid #3F3C20;
  background-color: #12C6CC;
  margin-bottom: 10px;
  }

#tag_cloud_div h2, #link_list_div h2 {
  margin-bottom:0.3em;
  color: #3F3C20;
  }

#link_list_div li {
  margin-bottom:0.2em;
  }

.smallest_tag{
  font-size: 0.8em;
  line-height: 0em;
  }

.small_tag{
  font-size: 1.0em;
  line-height: 0.4em;
  }

.medium_tag{
  font-size: 1.3em;
  line-height: 0.9em;
  }

.large_tag{
  font-size: 1.8em;
  line-height: 1em;
  }

.largest_tag{
  font-size: 2.2em;
  line-height: 1.3em;
  }

This is by no means the best method of creating a tag cloud but it demonstrates how simple it can be. To enhance this (as I said earlier) I’d prefer to rename the classes used and would also probably look to make the popularity of the tag dependant on other aspects such as time of publication of the journal entries.