November 09, 2005

Who cares about 80 million?

I was reading an article in eWeek by Jim Rapoza called Sunny with a chance of standards who said there over 570 million web users, with up to 80 million of those having problems with some web pages.

At least, with Internet Explorer use estimated to be around 85%, that means there are a lot of people using a different browser.

I was busy working yesterday and didn't do much surfing, but did see a number of pages that didn't work well with a non-Microsoft browser.

He says:

For a long time, companies that have built IE-only sites have fallen back to the standard excuse of "Hey, just about everyone uses IE."

Well, 85 percent of browser users is not "just about everyone."

Then he goes on to say, "Internet Explorer's falling market share is good news for the future of Web design."

But a lot of the problem he says in mainstreaming another browser other than IE is that it needs to be adopted by business users and applications. He suggests it needs more support from business, and he doesn't see it happening. But lately other reports I have read said Hewlett-Packard and Compaq were both going to be offering Netscape on all new consumer computers sold next year. I think this will be a help.

The future version of IE will address some of the hacks we have been using because of its lack of support for standards, but there will still be some CSS bugs evident in IE 7 that ships next year with Windows Vista.

I'm sure as the popularity for other browser grows, IE will have to increase their support for web standards if they want to continue to be the dominant browser.

Posted by Steve MacLellan at 03:57 PM | Comments (0) | TrackBack

November 08, 2005

The design of your site can affect your conversion ratio

I'm sure you have heard it said before that the "design of your site can affect your conversion ratio" and this is something you could be testing. Nick Usborne has an article on A List Apart that shows a three way test. The results he has published showed that one design out-pulled tow others by 15%.

Incidentally, the design I liked the best resulted in 53.28% fewer sales.

What one did you like and why?

Posted by Steve MacLellan at 03:04 PM | Comments (0) | TrackBack

August 31, 2005

Newsletter Archives

For anyone interested in subscribing to my newsletter the archives have been made available to the public. Please have a look before you subscribe to make sure you want to receive the email newsletter. This is a double opt-in list. After you subscribe you will receive and email with a personal link to confirm your subscription. If you do not click the link in this confirmation email, your email address will not be added to the database and you will not receive the newsletter.

Each newsletter you receive will also have a link so you can unsubscribe anytime. If for some reason you have any problem, you may reply to the newsletter email address. I will receive your reply and be able to help you.

Please follow this guideline before calling me a spammer and making any false accusations. I don't hold your email address prisoner. If you want off the list, you will get removed. Both the subscribe and unsubscribe links generated from my mailing list software are long URLs. The often wrap in email clients and this makes them impossible to click. The whole URL can be copied and pasted into your browser window if your email client gives you this problem.

Posted by Steve MacLellan at 08:50 AM | Comments (0) | TrackBack

August 25, 2005

Tutorials: CSS/Photoshop and XML Intro

There are two new tutorials at Sitepoint this week. They are fairly long, so make sure you have time to read them if you are interested.

The first one is "Get Cooking with Photoshop and CSS - 3 Low-fat Recipes" you can read here.

The second one, "A Really, Really, Really Good Introduction to XML" can be read here.

Posted by Steve MacLellan at 05:53 PM | Comments (2) | TrackBack

August 04, 2005

QuickTime and Podcasts

If I click to listen to a podcast using my default browser (Firefox) typically what happens is that the blog I'm viewing turns into a blank page except for the QuickTime plugin which loads and plays the mp3 file.

Although this is faster than waiting for Windows Media Payer or Real Player to load, there is a better way to do it without making the blank page appear with only the plugin displaying.

If you're just going to be speaking your podcast presentation it is possible to make the mp3 file size small enough so it appears to stream even for dial-up users using a 56K modem. The above file totals 57KB which is about the size of a small to medium sized webpage. But when you listen to the file it transfers at a rate of 16kps which should be small enough that there isn't any interruption even for slower connections. Unfortunately I don't have a dial-up connection so I can't test it to be sure. If you have a dial-up connection and care to post your comments, they would be most welcomed.

To create this small file size I recorded the file in .wav format using Windows Recorder, and then saved it in MPEG Layer-3 format with the selected attributes of 16kbs, 12,000 Hz Mono 2KB/s. Then once the file was saved, I right clicked on it and renamed the file extension to *.mp3

To get an idea of how to include the code in your blog or webpage, you can find a good tutorial here. Of course I can't guarantee this will work for all blog publishing software, but any that will accept html the way MovableType does, should work fine.

Posted by Steve MacLellan at 09:48 PM | Comments (1) | TrackBack

August 03, 2005

Lists and Buttons has published three articles by Michael Meadhra.

If you search this blog, for lists, you can probably find other similar tips.

Posted by Steve MacLellan at 12:37 PM | Comments (0) | TrackBack

July 31, 2005

Instant Audio

How many of you enjoy hearing instant audio when a web page loads?

Yup! That's what I thought...

I was working on a client's website when he remarked to me about how annoying it was to load his homepage and hear his instant audio message. I agreed. I told him when I was making edits to the page I would disable it for testing purposes. He wondered if this was something he should test.

The page was for lead generation purposes to get visitors to sign up for a course delivered by autoresponder. He decided he would like to do an A/B split test where the web site visitors would be split between pages. Half of them would load a page with the audio automatically playing, the other half would have to click a button if they wanted to hear the audio.

The test was over a two week period. The client didn't give me the exact numbers but he did tell me that there were a LOT more people signing up for the course on the page where the audio played as soon as the page loaded.

For anyone using audio on their website, this doesn't mean you should change your audio configuration. My client's results and yours may not be similar at all. You would want to test this for yourself. Then you are in a position to make an informed decision.

For those who aren't using audio on your site, and don't want to pay a monthly fee for a service that provides it, you can check out Quentin Brown's website where he offers a complete range of streaming media tools for your website.

Posted by Steve MacLellan at 02:31 PM | Comments (0) | TrackBack

July 25, 2005

Website Setup Tips

Do you know what you're going to do with your website next month? How about next year?

Don't feel bad if you can't answer that question. Most of us don't.

The first thing you might want to do (provided you are on a professional hosting account) is setup your site so that pages with an *.html file extension are SSI (Server Side Includes enabled) You can do this by editing a file called .htaccess that typically sits in your root directory. If there isn't one there, then you can create one from Notepad. To enable html pages to be parsed for SSI add these lines to the .htaccess file:

AddType text/html .html AddHandler server-parsed .html

This allows you to use SSI on all of your web pages that have an .html extension. Even better, if for some reason you wanted to include the output from a PHP script, you can use a SSI include file. The server will recognize the file with the .php extension being called into the SSI include, and execute the php script before sending it to the browser.

If you would like to see an example of this click here. Note the right hand side where it says "Latest News?" That is an example of using Carpe which enables you to parse an RSS feed and display it in a php file. The Php file is being pulled into the template using SSI.

Yes, you may not need this functionality when you are setting up a new site, but as soon as you start adding content to it, you will see how much easier it is to update one file when you want to change a menu than updating 100 files to change a menu.

Never add a webpage to your site with an *.htm extension.

I know, on past websites, you may have mixed and matched files with both .html and .htm extensions. Don't do it on any new sites. The .htm extension can become your ace-in-the-hole.

If something happens you need to have the ability to turn the first page someone sees on your site into a CGI script, that's what you are saving the .htm extension for.

To do this you would add this line to your .htaccess file:

AddType application/x-httpd-cgi .htm

Now if you do this later on when the site has already been built, and people have already bookmarked your site as, you can modify your .htacess file like this:

Redirect permanent /index.html

See once you remove the index.html (if that is what your site defaults to) the server will load "index.htm" by default, that could be your CGI script.

One precaution. You need to make sure your are hosted by a provider that allows CGI scripts to be executed outside the of the CGI bin.

If you these tips in mind when setting up a new website, you will be ready for anything.

Got a tip you would like to post here and share?

Posted by Steve MacLellan at 04:22 PM | Comments (0) | TrackBack

July 06, 2005

Aweber and the referring URL

Recently a client said to me that they don't know the URL's of their representatives websites who are referring them. Some do, some don't. Typically they refer people who are looking for a free report used for lead generation purposes.

My client uses Aweber. Aweber gives a location URL (the page where the form was submitted) but does not offer a referring URL.

The problem was solved using a little SSI and a hidden input field in the Aweber form:

<input type="hidden" name="referrer_site" value="<!--#if expr="${HTTP_REFERER}" --><!--#set var='ref' value='${HTTP_REFERER}' --><!--#echo var='ref' --><!--#else -->Not Available<!--#endif -->">

It should be noted that not all systems and browsers send this header or the correct one. Use this code at your discretion.

Posted by Steve MacLellan at 06:00 AM | Comments (0) | TrackBack

June 08, 2005

First Business: Preview

Over the course of the next few weeks there will be tutorial posted to the other blog in multiple sections that will show you how to build your first business website.

first-cover-small.jpg 225x245

I hope to have the first part ready next week. You can check this page to keep track of it's progress or to buy when it is ready.

Posted by Steve MacLellan at 12:47 PM | Comments (0) | TrackBack

June 07, 2005

Web Standards and CSS

An article on Robin's site led me to a link led me to an article titled "Web Standards in the Real World: An Interview with Molly Holzschlag.

She says:

CSS is ready for prime time

I hate to dis-agree but....

But when your client says they want a link or tag line placed at the bottom of the third column and you email the client and say, "Gee, I'm sorry... but the DIV and CSS used don't support this, you're going to find the client saying, "Look, do I have to find someone else to do this?"

You say, "No" ...because you want your money, and then go ahead and break every rule in the book.

The client that hires you to build his/her website, doesn't understand coding practices and limitations. All they understand is what they want.

The image/icon on the bottom of the website that takes you to the W3C validator to verify the site as Xhtml strict type document, doesn't mean a damn thing to your client.

And if you're only writing web pages that validate as W3C Xhtml strict, that you're not living in the real world.

Posted by Steve MacLellan at 02:38 PM | Comments (0) | TrackBack

June 06, 2005

CSS Selectors

A nice article from Michael Youssef on Learning to use CSS Selectors and how to group them is available from

This article is meant for beginners, so if you already have the basics mastered you can skip it. On the other hand, it you're new to CSS it is a "must read."

Posted by Steve MacLellan at 01:37 PM | Comments (0) | TrackBack

May 03, 2005

Clickbank or PayPal?

It seems lately I've landed on a number of sites selling their products through Clickbank, but below the link to purchase the product at Clickbank is a PayPal button.

If you are an affiliate for a site/product that does this, then you're going to lose sales commission if the traffic you send to the site decides to use PayPal to pay for the product.

