Tag Archives: templates

Selling A GPL product is a bad idea

I would not think this sort of thing would need to be explained to someone like matt mullenweg. Here’s the comment I left on his blog, which will probably not make it past the great firewall of matt:

I think I’m missing something –
so I make this “killer” GPL, CSS only theme. you sell it for $50, on the premise that it’s not a generic XXL poncho (I know you said pink, but what you meant was gray with a blue hood). Immediately on release, any self-hosted blog can download it and install it themselves. Since it’s CSS-only, anyone on wordpress.com can pay for the CSS Upgrade and start using it. Suddenly it seems like my theme is another XXL poncho, and the guy who bought it trying to get a unique design is seriously screwed.
I must be thinking about this wrong.

It’s not that there aren’t perfectly valid revenue models based on the GPL. It’s just that this is the only one that isn’t. Once a GPL slice of code is released1. There are (very few) projects that actually sell GPL-ed code. X-chat for windows is the one that comes to mind. It works because compiling source code on windows is such a pain. The more viable methods of making money from GPL software include selling support2, and selling proprietary add-ons.

The way the latter option works with wordpress themes is that the underlying PHP has to be GPL, but the CSS can be any license. Matt, instead is looking for CSS-only, GPL themes. This gets extra bizarre in that any CSS-only theme can be implemented by anyone with the CSS upgrade. Since the themes are GPL, automattic can’t even legally suggest that they shouldn’t do that.

Designing premium themes is already a tough market. At least designers willing to handle the storefront themselves aren’t further hampered by having to open-source their graphics. Arpit is right to question the sensibility of such a marketplace, and Michael Martin reaches a similar conclusion.

  1. Meaning, once it’s been bought, but in this context, Matt is saying that it will also be made available to self-hosted users (back ↩)
  2. CSS support on wordpress.com is currently volunteer-only, staff refuse to touch it (back ↩)

Official Theme Options, Please

Noscope | Hey WordPress Team: How About Theme Options, Officially Supported?

sure, theundersigned’s tutorial, and ozh’s themetoolkit are better than a kick in the head. but with custom headers, sidebar widgets, and color pickers being available to theme authors via API, why can’t we have an official options page API? one that sanitizes values, does error checking, all that good stuff that the theme toolkit gets blasted for not doing?

this is the sort of thing i’ve been asking for, and i’m glad i’m not alone.

WIP: The Late Show

banner inner

The Late Show by Liz Lubowitz.

As much as i love using this theme, It’s taking away from the energy i need to direct towards other projects. Inspired by patrick heaney, i’m going to strip down to something spartan, until i have the time to finish my own design.

This is a Work In Progress. First there’s the matter of license. Liz happily granted me permission to port the theme, but the theme is certainly not GPL, so it’s always going to be kind of “for personal use only”.

Also, Sixapart’s Style Contest themes work a little differently, in that they make use of a body class for each layout. (two-column-left, etc.) Even after adding the name of the current sandbox skin as a class to the body of the sandbox, i’d still need to finish my “Layout Dependent Sandbox Skins” plugin for this to really be workable.


So here’s my two column left version of the theme, and hopefully Rothyschild will finish her 3 column version soon. Select the ‘no stylesheet’ skin, and paste these two CSS files into the ‘edit css’ box in order:

Bus Full of Hippies for WordPress.com

This skin is for WordPress.com Users. feel free to use this skin ‘as is’. the images are hosted on wordpress.com, so it’s no different than hosting them yourself. If you host your own blog, please get the zipped version of the skin.

Joshuaink Screenshot


Original design by John Oxton
Illustration by Denis Radenkovic
Based on the Textpattern template reworked by Graham Bancroft.


This Sandbox skin is under the same license as the original template:
Creative Commons Attribution-Noncommercial 2.5.


In order to comply with this license, you must paste the following code into a text widget:

<p><a href="#header">top</a> | Original design by <a href="http://johnoxton.co.uk" title="visit John’s site">John Oxton</a> | Illustration by <a href="http://www.38one.com/">Denis Radenkovic</a> | This design is released under a <a href="http://creativecommons.org/licenses/by-nc/2.5/" title="view the licence for this design">Creative Commons licence</a></p>

Note: If you put this text widget in your secondary sidebar, it will display the way it does on this site, as a footer of sorts. All of the widgets in the secondary sidebar will display this way. (Further instructions on widget usage).

Layout: From the Sandbox Skins menu, select “No Stylesheet”.

