Posts Tagged ‘Development’

by Brian Casel  ·  6.22.2010  ·  Business

If you’ve been following my tweets for the past few weeks, you know I’ve been preparing to release a new product, called “WP Bids“. Today I’d like to tell you about what it is, and what’s in store…

WP Bids is a special theme for WordPress, which allows you to create awesome web-based project proposals using the platform we know and love (WordPress).

Who is it for?

It’s perfect for freelancers, design agencies, and other contractors who aquire clients by presenting high-impact proposals, which serve to clearly and professionally outline the project scope, time estimate, price quote, and other relavant info.

It’s especially useful for web designers, because it gives you the ability to tweak and customize your proposals the same way you’d tweak any other WordPress theme.  It’s a self-hosted solution, giving you full control over every detail.

Redefining how we use WordPress

The idea is to use WordPress, not as a public blog available for the world to see, but as a dedicated proposal platform, which you selectively grant access to potential clients.  Let me explain…

Read more

by Brian Casel  ·  4.13.2010  ·  Education, Opinion

In the first part of this series about my WordPress theme design process, I covered how I go about the concept and design phase.

This post covers my process for developing a WordPress theme.  That is, after the PSD mockup is complete, this is how I go about coding and preparing to release it as commercial theme on ThemeJam.

NOTE: This is not meant to be a tutorial, but rather me sharing my personal style and process.  I mention many technical aspects of web development here.  If you’re unclear or interested in more detail on anything discussed here, let me know in the comments and maybe I’ll post an in-depth post about it!

First, the markup.

Panic Coda has been my coding application of choice for the past 2 years or so.  A few months back I gave MacRabbit Espresso a try, but it didn’t stick with me.  Coda has everything I need:  A clean interface, user-defined keyboard shortcuts & snippets, and a built-in seamless FTP client.

I start by coding the main templates in valid XHTML and CSS.  I’ve never been one to use a CSS framework or pre-built template created by others (like the 960.gs).  I prefer to make every line of code my own to ensure that every bit is optimized for this particular theme, with nothing leftover that I don’t need.

That said, I have crafted my own “new theme” template, or set of files/folders if you will.  I’ve been tweaking and improving this set of templates over time.  It to speed up the process at the very beginning by covering all the items that I always put in every theme.  My starter template consists of:

  • Index.html – blank-slate HTML doc, including the doc type, basic HTML page structure, and a call to the stylesheet.
  • reset.css – Created by Eric Meyer, with a few of my own tweaks.  I haven’t always used this in the past, but recently I do.  It’s good for making things consistent across all browsers from the very beginning.
  • style.css – This has all of the basic elements of a typical WordPress theme stylesheet, including the theme info declaration at the top.  It includes the clearfix method, basic styles and margins set on the common elements like P, H1-h6, UL, OL, etc.  It also has a few WordPress-specific styles that I know I’ll need later such as some basic comments styles, .alignleft, .alignright, .aligncenter, blockquote, and a few other things.
  • Scripts folder – I always include jQuery here.  I realize that WordPress has jQuery built in, but I’m first starting with the static HTML templates, so I’ll need my own copy of it.  I also have the jQuery cycle script here because I use it so often.

With my starter template fired up in Coda, and my finished mockup open in Photoshop, I get to work on slicing and coding up the static HTML template.  My goal here is to get as much of the site structure and details coded as I can.  The things I want to have coded at this stage are:

  • Overall structure and layout.
  • Typography, including implementation of Cufon (my choice for font-replacement in commercial themes.  For other sites, I go with TypeKit).
  • jQuery enhancements.  This includes dropdown menus, featured posts sliders (though I use static content for now), etc.
  • Widget styling.  Again, using static content now, but styling the markup to be used later in WordPress.

Most of the time, I’ll do a home page (index.html) and generic interior page (page.html).  Sometimes I’ll create an additional blog page if blog posts will have a unique layout or something.  Usually in website development I would implement a system of includes, like a global header and footer.  However, since WordPress will have it’s own include/template system, I don’t bother creating includes for the static HTML templates.

Browser Testing & Validation

When it comes to browser testing, I always say test early and test often.  Some folks don’t even look at IE until they’re done coding everything.  This is a bad idea, because more often than not, IE requires you to re-think your (perfectly logical) code and you’ll end up wasting time to go back and re-code.

I prefer to test all browsers as I go along, especially as each major piece is implemented.  For example, I’ll get my featured posts slider working perfectly across all browsers before moving onto the rest of the site.

To finish off the static HTML phase, I put my pages through the W3C validator until that refreshing green light appears.

Alternate Colors