I had a couple of people write to me recently and thank me for referring a certain affiliate site to them that offered a digital product that would solve their problem. Just for the fun of it, I logged onto Clickbank and discovered I had not made a sale after these people had thanked me.

Well... now you know why...

So I wrote to the owner of the program and said, "Look, this isn't working for me. I like your product and don't mind recommending it to folks, but it would be nice to make the odd commission sale."

The owner of the program wrote back to me and said they do a lot of PPC advertising and find the conversion ratio at about 2.5% with 30% of their purchasers opting to use PayPal. Then he asked me if I had any suggestions...

The whole point of an affiliate network is you pay people to help promote your product. Naturally, if they aren't making any money doing this, then you're not going to have affiliates very long... which means you have to turn to other methods for advertising such as PPC.

So I wrote him a note:

I don't don't how many affiliates you have. Of course with Clickbank... you never know how many affiliates you have. But if they send people your way, they should be compensated for helping you sell your product.

If it were me... here is what I would do.

I would enable your html pages to be parsed for SSI by adding this to your .htaccess file:

AddType text/html .html
AddHandler server-parsed .html

then on the index.html page I would add this code:

<!--#set var="category" value="$QUERY_STRING" -->
<!--#if expr="${QUERY_STRING}" -->
<!--#include file="" -->
<!--#else -->
<!--#include file="" -->
<!--#endif -->

If there is a query string on the end of the URL then an included file, "" (which is just the html containing the clickbank ordering information) can be inserted into the page.

If there isn't any query string then "" will be included in your page. This html would include both options, Clickbank and PayPal.

Yes using this method you would lose some sales. People being sent to your site from an affiliate wouldn't have the option of paying by PayPal.

But, if affiliates start getting their sales commission... then they will promote the program more and you will make more sales.

I've been promoting this program for a while and have made zero sales. If other affiliates have been finding the same thing... you aren't going to have any affiliates.

I think it is important that you use a tracker when deciding to become an affiliate of any program. You need to know how many click you are sending affiliate sites. But it is also a good idea to examine each one to see if there is a way you might be losing your commission.

If you find some of the affiliate site owners doing something similar, you can send them a link to this article.

If you are setting up your own affiliate program, use this code as your own. Make sure your affiliates get paid for their work if you want to keep them.

Posted by Steve MacLellan at 07:14 AM | Comments (0) | TrackBack

April 22, 2005

Web Development Tutorials

I was reading some articles this morning and discovered a CSS tutorial at and had a browse through it. The tutorial was well written in plain easy to understand language. This prompted me to take a second look at the site.

There is a ton of knowledge at this site on various aspects of web development, including forums you can register at to post questions to. Anyone trying to get a handle on developing their own website should make this site a favorite.

Posted by Steve MacLellan at 07:51 AM | Comments (0) | TrackBack

April 20, 2005

Cool looking dropdowns

Aaron Gustafson says:

So you’ve built a beautiful, standards-compliant site utilizing the latest and greatest CSS techniques. You’ve mastered control of styling every element, but in the back of your mind, a little voice is nagging you about how ugly your <select>s are. Well, today we’re going to explore a way to silence that little voice and truly complete our designs. With a little DOM scripting and some creative CSS, you too can make your <select>s beautiful... and you won’t have to sacrifice accessibility, usability or graceful degradation.

No doubt about it. They are nice to look at, but some testing has show it may not work on all browsers. There seems to be a difference of opinion as Stuart's readers discuss the idea over at the DHTML & CSS Blog Sitepoint blog.

I tried it in Firefox, IE 6, and Opera 7.0 and I agree Opera has problems with it. This might not be such a serious problem. Typically, regular Opera users are quick to download new browser updates and Andy posted a comment claiming it worked on Opera 7.51.

This is the first part of the article and according to Stuart, Aarron will address accessibility issues.

Aaron has made the code available for download if you would like to try it yourself.

Posted by Steve MacLellan at 07:05 AM | Comments (0) | TrackBack

April 04, 2005

MTS Spammers -- goodbye!

In a previous post I detailed a little trouble I was having from spammers using the Manitoba Telephone Systems Internet Service. Since they have thousands of subscribers, I didn't want to completely ban potential clients from, at least, my contact information.

I have found over the years that most work comes in through referrals. I have a number of clients who have never seen my website. They get my number passed on to them from someone else and give me a call. When you sell a big ticket item, people (in most cases) are going to phone you before hiring you.

I found a webpage listing some free website hosts and signed up for an account. Then I added these lines to my .htaccess file at

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^142\.161
RewriteRule .*

The above lines takes into account MTS complete IP range.

What happens is that when someone tries to connect to from they get redirected to here.

Who knows? Maybe if enough MTS users complain, maybe it will prompt them to re-consider their position. I would have to say the chance are very slim. You just never know...

Posted by Steve MacLellan at 10:53 AM | Comments (0) | TrackBack

March 31, 2005

Index Content from A-Z

Chris Heilmann article at titled "Easy as A,B,C — dynamic A to Z indexes" shows a way to create a large dynamic sitemap that can show or hide the items under the letter clicked on. It is compatible for older browsers and or browsers with Javascript disabled. This means it should be search engine friendly too.

He says:

"Government websites in the United Kingdom are legally bound to offer an A to Z index..."

This might seem a bit extravagant for small to medium sized sites, but if you are operating a large content site, it could be something you would consider. He makes it easy for you too. You can download a zippered file that contains all of the files — including examples, the CSS and Javascript.

Even if you don't plan on building a content site right now, it still might be a resource you can use later. The way search engines seem to be going crazy about indexing every article posted to a blog; I used to believe that whoever has the most toys when he/she dies... wins! That was yesterday's thinking. Replace the same phrase with the word articles for a more current version of the same old saying.

Jeff Alderson and Rod Beckwith say:

Have you ever wished you could simply snap your fingers and content that's specific to YOUR website subject matter magically appears?

They have created software that will allow you to easily add specific keyword content to your site in a matter of minutes. I wouldn't be surprised to find a lot of people offering content generators in the months to come. If that's the way Google and the other major search engines want it... I don't see what else we can do but give it to them.

At least you will have a way to dynamically organize multiple articles and categories in and easy to find index that will do double-duty as a sitemap.

Posted by Steve MacLellan at 05:58 AM | Comments (0) | TrackBack

March 30, 2005


Recently I had a request from a client who wanted to survey his subscribers as to whether or not they had purchased a particular product. There was only two answers, of course — yes or no. In each case there was a textarea input asking for more information.

He wanted to make sure that they didn't put data in both textarea inputs, so they were asked to click a link depending on whether they had bought the product or not. This hid or showed the right input and helped to eliminate any confusion.

If this give you some idea on how you might be able to use something like this, you can find a tutorial here

Posted by Steve MacLellan at 07:02 AM | Comments (0) | TrackBack

March 28, 2005

Controllable Navigation Bars with JavaScript

Alejandro Gervasio shows how to create "Controllable Navigation Bars with JavaScript" in a two part article on this week.

You can read part 1 here, and part 2 here.

Posted by Steve MacLellan at 04:50 PM | Comments (0) | TrackBack

March 23, 2005

Creating TABS for your web pages

Gavin Kistner shows a way to implement tabs on your page using CSS, a little JS, and semantic markup which degrades gracefully on browsers with CSS unavailable or disabled.

He also provides the files if you would like to download them and use them, and claims "It should work with any modern, standards-compliant browser."

Posted by Steve MacLellan at 10:54 AM | Comments (0) | TrackBack

March 17, 2005

Rounding Corners Without Images

A few years ago the only way to round corners in your html was by using images and tables. You have probably read a number of articles since that show you how to do it without tables and images. Alessandro Fulciniti has a good tutorial on how to do this using CSS and Javascript.

His article shows several examples using

He says if he used images instead:

"If we'd use one of the css technique based on background images, probably we'd used 18 images, maybe some extra and non-semantic wrapper and a lot of css declaration. Could you imagine the kilobytes that were spared? Probably, about 18-20Kb or so."

You can read the tutorial and see that he has made available a zip file so you can download the html and the css of the examples that were presented.

Posted by Steve MacLellan at 07:53 AM | Comments (0) | TrackBack

March 15, 2005

Form Construction

A new article on from Apress Publishing offers great insight on various ways to build forms for your website. It primarily looks at four methods using:

1. Tables
2. Tableless
3. Simple and more accessible using the <label> tag
4. Use of a definition list to define label and form control pairs

Following a summary of these four methods the article strays into the use of tabindex, accesskey and using CSS to style your forms. Then it takes a peek into using <fieldset> to group form sections and using the <legend> tag that can be used to surround your form with a stylish border.

Read the article here.

Posted by Steve MacLellan at 07:41 AM | Comments (0) | TrackBack

March 11, 2005

Form Construction

A new article on from Apress Publishing offers great insight on various ways to build forms for your website. It primarily looks at four methods using:

  1. Tables
  2. Tableless
  3. Simple and more accessible using the <label> tag
  4. Use of a definition list to define label and form control pairs

Following a summary of these four methods the article strays into the use of tabindex, accesskey and using CSS to style your forms. Then it takes a peek into using <fieldset> to group form sections and using the <legend> tag that can be used to surround your form with a stylish border.

Posted by Steve MacLellan at 06:25 AM | Comments (0) | TrackBack

March 03, 2005

Floating lists side-by-side

In order to have two lists side-by-side the only way we used to be able to do it was by placing both lists in a table cell. Anyone who has mastered tables knows this isn't any big deal, but trying to do it without tables using CSS can prove to be a bit of a challenge for some.

Formerly a surgeon, Nandini Doreswamy is now a systems and wireless LAN engineer living in Auckland, New Zealand. Her passion for web standards emerged when she designed websites for the two companies she owns and operates, Radius Networks and Helion Training. In her article Bulleted Lists: Multi-Layered Fudge, she says:

Designing our company’s website in CSS was coming along nicely until I hit a roadblock. The challenge was to create two columns of bulleted lists in the flow of the text. The layout I had in mind was something like this:

Paragraph 1
Bulleted list | Bulleted list
Paragraph 2
Bulleted list | Bulleted list
Paragraph 3
Bulleted list | Bulleted list
...and so on

You can view the page she was having trouble with and use your browser "view source" to see the nice clean job she did of marking the page up.

My only comment is I might have used and XHTML DTD instead of HTML 4.01 Transitional. Still... a great job, and great article.

Posted by Steve MacLellan at 11:27 AM | Comments (0) | TrackBack

February 23, 2005

CSS Zen Garden — Resource Guide

This web page has numerous links to CSS resources and articles including:

If you're interested in learning to write web pages using CSS, you might want to add this site to your bookmarks.

