Tag, you got it.

January 5th, 2009

As you might have noticed; I’ve got a tag cloud in my sidebar. And there were no tags under the entries, and none on the single post page. That is because, as with the widgets, this is an old theme - from when the dinosaurs roamed the earth and whatnot. And tagging wasn’t in Wordpress core.

I’ve quickly added the tags as a new line below the post’s category, setting a class to the span for markup, wrapping it in a div for that new line business. The change is to insert the three last lines below into index.php (lines 21 through 23). This fixes both the index page and the single post view, as there’s no specific markup code for single posts, pages or archives. I’ll add some beautifying code for this later, and individual templates for my own theme modification.

17
18
19
20
21
22
23
                <div class="postinfo">
                        <span class="postedby">Posted by <?php the_author() ?></span>
                        <span class="filedto">Filed in <?php the_category(', ') ?> <?php edit_post_link('Edit', ' | ', ''); ?></span>
                </div>
                <div class="postinfo">
                        <span class="tagged">Tagged <?php the_tags('', ', ') ?></span>
                </div>

In addition, we need to add some css to style up the tags listing with an icon as the other post info. I chose the page_component.gif image from the same icon series as Simpla uses; the Minis from Famfamfam. Put it in the /images/ folder in your theme’s folder and add the following code to styles.css:

121
122
123
124
125
.tagged{
        background:#fff url(./images/page_component.gif) no-repeat;
        padding:3px;
        padding-left:20px;
}

You can probably see that the style information of the last couple of entries in styles.css are very much alike? Just the file names are different. I get an urge to extract the redundant information as a separate style class, like below, and let each line with an icon get marked with two classes. This makes the file look like this from line 106:

106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
.icon{  
        padding:3px;
        padding-left:20px;
}
.postedby{
        background:#fff url(./images/user.gif) no-repeat;
}
.filedto{
        background:#fff url(./images/post.gif) no-repeat;
}
.commentslink{
        background:#fff url(./images/packaged.gif) no-repeat;
}
.tagged{
        background:#fff url(./images/page_component.gif) no-repeat;
}

I must now change each line with one of the above class descriptions and add icon. This is easy, as they are collected together in the index.php file. And if nothing else; it saves a tiny bit on bandwidth. Not that it is optimized for it. The programmer in me like to pull out shared information.

From my last change this will now look like this:

16
17
18
19
20
21
22
23
24
25
                <div class="entrymeta">
                <div class="postinfo">
                        <span class="icon postedby">Posted by <?php the_author() ?></span>
                        <span class="icon filedto">Filed in <?php the_category(', ') ?> <?php edit_post_link('Edit', ' | ', ''); ?></span>
                </div>
                <div class="postinfo">
                        <span class="icon tagged">Tagged <?php the_tags('', ', ') ?></span>
                </div>
                <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;', 'icon commentslink'); ?>
                </div>

Find all four icon additions? The last is at the end of the comments_popup_link thingey. Great! I also downloaded page_package.gif, page_tick.gif and page_cross.gif for marking of todo lists as I was picking out the tags icon. That is something not directly connected to upgrading Simpla - and perhaps I should find or make a plugin for it. But it’s for another post.

Agree or disagree on method, markup, choice of icon or anything? Speak up, I’d love to hear.

Making a hole in the sidebar

January 5th, 2009

The next step is fixing the sidebar. As this is a pretty old theme, the sidebar is rather statically set up. It links your pages, categories and links. Nowadays these Widgets are all the rage - and it isn’t hard to set up support for them in an old theme either.

First we’ll make the sidebar accept widgets. The easy, and right, way is to wrap the old sidebar in a condition saying it should be displayed if there is no support for widgets. Do it like this; insert line 2 and 15, making the code look like below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id="sidebar">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<h2>Pages</h2>
<ul>
<li><a href="<?php echo get_settings('home'); ?>/">Home</a></li>
<?php wp_list_pages('title_li='); ?>
</ul>
<h2>Categories</h2>
<ul>
<?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
</ul>
<ul>
<?php get_links_list(); ?>
</ul>
<?php endif; ?>
</div>