Logo Image: This design uses a custom image as the header. The image is 200×60 pixels, twice. the two halves of the 400×60 pixel image create the standard and hover states of the logo (mouse over the logo at the top of this page to get an idea of what I mean). To help you out, here is the *.PSD file I used to make this logo. It includes guides to make it easier to line up the two states of the image: Sandbox Logo

after you make your own image, and upload it to your blog, you’ll have to change the CSS file to point to your new image. look for #header h1 a near the start of the file.


the maximum width for images in posts is 375 pixels. anything wider will be squeezed, to prevent the skin from breaking.

John is an excellent designer. almost anything you put in a post will be styled. you can see some of the formatting here, in the HTML templates. Since formatting every post with code to use his <ol class="codesample"> might be a bit tedious, i’ve also added styling for the <pre> element.


Bus Full of Hippies v0.6.1
or, copy and paste

Bookmark This:

add to del.icio.us :: Digg it :: add to ma.gnolia :: Stumble It! :: seed the vine :: TailRank

Custom CSS

i’m a sucker for a sale (half assed as it is). It just feels odd to be hawking custom CSS templates, and be still using the standard templates on my own blog. I suppose then, it’s also odd to start off with someone else’s design, but i do really love not (that) ugly‘s work. I’m working on porting another flowery template, which i’ll put up here in a few days.

bus full of hippies

the joshuaink.com template is here

The Thin Line: From Skin To Theme

You may have noticed that i really like The Sandbox. Andy suggested a possible path for it to become the default theme, which I think would be an excellent idea. Mainly because writing PHP is not my strong suit. CSS is closer to my skill set.

WordPress versions 1.2 and below used a templating system like the one andy proposed. The problem was, the classic theme had limitations. if you wanted to remove the sidebar on post pages, as kubrick does, you were out of luck. The Sandbox would fix that. The other development that helps make templating viable again was introduced in wordpress 2.0. Since 2.0 was introduced, wordpress loads functions.php of the current theme, if it exists. this means that a theme could use only style.css and functions.php, and have an enormous level of control.

Changes to The Sandbox

it’s been a while since andy added the sandbox branch, but it doesn’t seem to be making progress. so, while i can’t implement status: hidden, i can make a workable version of The Sandbox to test The Thin Line on.

It’s been stripped of it’s skins panel (as well as the skins subfolder), had the default skin set to none, and had status: hidden added to the theme information. I also moved wp_footer(); inside the #footer div, for even greater semantic justice so that information added to the footer can be styled more easily (scroll to the end).

Changes to The Thin Line

when i said that Themes could be built on style.css and functions.php, that’s only partly true. you could build a theme that way that only inserted a footer credit, and applied javascript to the head of the theme. to add an options panel, you’ll probably want to use theundersigned’s tutorial, or ozh’s theme toolkit. I’m using theundersigned’s tutorial, mainly because the PHP is simple enough for me to get the gist of what’s going on. Ozh’s toolkit does more, but requires me to take more on faith, and has previously caused problems on the theme viewer and wordpress.com.

The first step to gluing The Thin Line to The Sandbox is this:


Theme Name: The Thin Line

Theme URI: http://archgfx.net.net/blog/index.php/themes/the-thin-line

Version: 0.7

Description: Hand on mouth, the game goes on

Author: Sunburntkamel

Author URI: http://archgfx.net/blog/index.php/about/

Template: Sandbox


That’s my entire style.css. it doesn’t need to have anything else. I’ll be using style.php for all the style information. The important part is the last line, which tells wordpress to use the template files (index.php, single.php, etc) from ‘sandbox’ to handle the content. Style.php will be loaded on top of the existing sandbox CSS, which is why we set the sandbox skin to ‘none’.


I was going to re-use the sandbox’ “skins” submenu at first, but that would require digging into the function, and renaming all the variables to use theundersigned’s $shortname converntion, and including it in the thin line, rather than the sandbox. That requires redistributing more code, which isn’t my goal. so i used theundersigned’s tutorial to make a dropdown list.

corrosponding to the dropdown list is this section of style.php, which performs roughly the same task as the skins page:

<?php if ($thethinline_layout_style = "3c-b") { ?>

@import url('skins/3c-b.css');

<?php } else if ($thethinline_layout_style = "3c-l") { ?>

@import url('skins/3c-l.css');

<?php } else if ($thethinline_layout_style = "3c-r") { ?>

@import url('skins/3c-r.css');

<?php } else if ($thethinline_layout_style = "2c-l") { ?>

@import url('skins/2c-l.css');

<?php } else if ($thethinline_layout_style = "2c-r") { ?>

@import url('skins/2c-r.css');

<?php } else { /* 1c-r */ ?>

@import url('skins/1c-b.css');

<?php } ?>