Posted by Steve MacLellan at 07:31 AM | Comments (0) | TrackBack

February 22, 2005

Introduction to CSS Positioning Properties Part 1

Alejandro Gervasio's, one of my favorite writers for, new article gives you a good introduction to CSS positioning. This might be of interest to anyone thinking of building their own website using CSS. It is an important building block.

Years ago when Table Layouts became popular with Netscape 2.0, and have since become the core building block of most website since then, many authors (and still to this day) have problems with the implementation. Really, it all comes down to a good understanding of the basic building blocks.

In December, 2004 I wrote an article called "Z-index imagination" which showed you how to layer elements on top or underneath other page elements. In essence what you do, is stack items on top of other items. But before using Z-index to achieve this you need to understand positioning elements.

If any of you would like to review "Z-index imagination" you can find it here.

Posted by Steve MacLellan at 08:11 AM | Comments (0) | TrackBack

February 16, 2005

What can you do with html lists?

An article on by Apress Publishing is really a fairly complete tutorial on using html lists. From proper structure to more advanced usage — this is a good tutorial. It doesn't include include using Lists to make buttons but it goes as far as to show you how to make navigational menus and mini-tab shapes.

You can read the article here.

If you find that whetting your appetite and decide you're ready to use Lists with CSS to make buttons, you can find a nice tutorial here.

Posted by Steve MacLellan at 08:56 AM | Comments (0) | TrackBack

February 09, 2005

CSS Shorthand at a Glance

Alejandro Gervasio has a new article published by called "CSS Shorthand at a Glance" and it is important to note that for some elements, like font properties, don't have any particular order they need to be specified in, while others do. Propeties for margin and padding, etc., always start at the top and move clockwise around the page.

ex: <div style="padding: 0px; 10px; 0px; 10px;">text</div>

This pads both sides, but not the top or the bottom becasue we have those values set to zero.

If you're already getting comfortable writing CSS this article might save you some time, and extra bytes in your stylesheets. You can read it here.

Posted by Steve MacLellan at 08:30 AM | Comments (0) | TrackBack

February 03, 2005

Building Friendly Pop-up Windows

Pop-up windows can be accessible, search-engine friendly and non-invasive, when they’re properly implemented. An article at shows you how to build these, without ticking off your site visitors. Believe it or not, pop-up windows can server another purpose besides just annoying your site visitors.

What I like about this article is that shows you how to build them using a workaround, using target="_blank" so that if your site visitor has Javascript disabled, the content will open in another browser window. This is a very sensible approach... one I've used for years on clients' websites.

You can read the article here.

Posted by Steve MacLellan at 08:47 AM | Comments (0) | TrackBack

January 27, 2005

Hands On CSS Tutorial

Westciv offers a hands on CSS tutorial. They say:

This tutorial teaches CSS using both hand-coding and Style Master for Windows. If you want to learn CSS by hand-coding alone, simply work through all the exercises and code examples and skip all the specially styled Style Master instructions.

It seems with the popularity of blogs, most which use Xhtml and CSS, that there is a lot more people interested in CSS these days. I'm not familiar with all of the blog software programs out there, but I know editing the MT templates for this blog was all done by hand. Understanding how to hand-code CSS isn't that hard, and it is something that will immensely benefit you in the years to come.

So if you are looking for a good tutorial to brush up on your CSS, check it out!

Posted by Steve MacLellan at 09:56 AM | Comments (0) | TrackBack

January 24, 2005

Using Carpe with WordPress

Someone sent me a question last week wondering how to use Carpe in their side panel/column with Wordpress. Wordpress is an open source blogging program and recognized as one of the top blog software programs available today. If you are unfamiliar with it you can learn more about it here:

> Given that wordpress cannot cope with Javascript I need to convert
> the RSS feeds to HTML, I understand that "Carp" is the best to use
> Do you know anything about this?, Is there another solution perhaps?

I haven't installed Wordpress for anyone but I understand all of the pages are based on PHP templates... and so is Carpe

The install for Carpe isn't that hard, but you need to know how to set permissions on directories. The instructions seem pretty clear if I recall.

Just to see what all of the fuss was about I installed Carpe on my site, but after I installed it and saw what it was all about, I didn't do anything with it. You can see my test page here.

If you re-size your browser you can imagine what it might look like in your side column.

If you use your browser view source you will see the html mark-up is very generic... no font tags headings or style information.

That makes it perfect for people to syndicate or include into the blog. Here is why:

You put the content into a new DIV tag that you add to your wordpress template. Let's say you call it like this:

<div id="carpe">
require_once '/home/yoursite/carp/carp.php';

Now that you have an ID assigned to the tag you can style the tags within that DIV... example

#carpe {

background-color: #ffffff;
overflow: auto;

#carpe p {
font-family: arial, verdana, sans-serif;
font-size: 10pt;
#carpe a:hover {
background-color: yellow;
text-decoration: underline;

See? The tags relating to that DIV ID can be styled separate from anything else. (This is only an example) This is what I would do if I wanted to include my carpe syndicated page within the body of my blog.

So.. example any <p></p> elements inside this unique DIV will inherit the styles specified for the correct ID.

They have some examples on the Carpe website about adding style but I don't like their idea as well as my own ;-)

> I don't want to call my
> techie every five minutes if you understand!!!

The only thing you might have trouble with that I can think of is setting permissions for directories. But it is done the exact same way you set permissions for a file. About 7 years ago (I think) I wrote a tutorial on using WS_FTP and in the tutorial on page 16, I show how to set permissions on a file. You would follow the exact same procedure by highlighting a directory in WS_FTP rather then a file. You can see the tutorial here.

Posted by Steve MacLellan at 07:26 AM | Comments (0) | TrackBack

January 17, 2005

Smart CSS multi-element rollovers

Found a nice article by Simon Collison called Smart CSS multi-element rollovers which not only provides a tutorial on how to build your own, but links to a generator to help you build your own.

Posted by Steve MacLellan at 08:35 AM | Comments (0) | TrackBack

December 23, 2004

Cool tool to help you create your first CSS template

People new to developing websites are learning from a lot of old tutorials available on the Internet. It is quite common to see the use of the CENTER tag to align elements... and most beginners are still using font tags. Constructs like this have been deprecated which means outdated by newer constructs... usually in favor of CSS.

I found an interesting online tool that will help those new to CSS build their own template.

You can try it here. This seems like a good way for beginners to get started — once they create the template they want, then they can try and adjust some of the settings to see what kind of changes it makes in the layout.

If one decides to use the template they create for their site template it would be a good idea to take the CSS out of the top of the document and use it as an external stylesheet. To this remove... cut everything out between the <style></style> tags and paste it into a Notepad file and then save it as stylesheet.css. Make sure to remove the <style></style> tags from the .css file.

Then create a link to the stylesheet in the <head></head> part of your html document like this:

<link rel="stylesheet" href="stylesheet.css" type="text/css" media="all" />

If one was to put their template on the web you might also want to include these meta tags in your <head></head> element:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="mssmarttagspreventparsing" content="true">
<meta name="description" content="">
<meta name="keywords" content="">

When you're learning a lot of people don't know how to create thing like this form scratch, so by using a tool like this, it can help accelerate the learning curve.

Did you find this useful?

Posted by Steve MacLellan at 07:51 AM | Comments (0) | TrackBack

December 14, 2004

Last chance to say good-bye

Benjamin Disraeli, British politician (1804 - 1881), said, "There are three kinds of lies: lies, damned lies, and statistics."

That being said, if you can believe browser stats, they are showing Mozilla based browsers at 21.2%% and Netscape 7 at 1.2%. I don't know why they would report Netscape as different from Mozilla. Netscape 7 is built on Mozilla, and so are a number of other browsers, application suites and development tools. You can find a good list here.

With Mozilla/Firefox/Netscape popularity growing, this means a possibility that a lot of people visiting your site will not be able to see popup windows if you are using them.

With the release of Service Pack 2 for XP users, Internet Explorer can block certain popups. As a matter of fact, when the service pack is installed the popup blocker is turned on by default. For reference please see this Microsoft page.

This doesn't mean it will block requested javascript windows, but unrequested popups will be blocked. These are often used to contain a departing message to the user.

Some people have also reported that if SP2 users set their security settings to high, that it will also block links that use "target="_blank" to open new windows. I don't have any way of testing the validity of this statement. If you would like to email me and tell me it is true, it would be much appreciated.

So how can you get around this?

John Watson wrote a small Perl script that will help. Once this script is installed... if a user clicks on an external link on your site, it loads a temporary webpage telling them they will be re-directed in X seconds. Then you can have a link to your newsletter sign-up page (or any other page), so if they click your link it cancels the external click and brings them back to you. You can grab a copy of this script here.

Then you will need to edit the links pointing to external sources on your site like this:

<a href="/cgi-bin/ OF LINK">URL Title</a>

If you look through the Perl Code you will see a few references to "print <<EOT;" and these are the areas you can edit to make the redirect page look similar to your website if you want to. Or... it might be an nice idea to make it look a little different -- just whatever you prefer.

Posted by Steve MacLellan at 06:58 AM | Comments (1) | TrackBack

December 07, 2004

Z-index imagination

Some of the new constructs to html over the last few years allow for greater imagination. You may have seen sites that employ newer design strategies, but didn't realize what you were looking at. One of these new constructs comes from the use of CSS to utilize the advantages of "z-index"

This CSS property allows us to layer elements on top/ underneath other page elements. In essence what you do, is stack items on top of other items. This can get fairly complex, but what I will show you today is fairly simple, something that will perhaps stoke a little imagination for your upcoming projects.

Let's look at the simple example I have prepared for you:

This isn't a single image. The image of the guy in the background is underneath the gray window and text headline. It is a z-index of 1.

The window has a z-index of two which means when positioned on top of the first element it takes prominence over the first element which was the picture with a z-index of 1. The gray window is a transparent gif image so you can see the guy underneath.

The text headline has a z-index of 3 which means that when it is positioned over the other two it takes prominence over the other elements so it appears to be on top of the guy and gray window.

The way to make sure these things are placed on a page exactly where you want them to be, is to place the stacking elements within a <div style="position: relative;"></div> so that the items inside this div are positioned relative to the div rather then the top/left of the browser window. Then you can use a little absolute positioning to jiggle the stacked elements around in the container div and move them up, down, right, or left.

If you would like to explore this idea even further, there is a good article on using stackable images to create CSS based image maps. Have a look here:

Posted by Steve MacLellan at 07:37 AM | Comments (0) | TrackBack

December 01, 2004

Div Overflow

On a site I a built for a customer, the gentleman wanted notes in a side bar. Granted that was easy enough to do... except for one page. The content in the sidebar exceeded the length of the content in the main area, and by extending the content below this area, it gave it an odd appearance.