Here we could have made the container around sidebar into an unordered list (ul), but that would mean we’d have to have a look at the css to get things to display correctly. So instead we must do a small fix in functions.php. Instead of using register_sidebars we’ll use register_sidebar (plural vs. singular) with some parameters.

Since the functions.php to register dynamic sidebars in doesn’t exist, we’ll have to create it. Put it in the theme’s folder, and make it contain the following code. Be careful; no space or newlines before or after the lines of code:

1
2
3
4
<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array('before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>'));
?>

The before and after_widget parameters wraps each widget in a div. This wouldn’t be necessary if the dynamic sidebar call was issued from inside an unordered list (ul), as the default values produces list elements (li).

Now the only task left is to go into the widget page (in the blog administration) and add what you want. I suggest Pages, Categories and Links if you want to keep the feel of Simpla, as it were. Keep tuned for more.

Anything you want to add, ask or tell? Feel free. :)

First steps

January 4th, 2009

I’ve begun making some small changes to the Simpla Theme, in order to get something looking *just* like I want. I’ll share my changes, and also the code if somebody asks for it. For now this is filed as work in progress. And there will be progress.

Here are the things I did to change the theme as it looks now (2009-01-04T20:59:12+01:00). Increase / change font size and screen real estate. Flip the sidebar to the left. Fix logout from near comment field. I’d love to hear if you like / dislike the changes.

Change font size

First order of business is to increase the text size, because I’ve seen what it helps on some devices. The code changes are from:

13
14
15
16
17
18
19
20
21
22
23
body{   
        background:#fff url(./images/bg.png) repeat-x;
        border-top:5px solid #333;
        color:#555;
        font-family: Georgia, "Times New Roman", Times, serif;
        font-size:62.5%;
        line-height:1.5;
        margin:0;
        padding:0;
        text-align:center;
}

Change relevant line to the following:

18
        font-size:12pt;

Then remove lines 30 and 36 from the following block:

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#wrap{  
        margin:0 auto;
        text-align:left;
        width:76em;
}
content{
        font-size:1.2em;
        float:left;
        padding:1em;
        width:40em;
}
#sidebar{
        font-size:1.1em;
        float:right;
        padding-top:2em;
        width:20em;
}

That is, these line should be removed:

30
        font-size:1.2em;
36
        font-size:1.1em;

These font-size changes means that we have to redistribute a bit of space in the content area. Change line 24, 33 and 39 from above to the following:

24
        max-width:80em;
33
        width:70%;
39
        width:25%;

Flip sidebar to the left hand side

Next step is to flip the sidebar to the left hand side, just because I can. Change line 30 (or 31 if you didn’t change the font-size like above from the first block of code) to the next line:

29
30
31
32
33
#content{
        float:left;
        padding:1em;
        width:70%;
}
30
        float:right;

Minor fixes needed for Wordpress 2.7

Logout link in comment.php needed updating because of the new security measures in Wordpress. If this isn’t done, you won’t be able to log out from the link beside the comment field. Find and replace first block of code with the second block of code:

76
<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
76
<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>

I’ve noticed that I generally don’t post too much on this blog/journal/whatever. This partly comes from the fact that I suspect everyone to already know what I do, or find out. Thus I avoid public ridicule if I don’t write anything.

Well, as I really know that everybody can’t possibly know everything, I’ll try and just post stuff as I come across it, even if it does look simple from time to time. I found out yesterday that I do know simple stuff that others don’t - so here goes.

Whenever you just want to do a HTTP GET method to fetch something in Java, it might not be the easiest thing to do. Or perhaps it is? You could screw around with java.net.URLConnection, opening connections, fighting error handling, writing to the connection’s stream in case of POST calls… or you could get Apache’s HttpClient. The call would then be:

GetMethod getMethod = new GetMethod("http://www.google.com/search");
NameValuePair[] parameters = {
	New NameValuePair("q","searchstring")
};
getMethod.setQueryString(parameters);

Post requests works the same way, just create a PostMethod and instead do a:

postMethod.setRequestBody(parameters);