Most of the time I implement alternate color stylesheets after doing the static HTML templates, but before integrating WordPress.  I do this so that I can release the static HTML templates as their own product, with multiple color options built in.

The way I do this is simply by creating additional stylesheets, which override specific styles and colors found in the main stylesheet.  Basically, I commit the main stylesheet to being the “default” color scheme, and use additional stylesheets for the other options.  I take very special care in picking alternate colors.  Sometimes I’ll go so far as to pick and implement a color scheme, only to trash it later because I feel it’s not good enough for release.

Time to integrate WordPress

Finally, the real fun begins…

I create a fresh installation of the latest version of WordPress within the ThemeJam demo section (this particular demo is not live yet).  Then I import some basic blog content.  WPCandy has a great “test content” import file you can download and use to quickly fire up a new demo site.  I have created my own version of this, which I think works better to showcase my themes on ThemeJam.

Then I begin creating the theme.  For this, I have created my own personal starter template, which I have named “FrameJam” (Framework + ThemeJam, get it?).  It’s not meant to be a WordPress Framework in the common sense of the word.  Really just a starting point for my own personal use.  Included are a few things I like to have across all my themes:

  • The ThemeJam Options panel – with basic options included.  I’ll add more options specific to this theme a bit later.
  • Various SEO markup and template tag enhancements.
  • Some PHP functions I always use – like images and thumbnail handling, registering widgets, a custom widget template, custom comments markup, custom excerpts, etc.

I duplicate FrameJam and rename it to the new theme name.  Then I overwrite the entire style.css file with the one I created earlier for the static HTML templates.  Now we have basic styling, but the markup isn’t together yet.

I go line-by-line integrating WordPress tags and functions with the markup I already created earlier.  It’s just a matter of pasting chunks of markup from the static HTML templates into the WordPress templates.  I start this process by setting up header.php, index.php, and footer.php as these 3 templates will basically create a full page from top to bottom.  Then I’ll fill in the rest of the template files.

Now is a good time to re-test everything across all browsers.

The last phase of WordPress integration is to implement all of the theme options.  This adds an additional layer of template tweaks, turning static things into variables, adding inputs and sets of inputs to the Theme Options page, and whatnot.

Then of course, there is testing, testing, and more testing.  TIP: Test at night, but test again in the morning when you’ve had a good nights sleep.  You’d be surprised how many things you miss when you’re bleary eyed.  There are so many little things that go into a WordPress theme, it can take a whole week just to tie up all the loose ends.

That wraps up the wordpress development phase.  If you have any questions for me, or if you have a different approach you’d like to share, please leave your thoughts in the comments.

Next up…

In the final post in this series, I’ll cover how I go about preparing my finished theme for release on ThemeJam.  Stay tuned…

by Brian Casel  ·  3.22.2010  ·  Bits

If you’ve been following my tweets, you may have noticed that last week I launched an overhaul of the CasJam Media site (my freelance web design business / portfolio).

Today I’d like to go over a few of the goals I set out to achieve in this redesign:

Simplify and trim the fat

I wanted (needed) to simplify the site on a number of fronts.

First and foremost, I wanted to scale down the overall site navigation and limit the total number of pages.  The new site is a total of six pages including the home page.  That’s down from 10+ with several sub-pages.  The new top navigation directs the user to the four most commonly sought after things in any web design portfolio site:

  • About - Who/what is this company?
  • Services – Do they offer what I need?
  • Projects – Let’s see some of their work.
  • Contact – Time to take action and get in touch.

Simplified maintenance

I also needed to simplify things behind the scenes as well.  My last site, despite being run on WordPress, took way too much time for me update each project.  I used to cut several images, different sizes, and make long write-ups for each project.  Then I’d manually swap in different project images and links for the home page slider.  After a while, I stopped updating my portfolio, simply because I didn’t have the time to do all that.

The new site utilizes WordPress 2.9+ post thumbnails, which makes handling images much easier.  Project thumbnails dynamically load on the home page and elsewhere, making for less repetitive updating.  I also slimmed down the project descriptions (supported by the redesigned layout).  It’s much easier for me to quickly update the site as new projects launch.

Simplified content

Catching on to the overall theme now?  Overall simplicity was the biggest goal and that went for the site content as well.

First, I decided to do away with the outdated blog on casjam.com.  I stopped writing in it months ago, and I knew that I’d never have the time to continue contributing quality content.  I plan to focus my blogging efforts here on briancasel.com and guest blogging elsewhere.  CasJam.com is now strictly my portfolio and freelance business site.

I also refreshed almost all of the copy for the About and Services pages.  Before, I used to list and describe in detail every service remotely related to the realm of web design.  That included design, development, marketing, consultation, copywriting, etc. etc. etc.  Of course, all of these things go into a freelance web worker’s job description.  But I decided on a different approach for this time around.