I emailed the customer and asked if it would be acceptable to make this long content scrollable and placed in a fashion so it doesn't extend past the content in the main part of the page. He replied this would be fine with him.

iframes means including a different page, which is more work, increases load time, can cause problems with printing, navigation, and getting the page properly indexed by search engines.

I added a div overflow to an example template I showed you two weeks ago. You can see it here

The CSS for it look like this:

background-color: #FFFFFF;
overflow: auto;

...then I placed the scrollable content in between <div id="overflow"></div>

The CSS wasn't added to the print stylesheet, so that when you print the page, the whole column will print off to the right, just as it is when you look at the page in your browser.

Older browsers like Netscape 4.x, don't support the @import method for including stylesheet data, which makes the page backwards compatible. If you use your browser "view source" you will se this in the <head></head>:

<link rel="stylesheet" href="print.css" type="text/css" media="print" />
<style type="text/css" media="screen">@import url("stylesheet.css"); </style>

Overall, it is a pretty handy way to include more data in a limited area.

In some cases you may wish to include a lot of data in a table and have it scrollable. Very few browsers support this though. See:

What they don't tell you on the above link is you can hide this from browsers that don't support it with an alternate stylesheet like this:

<style type="text/css"><!-- @import url(hidefromie6.css) screen; --></style>

The above alternate stylesheet will be hidden from from all current MSIE browsers from 4.x and up, and Netscape 4.x browsers.

Posted by Steve MacLellan at 06:44 AM | Comments (0) | TrackBack

November 30, 2004

How about Getting a little Publicity?

A good article I read called "How to Build Credibility Through Bylined Articles" by Sally Saville Hodge says that most people thinking about PR think of press releases. For any of you have written press releases, you know how hard it is to try and make it sound as if it isn't an ad. Sure, it would help if we were all Dr. Paul Hartunian, but since that isn't going to happen any time soon... what can we do?

Sally's article talks about writing op-ed articles — articles that appear opposite editorials, trend articles, which could be anything that might affect the general public, and "how to" articles. She claims a strategy of submitting articles is "a successful strategy for various types of consultants."

I really like this idea. You can read the full article here.

Yes, a little experience wouldn't hurt either. I've tried sending out press releases, submitting articles to magazines, etc, and now every time I think about it I feel like Snoopy from the Charlie Brown series where Snoopy would sit at his trusty keyboard typing out"

"It was a dark and stormy night..."

The good news is... persistence will pay off. Yes, some might accuse me of "being a Pollyanna" but after successfully discovering what doesn't work, after awhile you have to learn what does.

Another inspiring read last week came from Joan Stewart a.k.a the The Publicity Hound's newsletter about a Publicist Robert Smith who wanted something more than the standard brochure to set himself apart from all the other public relations practitioners in the U.S. So he called the local cable company and got his own TV show.

I know... hard to believe! Entrepreneur Magazine is going to be sorry for rejecting my articles once they see me on TV. ;-)

With Joan's permission, here is the story...

Create a TV Show

Publicist Robert Smith wanted something more than the standard brochure to set himself apart from all the other public relations practitioners in the U.S.

So after seeing a tip in this newsletter about starting his own TV show, courtesy of his local cable TV company's public access channel, he tried it.

"I had never heard of getting a local cable show free," said Robert, who lives in Rockford, Illinois. "So I contacted my local cable provider and they finally had open slots."

The two-hour show, called Biz Briefs, features Robert interviewing local entrepreneurs, CEOs, authors, speakers and other experts who either live in Rockford, or are visiting.

"I chose a business format because I own a PR firm and it's an excellent strategy to get new clients," he said. "It's a superior access vehicle that sets me apart from other PR firms pitching the same prospects. And it works."

The first episode was a repeat of his "Publicity Made Easy" seminar. All other shows are being videotaped, with Robert acting as host, asking his guests questions. After each taping, all he has to do is drop off the tape.

After his first show, which aired for two hours and then was repeated, his phones rang non-stop.

"I got a huge account from a doctor with several locations," he said. "When I call prospects, I'm not calling as owner of a P.R. firm. I'm calling as host of a local TV show. And I get put right through."

The most difficult part of the project, he said, was waiting for a slot to open on the cable channel.

His next idea?

"I'm going to set up public affairs shows for all of my clients," Robert said.

It can work for you, too, and it's a fabulous way to get thousands of dollars in free publicity. Just call your local cable TV company and ask about how to create your own show, or a series of shows. Some cable companies charge a small fee to rent the camera equipment, even though air time is free. Other companies provide the camera person. Others, like the company Robert is working with, accept videos.

The possibilities for content are almost endless. Attorneys can interview other attorneys in their own firm. The owner of a dog training school can demonstrate how to train dogs. A hair salon can offer styling and beauty tips.

If you live in Illinois or Wisconsin, or you'll be passing through Illinois on a book tour or speaking engagement and want to be featured on Robert's show, or visit his website at

If you have a P.R. practice, I know you can quickly and easily learn 24 more things you can do to find clients. Marcia Yudkin joined me recently during a teleseminar called "24 Ways to Attract Clients to Your P.R. Practice." It's available as a CD, cassette tape or an electronic transcript that you can download and be reading in just a few minutes. Read more about what you'll learn at

Reprinted from "The Publicity Hound's Tips of the Week," a free ezine featuring tips, tricks and tools for generating free publicity. Subscribe at and receive free by email the handy list "89 Reasons to Send a News Release."

Posted by Steve MacLellan at 06:50 AM | Comments (0) | TrackBack

November 16, 2004

CSS Boxes around Testimonials

Many websites these days bear witness to the popularity of colored boxes used for quotes, testimonials and other places where the authors want the text to stand out from the rest of the page.

Over the years there have been a number of hacks to create this type of effect using Tables, but some of the attributes used in the making, such as leftmargin, topmargin, marginwidth, marginheight and bordercolor, have never been part of a formal specification.

The markup might look something like this:

<table align="center" cellpadding="15" cellspacing="0" width="300" style="bordercolor="ff0000" border="1" bgcolor="#0000ff"><tr><td><font size="+1" face="Arial,Helvetica,Sans-Serif" color="#ffffff"><i>Some text</i></font></td></tr></table>

All it takes to start making a mess of your web page is to forget to close one of these tags. We all know that is easy enough to do. Luckily there is a much better way using CSS. You can replace all of the markup up above with:

<div class="myblock>Some text</div>

The beauty of this method is you only have to create the style information once and then you can call the style into your page as many times as you like. Lets look at the CSS:

.myblock (
font-family: arial, verdana, sans-serif;
font-size: 10pt;
color: navy;
border: solid 1px black;
background-color: #C8F8E8;
margin-left: 5mm;
margin-right: 5mm;
padding: 15;

Of course you can always add additional properties and values or remove ones you don't want. Using this this type of construct saves you from using invalid markeup and depreciated tags and attributes. You are also less likely to make a mistake when re-using <div class="myblock>Some text</div> in place of tables.

If you would like to see an example, see this article on my blog:

I've modified the stylesheet so that any time I use blockquote tags in my articles it puts the text in a neat blue box.

If you would like to know more about this method please see the URL below for reference:

Posted by Steve MacLellan at 07:40 AM | Comments (0) | TrackBack

November 04, 2004

The Next Version Of Microsoft Office

The next version of Microsoft Office looks like it may be shipped the summer of 2006 and is independent of the new OS codenamed Longhorn which will be released after Office. However reports I have been reading don't generate a lot of excitement about it.

When you're not an Office Power user some of the new features may not mean a whole lot to you:

Jason Brooks, eWeek writer, whose article "Office 2003 vs. OpenOffice.Org" tells the story of FN Manufacturing Inc., in Columbia, S.C, who tested Office 2003 against OpenOffice. These testers, who were used to older versions of Office said "there were few differences between Word 2003 and earlier versions of the Microsoft word processor."

If you are running a small business with a handful of employees or work in a home office, MS Word is likely the application from the office pak that sees the most use. If this is true in your office... there doesn't seem to be a whole lot of reason to upgrade from Word 2000.

And the testers from FN found the same thing during their testing. FN Manufacturing Validation Engineer Doug Shaffer said that Writer's "layout and command locations are similar to Microsoft Word's" and that it was "very easy to perform the standard basic tasks in Writer."

They were impressed with the Open Office processor to be able to save documents to PDF format which saves them a lot of time and money. For MS Word, this requires an expensive plugin.

If you are interested in reading the full article you can find it here.

My summary of it is that if you're not a MS Office Power user there doesn't seem to be a whole lot of reason to upgrade to either Office 2003, or Office 12 (the next version of Office under development right now) when Open Office might suit your needs just as well. You can download Open Office from here and when you visit take note of the Mailing List, articles, newsletters, and blogs that offer support.

This article isn't intended to bash Microsoft at all. Running a small office means there is always something to spend money on, but there isn't any sense in spending it on expensive software if you don't need it.

Posted by Steve MacLellan at 09:25 AM | Comments (0) | TrackBack

November 02, 2004

Google Adwords Made Easy

A very Simple, Step by Step, Roadmap to Google adwords Success.

By Salihu Ibrahim

Getting started.
The aim of any Google adwords campaign is to turn a profit. Whether tangible or intangible. Maybe you are looking to make more sales by generating very targeted traffic or have more visitors sign up for your ezine, download a free or trial software, free ebook etc. Ultimately the aim is to have a good return on your investment (ROI)

However, the immediate goals of your campaign is to
1. Have a high click through Rate (CTR)
2. and a low Cost per click (CPC)

These two parameters, together, put your ad in a good position (typical 1st to 6th position) on the search results page.
Google adwords is unlike other pay per click search engines where the highest bidder gets the highest position. Google wants to present the most relevant ads, matched with the keywords that generated these ads to searchers. So that a high click through rate means your ad is relevant to searchers even if the CPC is low.

If Your ad is presented (impressions) 1000 times and the CTR is less than 0.5% of the number of impressions, your ad gets slowed by Google and could eventually be disabled. If you ad is slowed you can edit it and run it again.

So here is your dilemma. To generate a decent CTR you need a good position. To get a good position you need a popular (competitive) keyword. Using a popular keyword means you will have to bid high. Yet you want a low CPC in the range of $0.05 to 0.10.

What to do? Look for not so popular keywords. Obscure keywords that few people use to search in your industry. Very few advertisers will be using them too. Identify many of these keywords. Make sure they are targeted. Add all the obscure keywords together. This will give you a good list that will generate a good amount of impressions, good CTR and at a low CPC.

Looking for good and obscure keywords

Use the keyword tools to check for currently used keywords, related keywords and alternative keywords. You can use the tools at:

1. Overture tool at
2. Google tool at
3. wordtracker at
4. Espotting at

How to discover your obscure keywords

There are various ways to discover obscure keywords related to your industry or search term.
1. Use keywords with very low search count at Overture keyword suggestion tool. These are not competitive Keywords. They are not often searched on. But remember you are trying to add all obscure keywords to make a great keyword list.
2. Add variations to the keywords generated above. For example market to markets, marketing, marketers marketable.
3. Check your website log and fish out keywords searchers are already using to locate your site or product. You will be surprised at what people type into search engines to locate your site.
4. Use the Thesaurus and dictionary to check for alternative words synonyms. You can use more than one type of dictionary. When checking for meaning of words, you will often see in the description, alternative words with same meaning as the word you are checking for.
5. Ask friends, family members, what words they will use when searching for your product or the theme for your Website.

NOTE: Always keep in mind that, what the keyword tools will give you is a tiny fraction of what millions of people use on the Web. The keyword tools at overture won’t give you those keyword count because very few numbers of people use them at a time or period.

Features Provided by Google to Achieve your desired CTR

(1) Exact Match
(2) Phrase Match
(3) Broad Match
(4) Negative Keywords

Exact Match: To designate your keywords for exact match, put them in brackets. For example, (niche markets). So your ad will only show if "niche markets", without the quotes, is searched for. It won’t show up for market niche. This is a highly targeted way of getting visitors to your site. Unfortunately, you will get very few impressions using the exact match feature. Though your CTR may be high.

How to use it

Use exact match feature when you are bidding on competitive keywords. Because of the low number of impressions exact match generates, not many advertisers maybe using it. So experiment and at the same time try to lower your cost per click (CPC).

Phrase Match: To designate your keywords for phase match include them in quotes. For example “niche markets”. Your ad will appear when these words are searched for at the search engine. Also when words are added to those. Example, “building niche markets” or “niche markets discovery”. The main keywords will always appear in the other which you set it. That is, niche markets and not market niche. Your ads will not appear for “niche successful markets”. The phrase match generates many impressions. Though not as targeted as the exact match, it more targeted than the broad match option.

How to use it.

This is the feature you will most likely be using often . Build a good keyword list. In the niche market example, you will not appear for niche marketers or niche marketing so include these and others in your keyword list.
One important feature you should use with your phrase match option is the negative keyword. This is explained below. Negative keywords help to make your keywords more targeted by allowing Google not to add them to your main keywords.When you designate a keyword as negative, Google will not add it when you are using phrase or broad match. If not, Negative keywords could make your keywords to have different meaning than what you intended. For example, a word like free. If you are not offering anything for free and free is added to your main keywords, then clicks to your site might be wasted and costing you money. So designating the word free as a negative keyword will make Google not to add it to your keywords

Broad Match: Broad match is the default setting for Google adwords and your ad is automatically shown for expanded match, plurals and other variations. So be sure to remember to change it when starting a campaign. Choosing the broad match feature allows Google to add other words to your main keywords. This makes this feature to be the least targeted. It produces the most impressions and probably the most CTR. But due to its non-targeted nature, could produce very low conversions or ROI. Using the “niche markets” example in broad match, you could have your ads displayed for searches on “locating niche markets”, “niche markets ideas, “succeeding in marketing niches” etc. your keywords will come out in many variations in plurals.

How to use it.

To have an appreciable success in using broad match, you need:
(1) To build three and four keyword phrases. This limits the number of words Google adds to your keywords phrases.
(2) Build a good and extensive negative keyword list.
(3) Use the Google keywords suggestion tool. It will show you words that will appear with your keywords. That is expanded matches.

Negative Keywords: This feature is used to eliminate words that could be added to your main keywords. For example, the word free. Just add a minus in front of the word ( –free ) to make it negative, this word will not be added to your keywords. Example, if your keywords are “niche ideas”. Your ads will not show for “free niche ideas”.
It is extremely important to use this feature so as to eliminate unwanted keywords, unwanted meanings and untargeted keyword phrases.
This is also important when you are dealing with children’s products. You will need to eliminate porn words so that your money is not wasted. Imagine a user searching for adult content and clicking to your site. Use of negative keywords is an additional way of making your keywords more targeted when you are using the phrase match or broad match options.
One tool you can use to search out negative keywords is at

How to build a good campaign structure:

A good campaign structure saves you loads of time and contributes immensely to a successful adwords campaign.

Campaign 1 Campaign 2 Campaign 3

Adgroup 1 Adgroup 2 Adgroup 3

Ads 1 Ads 2 Ads 3 Ads 4
Keywords keywords keywords keywords.

Google adwords gives you the flexibility to test your ads as much as you want. You can delete ads that are not giving you the right CPC,CTR or ROI. Create more ads to take the place of the deleted ads. Test as many ads as you like until you attain your desired CTR or CPC.

But you can only do this if your campaign is properly structured and set out well from the start.
You need to know what ads and in what adgroup(s), associated with what keywords, are giving you the required results. And those that are not. So that you can quickly delete the unwanted ads. On this basis you can set out your campaign structure as indicated above. For example, explaining campaign 1.
Start testing your large keyword list by distributing them among the different adgroups. Group keywords that are:

1. closely related in one adgroup.
2. group keywords that are highly competitive in another adgroup.
3. group keywords that are not competitive.
4. group keywords that are in plural
5. group keywords with misspelled words etc.

If you have different kinds of products with different keywords, create one adgroup for each product. This allows you to create ads specific to keywords for each product . So, you don’t have general ads which apply to all your keywords.

The general idea is to group your keywords as you like them so that you can easily identify which ones are producing the required results.

For each adgroup you can now create different ads. For easy management , 2 or 3 ads per adgroup is okay. I use two ads per adgroup in promoting my home base business ideas site. You can use the same set of keywords you have allocated per adgroup for ads 1, 2, 3. the only difference in the ads will be the title and description. At the ads level you can change any ad that is performing below expectation. delete and write new ads. If it is the keywords that are performing badly, delete that adgroup and create another. However, do not get into the habit of creating and deleting adgoups. If you test and track your results properly at the ads level you will not need to replace any adgroup after deleting it. Your result would have shown you that the keywords for that adgroup are not profitable and need not be used again. You then research new obscure keywords that you can use.

Note: If you use the same keywords for more than one adgroup only one adgroup will be shown at any point in time. Also Google optimizes ads on an adgroup basis not on keywords basis. Better performing ads gets shown more often. For example,

Keyword : “high heel shoes”
Ad #1 15% CTR
AD #2 5% CTR

When high heel shoes is searched on ad #1 shows more often than ad #2.

Keyword: “low heel shoes”
Ad #1 10% CTR
Ad #2 20% CTR

When low heel shoes is searched on ad #2 shows more often than ad #1.

However, you can choose to remove the optimization feature so that you can test all your ads equally.

Achieving your goals

(1) Producing your best impressions. You need to present your ads to the right searcher ( visitor ). This is important so your ads are not displayed to the wrong searchers, thereby generating wasteful clicks. For best impressions-
(i) good keyword research
(ii) good negative keywords
(iii) use phrase match

(2) Producing your best CTR. The click through Rate (CTR) is the number of times your ad is clicked on compared to the number of times it is viewed, in percentage. So if out of 100 impressions (views) your ad gets clicked once, your CTR is 1%. To produce your best CTR put your main keywords in the title and description of your ads. Example, keyword phrase is “niche markets”.

Title: Discover niche markets
Description: Download software for discovering
Niche markets fast.

A user searching for niche markets will be instantly drawn to your title because it same as what he is looking for. The title catches the eyes and the searcher is drawn in to read the description. The description also talks about niche markets. Before you know it…click… and one very targeted visitor has gone to your website. This type of keywords – title – description gets the most targeted clicks in a adword campaign.

(3) Achieving your best return on investment (ROI). To produce your best ROI you must apply the keyword – title – description approach described above. This gets the searcher to your landing page. The landing page is the page your visitor will first see after clicking on your ad. This page must be specific to the product you are selling or the action you want the searcher to take. Do not send the searcher to your home page unless the action you want the searcher to take is there.

So it is keyword – title – description – landing page. You don’t want the searcher looking all over your website for what has been described in your ad. Also do not frustrate the searcher by a slow loading page.

(4) Achieving your best cost per click (CPC). The ultimate aim of every advertiser is to have minimum CPC while maintaining a good ad position. Typically position 1 to 6. Even though writing good and enticing ads is the key to a good CTR, having a good keyword list is the key to many targeted impressions. A combination of these two will produce your best CPC.

Tips and Tricks

(1) Keyword variation. Here are some easy ways to generate variations in your keywords.

(i) Make keywords plural. Example, niche market to niche markets.
(ii) Adding the ing to verb words. Example, market to marketing.
(iii) Adding er. Example, market to marketer.
(iv) Adding or. Example, invest to investor.
(v) Adding ment. Example, invest to investment
(vi) Adding -. Example ebusiness to e-business.
(vii) Combining and separating words . Example, Web site to Website.
(viii) Common misspellings . Example, successful to successfull
(ix) Interchange words . Example, niche marketing to marketing niche.
(x) Replace words . Example, marketing niche to marketing segment.
(xi) Use American and English spellings. Example, vigor and vigour.

Use these anywhere it is possible in your keywords or keyword phrase.

(2) Tweaking your ad copy: Are your ads attracting enough clicks? . Here are some ways you can use to generate ideas for greater CTR ads.

(i) Study the ads of your competitors. Study the way title and descriptions are written.
(ii) look at the regular result pages when you type in your keywords at Google search engine. Study the description and the title of the sites that come up.
(iii) Use very specific words like download, free, trial etc if it is relevant to your campaign.
(iv) Include the price of your product if you know that it has a comparative advantage.
(v) Emphasize benefits to users in your ads.
(vi) Write out your ad in the best possible way. Do not, at first, limit yourself to the number of words allowed. When you are satisfied then try to reduce it to number of words allowed per line.

(3) Tracking: Tracking the results of your campaign is about the most important aspect of your adwords campaign after building a great keyword list. Tracking helps to indicate where your campaign is heading, good or bad. You need to carefully follow your impressions, CPC, position, etc. All these are present in the report panel of the adwords interface.


There are different situations you will find yourself as you try to achieve and maintain a profitable adwords campaign. Sometimes, you will find that adjusting certain parameters might improve or get worsen your the campaign. The trick is to test. Don’t be afraid to test . It is only by testing that you can really get to understand how adwords works and then master it.

Let’s look at some situations we might find ourselves in while running our adwords campaign.

(a) This can happen when you are just starting your adwords campaign. You have probably not read enough about the Google adwords program before drawing up your campaign.
(b) Also it can be that you have not done your keyword research very well . You might be using keywords that people hardly search for.
(c) It could also be that your daily budget is so low that Google would not want to exceed your budget. So your ad is presented very few times.


i. Set your daily budget high. Do not worry. Google will not exhaust your daily budget. If your daily budget is set to $100 for example. You will be spending about $10 daily. Or if you set it at $20 you could be spending $5 to $7 daily. Setting the daily budget high enough gives you plenty of data to analyze your campaign. Your impressions will be high. CTR will be high too if your ad is well written.

ii. Brainstorm and research good keywords. Use the available keywords research tools to know which keywords searchers use to find your site .
iii. Write good ads that follow the keyword-title-description-landing page formula. This will increase your CTR and conversion.


This is the situation new advertisers to Google adwords find themselves. Here you will be trying to convert most of your impressions to clicks. You can do this in two ways.
I. Increase your cost per click (CPC). Increasing your CPC places your ad in a high position which in turn generates high impressions. This will increase the cost of your campaign considerably. If your conversion is not good enough you might be running a loosing campaign.

II. Write better ads using the keyword-title-description-landing page formula. Searchers will be more likely to follow through from search results to clicking on your ad. This increases your CTR.

NOTE: If you have a keyword that is generating high impressions but low CTR , it is advisable to delete it. But if the keyword is important and related to your services or product you can create an adgroup for that keyword and also create ads for it. Then test and see which ad is producing the desired CTR. Further more, deleting poor performing keywords is like deleting your past poor performance. So that, the new adgroup will not be hindered.

Also, it not good to leave keywords that are not generating impressions. Delete them. Though Google will not penalize you for these keywords until the impressions have reached 1000, low impressions generating keywords will hinder keywords that are performing well. This is the case, because the Google adwords system budgets for all keywords and if your daily budget is low, your keywords, including the performing ones, will be shown less often. The system will not exceed your daily budget.

Bottom line: use fewer keywords for a low daily budget.


Every advertiser wants high CTR with low CPC. Typically in the range of $0.05 to $0.10 per click. But in industries where there are heavy players with costly keywords, high CPC could be the order of the day. How will a small business compete in a situation like that ?

1. Again the answer is in keyword research. Extensive, in depth research will provide you with the obscure keywords that few people have discovered.
2. Another way to compete is to know how much a visitor is worth to you. You have to have a good conversion rate at your website.
If for example,

A click is $1 and you are converting at your site at 5% conversion rate. This means, for every $100 spent 5 visitors buy your product. For you to break even (that is, no profit no loss) your product must have a margin (profit) of $100/5 clicks=$20.

So if each product has a profit of $20 on top of the cost price, then for each $100 spent you will recoup $100. Anything less than $20 margin will mean a loss for you. And anything higher than $20 means a gain in your campaign.
However, due to fluctuations in ad position, CTR, conversion rate, competitive bidding by other advertisers, it is advisable to ensure that your visitors worth or click worth is such that the profit on each product is high enough to allow for these fluctuations. For the example, $35 to $40 margin would be good . I must stress that this depends on your product, industry, competitors etc. The example is to provide a general idea of what to do.


This is the dream of every advertiser. Achieving this takes a lot of hard work and testing. Google adwords is unique in that your ads go online immediately. This allows you to test your ads as much as you want. When you are not satisfied, write new ads. You can also set CPC for campaign as well as for individual keywords.

One trick you can use to achieve this, is to initially set your daily budget high, CPC high, and write good ads. This will position your ad well, 1st to 6th position. Once you have achieved a good CTR (4% to 7%) gradually lower your CPC while retaining a high daily budget. Always remember that a high impression and CTR will get you a high position even if your CPC is low compared to your competitors’


In a situation like this, low conversion is due to several factors

1. Bad or wrong landing page. Your landing page must be directly related to your ad. Do not allow the visitor to search for the information which brought him to your site. Use the keyword-title-description-landing page formula. On how to create a landing page that converts very well go to

2. Keywords that produce high impressions, high CTR but are not exactly related to the landing page. There are some keywords that are closely related but have different meanings. For example, the keyword phrase “web pages”. Your title and description could be for a software that builds web pages. But the searcher is looking for how to write web pages that sell. This results in many clicks to your site with very few conversion.
So you should make your title and description as explicit and direct as possible. This leaves the searcher in no doubt as to what is on the landing page.


A good ad position is from 1st to 6th position. A good ad position is obtained by having a high impressions and high ctr.


This is typically between 7th to 10th position. A higher position is achieved by either increasing your bid or writing better ads for higher CTR


1. Keyword research . Very important. The bedrock of your adwords campaign.
2. Good campaign structure as set out above.
3. Write good title, description with relevant keywords in them.
4. Follow the keywords-title-description-landing page formula
5. And test, test and test. Track your results efficiently.

This free report is by Salihu Ibrahim.
The author has worked online since 2000. The report is based on the author’s years of intensive Google adwords campaign experience. For more incisive articles on home base business ideas, check out his website at OR You can subscribe to his bimonthly newsletter BIZWISE by sending a blank email to with subscribe as the subject.
For solid strategies on building a successful home base business, check out

Posted by Steve MacLellan at 07:27 AM | Comments (0) | TrackBack

A Quick Way to Get Started on the Internet

The last two weeks I spoke about building templates for your website. It is hard to please everyone. A few told me they liked the newsletter and a few others complained that although they enjoy it... sometimes it is too technical. Sometimes I don't stop to think that many don't live and breathe technology. That point was really driven home today, when a client wrote to me and asked me, "What is a Blog?"

So with Christmas coming up quickly... I'm sure some of you are probably wondering how you can make a little more money... and how can you use the web to do it?

If you wanted to sell an eBook and you don't know anything about programming, you would need to look at getting a WYSIWYG (What You See Is What You Get) editor to create a web page for it. If you are concerned about making your code standards compliant there is a free editor called XStandard, which claims to be the leading standards-compliant plug-in WYSIWYG editor for Windows and browser-based content management systems (IE/Mozilla/Firefox/ActiveX). The editor generates clean XHTML Strict or 1.1, uses only CSS for formatting, and ensures the clean separation of content from presentation.

I haven't used the program, but if you're just trying to make a few sales for Christmas, I wouldn't worry too much standards at this point. The editor that comes with the full version of Netscape or Mozilla will serve your purposes quite well. You can drag images onto the screen and type in it using controls like you would find in MS Word.

Other free WYSIWYG editors include:

Nvu (pronounced N-view, for a "new view")


Sure, the look of your site might not be overly fancy, but the important thing to keep in mind is... it is your text that sells. Your headlines, sub-heads and copy are far more important then a fancy look. If you don't believe me, just ask Jim Straw at

If you find yourself wanting to start with something a little more, you can find all kinds of templates here: This complete business package comes with templates, eBooks, software tools and scripts and has everything you are likely to need for only $19.95.

So if you don't have a lot of experience, but think you can use a WYSIWYG editor well enough to build a web page, the only thing you need to worry about is your copy. There are a few free guides around that will give you a few ideas. Try this search on Google: is owned and operated by AMS Computer Services. I've been hosting clients who need hosting on their servers since 1997. You can get a starter hosting account there for $5.99 per month. They will also register the domain name for you for $20.

Once your book has been written you can join ClickBank for a one-time $49.95 activation fee, and no monthly fees. They can accept the payments for you, allow you to have affiliates and manage the whole thing for you. From sending you YOUR check, to paying your affiliates for you.

You can create the eBook in almost any word processor and then convert it to pdf format. There are a number of free tools around that will help you do this. Here is one:

An online service that will convert your Word document for free (up to 2MB) can be found here:

Once you have this setup, contact people you personally know and tell them about it. They can sign up for an affiliate account for free from Clickbank to help you promote your eBook. Some people will help you, others won't.

You can also burn the eBook to a CD and sell copies locally using Flyers. You would want to make sure that the flyer explains it is a book on a CD that requires a computer with a CD player to read it.

Now is the time to do it. According to an article by eWeek: says "Forrester Research is projecting that online holiday sales this year will hit $13.2 billion, which represents a 20 percent increase compared with last year."

For those of you who joined this list and are new to all of this, any questions you have may be posted to my discussion board at and if I can, I will help you take some more of the mystery out of it.

Posted by Steve MacLellan at 07:19 AM | Comments (0) | TrackBack

October 29, 2004

How To Automate Requests For White Papers

Here's the deal:

You want to generate more subscribers by offering some "white papers" or "special reports." Since you're going to set up a dozen or so, you don't want to hire a programmer to come in and re program your mailing list program to send out a dozen or so personalized messages that contain the link to the download or URL.

Actually, it might be better to not invoke the mailing list program at all. You want them to request the report, send them a personalized message and ADD them to your web based mailing program without having to handle all of the extra email addresses manually. Oh yes... you don't want to process individual emails either. You would prefer to receive NO email.

So you put a little form on your website that looks like this:

<form METHOD="POST" ACTION="recv_devel.php">
<input TYPE="TEXT" NAME="NAME" VALUE=""><br>
<input TYPE="TEXT" NAME="Email" VALUE=""><BR>
<INPUT TYPE="submit" VALUE="Submit">

Note that the action of the for is a call to a PHP page where the magic happens. Part of the great thing about FORMS and PHP is as soon as the form is submitted the variables are available in the next page for us to work with.

The first part of your new file might contain some acknowledgement for your prospect:

<h2>Thank you</h2>

<P>An email has been sent to you with instructions on how to
download the white paper.</P>

That's it! That's all they see. Even if they use their browsers "view source" assuming maybe they used a fake email address, they still won't get the URL. The URL is enclosed in PHP tags which is not available to the user from the "view source."

The next few lines on the page look like this:


$outputstring = $Email."\n";

$fp = fopen("cgi-bin/mail_list.txt","a");
fwrite ($fp, $outputstring);


Here we use three PHP functions fopen(), fwrite() and fclose()

The thing that is the MOST important to make sure you have is the "a" in the fopen() string. This is called a "file mode" and the "a" tells the script the file is being opened to append information to the end of the existing content. That means that each time we add a new email address to the file, it adds a new line and appends it to the end of the content in file. Nothing is over written or is the file altered in any other way.

Once the file has been opened by the script and it understands where in the file it is placing the information the fwrite() function write the email address to the file and then it is closed by fclose().

Now that we have the email address added to our mailing list we need to look after sending a personalized email to our prospect. Here is what the rest of the script will look like:

$toaddress = "$Email";
$subject = "Your Special Report";

$feedback = "Thanks for requesting the special report. I am sure you will find it useful. If you have any questions please feel free to email me\n You can download your special report at\n

Best Regards\n
Steve MacLellan\n";

$additional_headers = "From:\n"

$mailcontent = "Hi ".$NAME."\n"
."Thank you:\n".$feedback."\n";

mail ($toaddress, $subject, $mailcontent, $additional_headers);

There are a lot of other things that could have been added to this code to format the email better and add error checking to the script. But for the sake of brevity, and understanding the basics, it has been omitted. And if you click on the link for the special report... guess what? There isn't one. (he-he)

If you study the code it should help give you some ideas on how to go about implementing something like this. If you need to hire a programmer to write something a little more complete, send me an email and I can write it any way you want.

Posted by Steve MacLellan at 03:26 PM | Comments (0) | TrackBack

How to Syndicate RSS Content

Since most blogging programs create RSS feeds, you can take advantage of this by using their headlines to create content for your site. Naturally you would have to ask permission for this but most folks don't mind a little free advertising. Many sites offer their feeds to syndicate, but some folks who are jumping on the blog bandwagon don't know how to tell you how to syndicate their content. This article will show you how you can use their headlines or offer others yours.

I wrote a similar article two years ago called "How to Setup Coranto so Other Websites Can Display Your Headlines" and if you would like to review it you will see most of the instructions on how to work with "RSS File Advanced" which is Perl/CGI script you would need to install. If you read that you will get a working knowledge of how to use the script. You can read the article here:

If you have read through that then to grab another sites' feed you have to edit line 65

Starting on line 65 you will see:

%services =  (
   'eWeek'             => "\teWeek",

I made a minor mistake here and called this eWeek, and this isn't an eWeek newsfeed. That doesn't matter here. What matters is the 'eweek' in single quotation marks, will be the name of the javascript file. I created a blank file using Notepad and saved it as eWeek.js, and uploaded it to the directory where I keep my xml files. I set the permissions of this file to 777 because the RSS fetcher script will need to write the Javascript into this file.

Notice on the end of the file being called is : \teWeek"'
\t is Perl, that means to leave a space the width of a tab... which is followed by the name of the feed.

On line 44, this is where you tell the script where your files are stored:

# directory where data will be stored, chmod 777
$datdir = "/home/homebus/public_html/xml";

So if you have followed along here, you see we have set this up to pull in a newsfeed. I would save the script and upload it to your CGI bin with a unique name. For example... I called this file ""

Set the permissions to be executable (755) then call it from your browser and watch what happens. It will take a minute or so to do the fetching. Once it is done, using a template of your website you can add a Javascript to call the headlines:


If you want more control over how this data is displayed in your html template, you can put it in a table. If you don't like the fonts being used by the script you can edit the table code in the Perl script.

You can follow this very same method to offer your blog headlines to others, or use it to pull in someone else's headlines. For each newsfeed you want to call, you will need to rename the CGI script and change the settings on line 65.

To display someone's headlines other then your own you will have to ask for the path to the XML file if you do not see an icon on their site that links to it.

If you would like to see the example (mistake and all) I created pulling in the newsfeed used in this example, visit:

Posted by Steve MacLellan at 03:24 PM | Comments (0) | TrackBack

Build Your Website with a Plan

Unless you're building your very first website, and it is only a handful of pages, you know what it is like to say "Gee... why didn't I plan for this from the start?"

You can plan for shortcuts when you build the website.

I don't know how many times I've been asked to work on a site that contains a collection of *.htm files and *.html files. Yes, you've heard it doesn't matter -- both extensions are OK. Sure they are... but you just lost a shortcut you could use later by using both, *.htm and *.html file extensions.

Let's look at an example...

Suppose all the webpages on your site have the html extension. A year later you park another domain name on your account, and your hosting account doesn't support multiple names. Luckily for you, you found a script that will do it for you... but it is a CGI script and has to be loaded as soon as someone arrives at your site. The worse part is you have been promoting for a year, and by default most servers are set to look for and load either index.htm or index.html in your root directory.

Cool! Now you have use for an htm file. You can add this to your .htaccess file:
AddType application/x-httpd-cgi .htm

Then when someone clicks on your CGI script will execute.

Of course there may be someone who has bookmarked your homepage as:

...and you had to remove the index.html so the index.htm (CGI script) would execute.

You can add another line to your .htaccess file:
ErrorDocument 404 that anyone who tries to access your site through the index.html file gets automatically re-directed to the new index file which could be called index1.html

And of course one of my favorites...

If I'm building a large site and have a feeling that the client hasn't planned real well, I'll add this to my .htaccess file:

AddType text/html .html
AddHandler server-parsed .html

This lets me use SSI in html files. This one can be added anytime, but if you build your menu into an included file, and you change it 20-30 files later, you don't have to re-edit all of those files.

Plan for allowing shortcuts when you build the site, and you won't be looking at a lot of work or expense later.

Posted by Steve MacLellan at 03:22 PM | Comments (0)

Use XSSI to Publish A Weekly Schedule

Let's assume you have sold access to a weekly course. People are logging on to your site for new instructions and lessons every day. Due to your schedule, you are finding it hard to keep the lessons updated and manage your other responsibilities. You want to have the the lessons for each day appear on the same page so you don't have to keep giving your students a different URL each day.

Or let's assume you have to publish a weekly schedule.

Or maybe... You want your site visitors to see a fresh list of articles every day when they visit your site.

In each of these cases the content could be prepared in advance, on a day when you have time, and then use XSSI to make sure the correct page loads on the correct day; regardless of whether it is a list of articles or lessons.

XSSI means Extended Server Side Includes.

The first thing you need to do is tell the server what day it is so it will know what page to load:

<!--#config timefmt="%A" -->
<!--#set var="weekday" value="${DATE_LOCAL}" -->

This gets the day, and stores it into a variable called "weekday."

<!--#if expr="'${weekday}' = 'Sunday'" -->
<!--#include file="" -->

So... if it is Sunday, this tells the server to load the "" (included file fragment) into your lesson plan page. What if it isn't Sunday? What if it is Monday?

<!--#elif expr="'${weekday}' = 'Monday'" -->
<!--#include file="" -->

Notice the change from "#if" to "#elif" -- this means if the condition isn't met, and it isn't Sunday... then if it is Monday... load ""

Let's continue:

<!--#elif expr="'${weekday}' = 'Tuesday'" -->
<!--#include file="" -->

<!--#elif expr="'${weekday}' = 'Wednesday'" -->
<!--#include file="" -->

<!--#elif expr="'${weekday}' = 'Thursday'" -->
<!--#include file="" -->

<!--#elif expr="'${weekday}' = 'Friday'" -->
<!--#include file="" -->

<!--#elif expr="'${weekday}' = 'Saturday'" -->
<!--#include file="" -->

There are only seven days in the week so we need to tell the server that we have reached the end of the conditional statements so the last line of code is:

<!--#endif -->

Now you can do your lessons plans when you have time, upload them and let the server deliver the content on the day your site needs to be updated.

Posted by Steve MacLellan at 03:20 PM | Comments (0) | TrackBack

Absolute positioning for Search Engines

    > How do you tell a spider to index the upper
    > part of a page and not the lower part?

No. You can't tell it to skip indexing the top of the page, but what you can do is use CSS, absolute positioning, to place text containing keywords at the top of your page, that is invisible to users, but visible to search engines.

Let's look at an example.

Look at these two pages and see if they LOOK any different: page1 and page2.



    In any standards compliant browser they look the same.

Use your browser "view source" on page1 to see how far down you have to scroll before you get to any content. Then "view source" on page2 and you will see some keyword stuffing in a div tag that isn't visible to the user and isn't displayed in the browser. A search engine spider can see it though.

Using absolute positioning I've placed the content out of the range that the browser can display.

Did you happen to notice the meta tags for keywords and description? Google doesn't bother with these meta tags because they have been abused so much in the past. But there are other search engines beside Google. AltaVista, AllTheWeb and Teoma still take these tags into consideration, and there has just recently been launched (last week) two new META search engine crawlers that collect results from various sources and return what they deem the closest to your query. I forget the name of the first one, but the second one which I tried and like is

Clusty is a meta-search site, drawing its results from multiple engines and other information sources. Clustered-search technology does offer an innovative alternative for users wanting a different way to view results. Maybe it is a step ahead of the new MSN search engine. Likewise MSN added a technique for grouping, or clustering, search results by domain in order to make sure that users view results from a variety of domains rather than getting multiple Web pages from the same domain.

New search engines haven't been springing up so quickly the last couple of years since Google's World domination, but recently there are new ones emerging and I hear that some of Google's key people are quitting (maybe there is trouble brewing). As well, Microsoft is ready to give Google a "run for it's money" with its redeveloped MSN search. Justin Osmer, an MSN product manager, claims MSN Search has indexed more then 5 billion Web documents while Google's claim to fame is 6 billion documents.

Anyway, the point is — it is pretty hard to tell which way the train went by looking at its tracks so I wouldn't completely abandon meta tags yet.

Posted by Steve MacLellan at 03:18 PM | Comments (0) | TrackBack

Printer Friendly Pages

Yes, I am sure you have seen this on a lot of the bigger news sites etc. Just about every site offers a printer friendly version of the page you are reading.

What this says is that if a prospect can keep your information on their desktop for further study, this gives him or her a  greater opportunity to be able to order from you providing the printed page has your contact information on it.

You want to make sure that your fax, phone number(s) and address is on every page you write and put on the web. Especially if you're going to give them the opportunity to print your information

Part of the inspiration I received to write this article stems from discussions I have had with associates and customers about abandoned shopping carts. You know - these are the folks who were going to buy from you but for some unknown reason backed out of the ordering process at the last minute. Why?

There are several opinions as to why.  I don't really care why. The fact is - they backed out and you lost the sale. But even if they backed out, it doesn't mean you have to lose the sale. Not, if they already have a copy of your sales letter with your contact information on it.

A few years ago most browsers did not print web pages well at all. But newer browsers are capable of printing really well. The problem is you have the web sales copy buried in the design of your site. It is surrounded by flashing animated images, banners, buttons, colors and all manners of web page stuff that is not going to print well at all.

So this is what we need to accomplish:

 We need to separate the sales copy from the web display properties and page, to present something to the prospect that would print well.

 We need to include a small javascript that will be a link they can click on to print this page.

 We need to include with the sales copy that gets printed off, our contact information so they can call or fax, and a order form suitable for mailing or faxing.

 We also want to keep the expense of this project down because we don't want to be writing the same copy twice - once to fit in with the theme of the site, and once on plain white background with black text for printing.

For those of you with professional hosting on either *nix flavoured servers or NT servers, you are more then likely able to use a simple language called XSSI. This means Extended Server Side Includes and is developed from SSI but now allows the use of conditional statements such as "if", "elif," else, etc.

So if the main article on your page has been added to the template as an included file, you can easily separate it from the rest of the template. Suppose the file name of the article you are looking at is called "smallbiz.shtml"

Most servers parse files with the "*.shtml" extension for SSI commands. This means that the commands are carried out before the content is sent to the users browser. This is why you won't see the coding if you use your browser's "view source."

At the very bottom of the document you see a little icon for a printer and a link that invites you to click for a printer friendly copy. In this example, the included file in "smallbiz.shtml" is called "smallbiz_bodycopy.shtml" so that when we click that link it can either open in a javascript window, or you can use the link attribute TARGET="_blank" top open a new copy of the browser with the printer friendly document loaded into it. This will exclude all the extraneous web page stuff you don't want printed

By using a little pre-planning we have buried some XSSI commands in this document that could not be executed when the file opened in "smallbiz.shtml". We execute these commands by having the document recognize a server variable such as the name of the document itself. Using a little code like this:

<!--#if expr="($DOCUMENT_NAME=/smallbiz_bodycopy.shtml/)" -->
           <!--#include FILE="js.js" -->
                   <!--#endif -->

What this is doing is including a little javascript that will be placed at the top of the window that will be a javascript link to print the page. All we are including with this file is:

<p ALIGN="center"><a href='javascript:;' onClick='window.print();return false'>Click Here to Print this page.</a>
You don't see this when the content was included in the template because the NAME of the document at that time was NOT "smallbiz_bodycopy.shtml" but was instead part of "smallbiz.shtml" so this Javascript link does not appear when the content is embedded with the regular document.

See? So it is possible to have any amount of content buried within the printer friendly version of the web page but not have it visible until they click the link which launches the main document into it's own window for printing.

As well, at the bottom of the document you could include a generic order form. That would appear in the page that gets printed off.

<!--#if expr="($DOCUMENT_NAME=/smallbiz_bodycopy.shtml/)" -->
<!--#include FILE="generic_order.html" -->
<!--#endif -->

I say "generic" when in fact you could include a custom order for each page, but then this creates more coding for yourself. A generic order form can be called in using a template file that is used for several web pages.

I know some of you might think that a generic form might not work for all products and this may be true. Then, Eaton's seemed to be able to do it for the thousands of items in their catalogue.

You could even swap online ordering info with off-line ordering info depending on how they view the document. You could also include special formatting with CSS (Style sheets) and swap out the files.

Posted by Steve MacLellan at 03:16 PM | Comments (0) | TrackBack

Building a SEO Template Part I

I see a common theme on Internet now of making use of templates. Whether it is for link directories, SEO optimization or directory generators such as Front Page or SmartPages. idea is to get these pages a good ranking in search engines to help draw traffic into your site.

There a numerous theories of how search engines index your site, how far they crawl down page for content. There are still search engines that support META tag and ones that don't... such as Google.

So idea behind template is to try and get content of your page as close to top of document as you can, so that search engines that don't support META tags can read some of your content. Let's look at a possible template:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

<html xmlns="">

    <title>Something descriptive</title>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="mssmarttagspreventparsing" content="true" />
<meta name="Description" content="" />
<meta name="Keywords" content="" />

 <link rel="stylesheet" href="stylesheet.css" type="text/css" />


<div id="header"><h1>Main header content</h1></div>
<div id="main">
<div id="left"><h2>Secondary Main Header content</h2>


<div id="right">Other Links</div>


This template will be compliant and validate under current XHTML and CSS standards. Although it will display best in newer browsers it will be backwards compatible so it displays pretty good in older browsers too like Netscape 4.x

You notice we have included import and META tags for search engines that support them, and for those who don't, main content tag in is an h1 element right under BODY element.

We use an external stylesheet so Search Engines don't have to wade through data that doesn't mean anything to them.

Right under h2 element will be main content of page. Other links will be lower down on page in markup, but will appear in a right-hand navigational menu.

You will notice at this point there isn't any links to graphics in html. To keep presentation separate from content, these elements are in CSS file.

So CSS properties for body tag (using this example) are

body {
      background: #C0C0C0;
      background-image: url("images/x036.jpg");
      background-repeat: repeat;


This just provides main background color and background we wish to tile.

Then in CSS for id header, we have:

#header {
  border :  black solid 2px;
         width: 746px;
         margin : auto;
  height : 100px;
  border-collapse : collapse;
  background-image: url("images/header.jpg");

By placing this in a div, setting a width for it and setting margin to 0 it will center header information. You will also notice I've set a background image and set a border that will surround content to give it more of a template feel. This has effect of taking place of using TABLES for layout purposes. You will see more about this as we progress through this tutorial.

Next we want to take a look at "div id=main" because this is a container for two other div elements; "div id=left" and "div id=right"

#left will be main content area and #right will be navigational menu. It is constructed this way so first content search engines will index is closer to top of page and under our h1 header. All we really want to do with #main container div is to set up margins and width. This is it:

#main { margin: auto;
        width: 750px;

Again, margin is set to auto and with width locked to 750px it has effect of mimicking a centered TABLE. This wouldn't be so important if everyone was using same monitor resolution, set to 800x600, but recent reports show that almost half of online population is using 1028x768 or greater, since monitors larger then 17" became popular. So we want to center content so those with a larger display resolution aren't looking at a big empty space to their right.

Now we have our main container set, let's look at div id="left"

#left {
 border : black solid 2px;
 border-top: 0;
 width: 599px;
 float : left;
 background-color: White;

Over-all it has our border set to 2px; but since we already have a border at top from header div... we set top border to 0 so it doesn't look like we have an overly thick border at top. We have also told this "div" that we want it to float left. It will move as far left as #main will allow it.

only other thing to note about this #left is background color has been set to white, so our main content area can have black text on a white background.

Now let's look at #right div:

#right {
 border :  black solid 2px;
        border-top: 0;
 border-left: 0;
 width: 145px;
 height : 300px;
 float: right;
 background-image: url("images/right-background.gif");
 background-repeat: repeat;


You will see here that border top and left has been set to 0 so we don't have a border with a double thickness, but what is really important to note here is widths of two divs. One is set to 599px and other is set to 145px, which adds up to 744 pixels and not 750. But we have to include widths of our borders here. We have a 2px border on left, another which separates two columns, and another on right. Now we have filled 750 px width that we set in #main. If these are not exact, then you will find your two columns displaying funny... for example, your links column will hang below main content area, giving page a very unusual look.

I've created a template for this tutorial, and added an article to it. You can view it here:

You can click images at bottom of page to check and see if Xhtml and CSS validates.

Next week will be part II

Posted by Steve MacLellan at 03:06 PM | Comments (0)

October 28, 2004

Building a SEO Template Part II

My stats are showing only about 20% of you are interested in this template tutorial. This is Part II and the final part, so if those of you who are not interested... we will talk about something else next week.

Last week I said:

Now let's look at #right div:

#right {
 border :  black solid 2px;
        border-top: 0;
 border-left: 0;
 width: 145px;
 height : 300px;
 float: right;
 background-image: url("images/right-background.gif");
 background-repeat: repeat;


What we want to do now is add a bit more to the #right div. We want to put some links in here to other sections or whatever you want to link to. I think a nice CSS mouseover would be appealing.

You can see it in action here:

The only code we add to the html template is the links:

<div id="right"><ul>
 <li><a href="http://">Section #1</a></li>
 <li><a href="http://">Section #2</a></li>
 <li><a href="http://">Section #3</a></li>
 <li><a href="http://">Section #4</a></li>
 <li><a href="http://">Section #5</a></li>

A "div" means a division of a web page. Each division can have its own characteristics that are separate from the other parts of the web page. So the first thing I did to the #right div was setup the fonts by adding this code to #right:

font-family: arial, sans-serif;
font-weight: bold;
font-size: 10pt;

Then we need to define some of the other elements within this div:

#right ul {list-style-type: none;
           margin: 3mm;
           padding: 25px 0 25px 0;
#right li {margin: 0;
           padding: 5px 0;
#right li a {color: black;
             padding: 10px 0 10px 20px;
      background: url(images/brown-button.gif) no-repeat 0 50%;
      text-decoration: none;
#right li a:hover {margin: 0;
                   background: url(images/brown-button-hover.gif) no-repeat 0 50%;
     color: red;
     text-decoration: none;

When you specify all of the values to a property such as padding in the main UL, the values start at the top, and move clockwise. So the first value is the top padding, the second is the right padding, the third is the bottom padding and the fourth is the left padding value.

I create the two images the brown and red blocks which are 10x10 and the #right li a:hover color is set to red, so that when you mouseover a link, both the block and text turn red.

If you have followed this example, you should have a nice looking mouseover navigational menu without using any Javascript. Search engines won't have any problem indexing these links.

One other thing that is a good idea to add is another stylesheet:

<link rel="stylesheet" type="text/css" href="print.css" media="print" />

In modern browsers when want to print the page you can use an alternate stylesheet by specifying the media type as "print" which allows alternate formatting.

In this stylesheet I've removed all the graphics except for the validation buttons at the bottom, and also changed the 2px border around the template to 0px. If someone wants to print off your article, there isn't any sense in using up all of their colored ink or having borders on the printed page.

It probably wouldn't hurt if you were building templates this way to include some contact information at the bottom of the article. That way if your article gets printed off, anyone who sees it will know where to find you.

You can also try experimenting swapping out the images with other ones. If you replace the header, background and tiled image of the navigational column, you will have a whole new template.

Including the images, stylesheets and the html page itself, the total files size is 39KB and download of this template and article is:
33.6K   12.89 seconds
56K  7.81 seconds

On DSL/Cable it is about 2 seconds.

For those who are interested in exploring SEO friendly templates a little more, you can download all of the files used in this tutorial in a zippered file:

(Note: Sorry -- the download is only for subscribers to the HomeBusiness Websites Journal)

The images folder in this zippered file are common to both webpages. The file called "index2.html" uses "stylesheet2.css" and "print.css."

If you wish to discuss this tutorial or anything else published in this newsletter, please visit my discussion board at:


Another template I did had to be validated as XHTML 1.0 Transitional because of the Javascript. I noted with this template that the when you try to use an alternate stylesheet for printing that sometimes the styles from both stylesheets will be inherited. This isn't good.

To prevent this from happening you can call your two stylesheets in this way:

<link rel="stylesheet" href="print.css" type="text/css" media="print" />
 <style type="text/css" media="screen">@import url("stylesheet.css"); </style>

The @import method for screen isn't recognized by older browsers and seems to stop the template from inheriting style from this stylesheet when you print off the web page.

You can see an example here:

Posted by Steve MacLellan at 07:34 AM | Comments (0) | TrackBack