after that, style.php is just the remainder of the original thethinline.css. The advantage of styling in a PHP fileis that you can use variables, wordpress conditionals, and other assorted tricks.


Adding functionality to The Thin Line via functions.php is a little more like writing a plugin than like writing a theme. I’m using add_action(); hooks to add to both the header and footer of the theme. I could also add and remove widgets, although i don’t need to mess with the basic widget formatting, because that’s handled by functions.php in The Sandbox. Theundersigned’s tutorial needs a minor correction first, though. at the end of functions.php, I changed <?php bloginfo('template_directory'); ?> to <?php bloginfo('stylesheet_directory'); ?>. For most themes, those hooks point to the same file. This is the first time the difference matters to a theme.

Updated Footer

This is the new footer for The Thin Line. I added an image and link to The Thin Line homepage, as well as a section for users to add their own copyright notice/pithy slogan/whathaveyou (another trick i stole from scott). This is purely PHP, but it’s not scary. Just make the end of theundersigned’s functions.php look like this:

function mytheme_wp_footer() {/* Places credit link in the footer */ ?>

<span id="skin-link">

<a href="http://archgfx.net/blog/index.php/themes/the-thin-line" title="Theme by SunBurntKamel">

<img src="<?php bloginfo('stylesheet_directory'); ?>/thethinline/ttlogo.jpg" alt="The Thin Line" title="The Thin Line" /></a></span> <br />

<p class="annotation"><small><?php echo $thethinline_footer_text ?></small></p><?php }

add_action('wp_head', 'mytheme_wp_head');

add_action('admin_menu', 'mytheme_add_admin');

add_action('wp_footer', 'mytheme_wp_footer');


That’s actually probably easier than creditting yourself in footer.php I could (and may possibly) also use this function to add, say, siFR to the theme as well. Someone who didn’t ph34r javascript the way i do might add livesearch to a sandbox based theme.

The End

My point in writing all of this is to show that the idea of writing a new theme every time is overkill. Template files themselves don’t vary a lot. Most of the functionality and variation happens in javascript and CSS. those can both be handled by only a couple of files. If theme authors could depend on the sandbox being in every wordpress distribution, It would make it easier for them, as well as for casual users who just want to change something small about a theme. It’s a lot easier to find the thing to change when there are only 3 files in the Theme Editor panel of the dashboard.

theme contents

I was going to include The Thin Line with this, but i’m having a little difficulty making everything style the way it was before, and some of the variables i’ve created with theundersigned’s tutorial aren’t properly sticking, despite showing up correctly in my database.

Bookmark This:

add to del.icio.us :: Digg it :: add to ma.gnolia :: Stumble It! :: seed the vine :: TailRank

Unsleepable on wordpress.com

Congrats to Ben!

Unsleepable is wildly popular, and it should soon be even more popular.


I should wait, i should just not post this now. but that wouldn’t be me. i’m a snarky, self-serving asshole. so here’s why my version is better than bryan’s:

  • mine’s not bug-ridden
  • mine doesn’t have a k2 options page that doesn’t do anything (remember that unsleepable styles asides the same as non-asides)[options panel removed]
  • mine has a bottom block
  • my bottom block has widgets[only 3 widgets can be added to the bottom block, otherwise the theme breaks]
  • my header stays in line when you’re logged in (when you have that top bar on your blog)[the header now stays in place. which i suppose is just as valid as moving the background image down 28px. just less attractive]
  • my header uses the proper hover color for the title (it’s meant to be black, not blue).
  • [post link titles are not styled correctly]

Now, to be fair, there are two ways in which bryan‘s version is better than mine:

  • The footer is full width.
  • The title link is no longer an image, so it no longer requires user intervention.

(although that custom header image automattic is so proud of could make a header image quite easy).

On the plus side, this means that the k2 options panel (at least the k2 b2r167 options panel) has passed a wordpress.com security audit. so we should see k2 on wordpress.com in the near future, right?


or did it only pass the security audit because it doesn’t actually create an archive page, it doesn’t actually use matt’s asides, and the about blurp is never executed, so it couldn’t actually harm anything on wordpress.com?



this seems to be a live reboot of sorts. so i’m now ticking off the issues as they’re corrected, or modifying them as new issues are added. [updates are in brackets]


it appears i was only too right about k2. le sigh. i would post about how i really like asides, and not having an options panel in k2 really kills it for me, but i’ve been too much of a negative nancy lately. i can’t even post about them linking to binary bonsai, rather than getk2.com without feeling like that asshole. le fucking sigh.