I boiled all of my services into a 3 categories:  WordPress, E-Commerce, and “Everything Else”.  For the last year or so, all my projects have been focused around WP or E-Commerce so I wanted to stress the specialization in these areas.  The “Everything Else” portion serves to fill in the areas in between, such as email marketing, consultation, etc.  Overall, I’m happy with the way all of this info fits nicely onto one page of the site.

Promote the Portfolio

The new site brings the portfolio straight to the forefront.  Right on the home page, we have a slider which features 18 projects.  This is what most visitors come to see, so it’s right there in front of you as you enter the site.

I must say I’ve been gaining a lot of confidence in my skills as a designer.  Before, whether I realized it or not, I seemed to have been tucking my portfolio away in the interior of the site, leaving it in the shadow of lots of copy and bloat.  Now, I feel much more comfortable and ready show my recent design work – especially my theme design work for ThemeJam – and I think this redesign reflects that.

What do you think?

I’d love to get some feedback about any aspect of the redesign.  Also, if you guys have any questions about how I did things, don’t hesitate to ask.  I’m considering a few posts covering the technical aspects of the site, if the interest is there.

by Brian Casel  ·  6.9.2009  ·  Business

Typography could be one of the most important elements modern web design.  Today I’m going to talk a bit about sizing text on the web with CSS using ems, as opposed to the often resorted to pixels.

Here are a few advantages of using ems for CSS font size:

  • IE / Windows will not resize your copy if it was sized in pixels.
  • All font sizes across your site are relative, making for a more coherent design and page flow.
  • Makes it easy to tweak the overall font size site-wide with just one change in the stylesheet.

How to Set Font Size using Ems

We start out by determining the base font for our website.  We declare this value in the body tag.  The best way to do this is to use a percentage value for the font-size.  This ensures that all browsers, including Internet Explorer, will render your font sizes accurately and consistently.

The default font size of every browser is set to medium.  The medium font size, by default, is 16 pixels.  That’s usually a bit too big for our design, so we want to scale that down by using a percentage.

[css]
body {
font-size: 75%;
}
[/css]

By setting the base font-size to 75%, we’re making it 12 pixels – a more manageable size for most web projects.

Now it’s time to apply some relative font sizes on other elements in our design using ems. Basically, em values are a multiple of the parent’s font size.

[css]
body {
font-size: 75%;
}

h2 {
font-size: 2em;
}
[/css]

Here, we have set the H2 font size to 2 ems, which equals 24 pixels (base font size of 12 multiplied by 2).

Set CSS Line Height with Ems

Since our font size is set using ems, it’s also a great idea to use ems for our line height – the space between each line of text within a paragraph.

I find that setting a line height one and a half times the font size makes for a clean and legible web copy.

[css]
body {
font-size: 75%;
}

h2 {
font-size: 2em;
}

p {
line-height: 1.5em;
}
[/css]

The code above now has our paragraph font size set to 12 pixels (inherited from the body tag) and the paragraph line height set to 18 pixels.

Ems for Paragraph Margins

The next step in creating consistent vertical web composition is to set your spacing between paragraphs and headers using ems.

[css]
body {
font-size: 75%;
}

h2 {
font-size: 2em;
}

p {
line-height: 1.5em;
margin: 0 0 1em 0;
}
[/css]

This may differ from the methods of others just a bit, but I tend to avoid using top margin and try to keep the spacing of my page flowing downward. In our example, I have set the bottom margin of paragraphs to match their font size of 12 pixels (1 em).

More Resources for Em-based Font Sizes

Em Calculators

Recommended Reading

by Brian Casel  ·  5.17.2009  ·  Business

I am a web designer, specializing in design, usability, front-end web development.  I hand-code valid XHML and CSS websites that communicate a message, optimized for search engines, and function flawlessly across all the major browsers.  I take web development further by integrating WordPress as my CMS of choice.  I design and program custom wordpress themes and take the wordpress platform beyond just a blogging tool.

Design, CSS coding, and WordPress integration are only the beginning of the list of services I provide to my clients as a self-employed freelancer.  I also develop websites with full-featured e-commerce solutions such as Zen Cart, Magento, and others.  Payment gateways, email marketing, and other enhancements to help small business websites succeed are all things that fall under my areas of expertise.

As a dedicated blogger and web enthusiast, I have done heavy research and implementation of search engine optimization (SEO) techniques, specifically as it relates to WordPress websites.  Going beyond coding websites that are search engine friendly, I engage in social media on a daily basis, actively promoting my brand and connecting with fellow creatives from across the globe.