<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Interactive Llama :: Interactive media tutorials and tips &#187; HTML and CSS</title>
	<atom:link href="http://www.interactivellama.com/blog/archives/category/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.interactivellama.com/blog</link>
	<description>Interactive media tutorials and tips</description>
	<lastBuildDate>Wed, 23 Nov 2011 15:25:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Tips for responsive web design</title>
		<link>http://www.interactivellama.com/blog/archives/tips-for-responsive-web-design/</link>
		<comments>http://www.interactivellama.com/blog/archives/tips-for-responsive-web-design/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 15:52:07 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Productivity & Workflow]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.interactivellama.com/blog/?p=362</guid>
		<description><![CDATA[Right now, responsive pretty much all about the width of your website&#8211;although it may not always be that way. Responsive design is an approach though and not a specific technology (media queries, etc.). It&#8217;s about responding to the device the website is being displayed upon. For example, the appropriate design may change for touchscreens by [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.interactivellama.com/blog/wp-content/uploads/2011/11/responsive-example.jpg"><img class="alignnone size-full wp-image-364" title="responsive-example" src="http://www.interactivellama.com/blog/wp-content/uploads/2011/11/responsive-example.jpg" alt="" width="510" height="347" /></a></p>
<p>Right now, responsive pretty much all about the width of your website&#8211;although it may not always be that way. Responsive design is an approach though and not a specific technology (media queries, etc.). It&#8217;s about responding to the device the website is being displayed upon. For example, the appropriate design may change for touchscreens by making buttons larger.</p>
<p>People are used to scrolling up and down, so matching the width of your document to the width the browser is often the main goal. Although most of the tips below are related to CSS and media queries AND focus on informational sites (not web applications), I believe that JavaScript has a significant place to play in behavioral changes and touch implementations in responsive design. The following list is intended for front-end developers and designers that work with CSS regularly, but are just starting to build responsive sites.<em> </em></p>
<p><em>Note: I am not going to use the term mobile, but small-screen. Using  mobile implies that you are moving&#8211;not that you are viewing the site on  a small screen. (via <a href="http://www.zeldman.com/2011/04/27/%E2%80%9Cmobile%E2%80%9D-versus-%E2%80%9Csmall-screen%E2%80%9D/">Zeldman</a>)</em></p>
<p><strong>The decision trees of your layout multiplies with responsive design.</strong> Where should this item if the screen resolution is&#8230;? This adds complexity to the project due to the multiple (or continous with fluid layout) layouts. Be sure to plan out how many layouts you will create from the beginning. Small, medium, and large? Two small layours (landscape and portrait?) Start with a <a href="http://stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries">media query boilerplate</a> and add or subtract the media queries you need.<span id="more-362"></span></p>
<p><strong>Wire frame your desktop and small-screen version before writing any markup. </strong>This allows you to know where and what order your markup (HTML) will be need to be in to achieve correct placement in your desktop version and your small-screen version. If your site demands efficiency, you can subtract and add navigation elements with JavaScript, just make sure you have enough of the basic navigation to go to every page first.</p>
<p><strong>Make use of position absolute, relative-absolute and fixed.</strong> And know <a href="http://css-tricks.com/1191-absolute-relative-fixed-positioining-how-do-they-differ/">the difference</a>. You might want the logo above the menu in one version and below the menu in another. Short of moving your markup around (remove/insert) with Javascript. This is the only way to visually re-order your markup.</p>
<p><strong>Become familiar with fluid layouts.</strong> Knowing what adds up to 100% is helpful. Don&#8217;t forget to use percent margins and padding. Using percentages is called liquid layout or flexible layout.</p>
<p><strong>Decide what content is important for small screen</strong> (which are often mobile and thus have a low connection speed). If you are a brochure site&#8211;that is your main purpose is to inform, not complete a task, then don&#8217;t hide content if you are downloading it anyway.</p>
<p><strong>Make buttons big.</strong> If it&#8217;s something that most people are going to click, add some padding if it&#8217;s a text line. Avoid fat finger syndrome by making action item large enough for fingers.</p>
<p><strong>Plan on adding around 30% more CSS design time</strong> for a typical brochure site to be responsive also. You wil probably be more for your first responsive site.</p>
<p><strong>Use min-width over max-width for the width of your elements. </strong>Remember to scale media. Image, embedded objects (embed, object tags, video) should be scaled. Make them have a max-width of 100%. Read about creating <a href="http://webdesignerwall.com/tutorials/css-elastic-videos">CSS Elastic Videos</a>. I usually limit this CSS rule to the children of a #primary div. Another possible route is to use JavaScript, via <a href="http://fitvidsjs.com/ ">FitJS</a>.</p>
<p><strong>Use the correct video format for your device.</strong> The simplest way to achieve this is use a video distribution service (I like <a href="http://vimeo.com">Vimeo</a> for their minimal layout&#8211;if you pay) that will change the format for you.</p>
<p><strong>Style rules outside any media query is the default style.</strong> You need to make the choice of whether you are going make small or large (read desktop) the default CSS style sheet. I think that small first will become dominant in the long run, but you will need to a JavaScript media query polyfill/shim for browsers that don&#8217;t support media query, and if you are using HTML5 already, then you probably already have a polyfill like <a href="http://www.modernizr.com/">Modernizr</a> running anyway. Modernizr uses <a href="https://github.com/scottjehl/Respond">Respond.js</a> to allow min/max-width CSS3 media queries. I would claim that creating a desktop first style sheet would be best if you are editing an existing site to be responsive or working on your first responsive site. If you want an detailed overview of the desktop or small screen first debate, I suggest  <a href="http://zomigi.com/blog/essential-considerations-for-crafting-quality-media-queries/">Essential considerations for crafting quality media queries</a>.</p>
<p><strong>Use the most appropriate size image if possible.</strong> If you are going to use JavaScript, to create content that uses images (read slideshow, gallery, etc.), you might as well check the width of your browser window and request smaller images than the &#8220;desktop version&#8221; in order to speed up their download. You might considering lazy-loading related content also.</p>
<p><em>And finally&#8230;</em></p>
<p><strong>Forget about being perfect.</strong> Yes, it&#8217;s your job&#8211;you SHOULD have a close to pixel-perfect layout for the two or three devices that the majority of your audience uses, but for all those in between accept a less than perfect layout. And while I&#8217;m on the topic of perfect, these are guidelines that I&#8217;ve discovered in my small amount of responsive work, and are by no means rules or laws.</p>
<p>What guidelines have you discovered that aid in responsive design?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/tips-for-responsive-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiding an email address from spambots and spiders</title>
		<link>http://www.interactivellama.com/blog/archives/hiding-an-email-address-from-spambots-and-web-spiders-less-spam/</link>
		<comments>http://www.interactivellama.com/blog/archives/hiding-an-email-address-from-spambots-and-web-spiders-less-spam/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:24:22 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[crawlers]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[obfuscation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spam-bots]]></category>

		<guid isPermaLink="false">/blog/?p=204</guid>
		<description><![CDATA[There is an army of spiders out there.  Some, like GoogleBot, you want scanning your site to be listed in their search engine. Many however have a devious purpose&#8211;to collect email addresses to add to spam email lists. If your email address is already out there, then there is no pulling it back in. The [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-266" title="spider-webs" src="http://www.interactivellama.com/blog/wp-content/uploads/2009/06/spider-webs.jpg" alt="spider-webs" width="510" height="283" /></p>
<p>There is an army of spiders out there.  Some, like GoogleBot, you want scanning your site to be listed in their search engine. Many however have a devious purpose&#8211;to collect email addresses to add to spam email lists. If your email address is already out there, then there is no pulling it back in. The only way to eliminate spam is to create a different address and inform all your contacts that you have changed email addresses.</p>
<p>Ways to combat email spam:</p>
<ul>
<li>A non-linked image</li>
<li>HTML entity encoding</li>
<li>Client-side obfuscation/abstraction (via JavaScript)</li>
<li>Server-side redirect</li>
<li>Contact form (no email address listed)</li>
</ul>
<p>If your email address, is spelled out with any client viewable code, it is possible to obtain. Now that search engines can read PDF documents, including your email within a PDF as text may be suspect. I have not gone into great depth on any of them below but have provided a short description of each method with advantages and disadvantages listed.<span id="more-204"></span></p>
<p><strong>A non-linked image</strong></p>
<ul>
<li><em>Anyone viewing images can see your address, but has to visually remember and re-type this address</em></li>
<li><em>Low chance of your email address being grabbed by a spam robot</em></li>
</ul>
<p>This is how Facebook displays email addresses in one’s profile. It is inconvenient to the user, since he or she cannot click the email address in order to send an email. The spider may grab one’s email address if a spam robot uses image reading (Optical Character Recognition) though this is unlikely at this time.</p>
<p><strong>HTML entity encoding</strong></p>
<ul>
<li><em>Anyone with a typical browser will be able to contact you</em></li>
<li><em>Medium to high chance of your email address being grabbed by a spam robot</em></li>
</ul>
<p>This method encodes certain characters of the email address into Unicode.  For instance, “Bob” in Unicode is “&amp;#66;&amp;#111;&amp;#98;” Since computers create Unicode, it does not seem like a hard task to decode from Unicode. I do not recommend this solution.</p>
<p><strong>Client-side obfuscation/abstraction (via JavaScript)<br />
</strong></p>
<ul>
<li><em>Anyone with a typical browser will be able to contact you</em></li>
<li><em>Low chance of your email address being grabbed by a spam robot</em></li>
</ul>
<p>This anti-spam solution is not a cure all&#8211;but it is my favorite right now. Some spider bots do run JavaScript. The majority of the spider robots do not however. The method described here not only prevents your email address from being obvious simple text, but it also performs levels of obfuscation and abstraction that makes it useable for actual browsers to read and gracefully degrade for those without JavaScript running.</p>
<p>In a related form, if you create your JavaScript function or call of the function on the server-side (ASP, PHP, etc) then you can <a href="http://pubs.logicalexpressions.com/Pub0009/LPMArticle.asp?ID=755">slightly change the function over a period of time</a>.  The user will never notice, since the output being given is exactly the same. It is only the input (the simple text) into the JavaScript function that is being changed.</p>
<p><strong>Server-side redirect</strong></p>
<ul>
<li><em>Anyone with a typical browser will be able to contact you</em></li>
<li><em>Medium to high chance of your email address being grabbed by a spam robot</em></li>
</ul>
<p>There are several ways to do this. Most redirect to a script that provides the email address. The problem with this solution is that spam robots will follow the link and eventually grab the URL although the email address is not in plain text. It is being given out. This is an <a href="http://jamesthornton.com/software/redirect-mailto.html">example of the server-side redirect method</a>. A similar solution is <a href="http://mailhide.recaptcha.net/">MailHide</a> from Captcha. I don’t recommend any use of Captcha except as a last resort, since I don’t enjoy using captchas myself.</p>
<p><strong>Contact form (no email address listed)</strong></p>
<ul>
<li><em>Anyone with a typical browser will be able to contact you, but will not know your email address<br />
</em></li>
<li><em>Next to no chance of your email address being grabbed by a spam robot</em></li>
</ul>
<p>This is guaranteed to save your email address from spam lists, since your email address is never used within your page. This solution could be annoying, since a potential vendor will have to use the contact form to hear more about your product. I’ve always thought this was impersonal. Although less of an issue for personal sites, a user often does not feel he or she is contacting the site owner.</p>
<p><strong>In conclusion</strong></p>
<p>The contact form is the only full-proof way, but right now, I prefer JavaScript obscuration. If my email address is captured, Gmail does a very good job (if sometimes, too aggressive) of ferreting out the email spam. If you&#8217;d like to have a small sense of justice, you can link your website to a <a href="http://towerofbabel.com/antispam/">multitude of email addresses</a> that are all fake.</p>
<p>Photo: Lake Tawakoni State Park, Texas, August 15, 2007 (Donna Garde)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/hiding-an-email-address-from-spambots-and-web-spiders-less-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSSsprite: Photoshop script combines two images for CSS hover</title>
		<link>http://www.interactivellama.com/blog/archives/photoshop-script-combine-two-images-css-hover-css-sprite/</link>
		<comments>http://www.interactivellama.com/blog/archives/photoshop-script-combine-two-images-css-hover-css-sprite/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 20:48:41 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Productivity & Workflow]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">/blog/?p=132</guid>
		<description><![CDATA[The need Professional web developers have been aware of CSS sprites or CSS rollovers/hovers since 2004 (The rollover term is taken from JavaScript and the hover term is taken from CSS). They are the background graphics that change position based on mouse hover thus eliminating the need for JavaScript image swaps and image caching since [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-135" title="csssprites_before" src="/blog/wp-content/uploads/2008/11/csssprites_before-300x123.jpg" alt="" width="300" height="123" /></p>
<p><img class="alignnone size-medium wp-image-136" title="csssprites_after" src="/blog/wp-content/uploads/2008/11/csssprites_after-300x132.jpg" alt="" width="300" height="132" /></p>
<p><strong>The need<br />
</strong></p>
<p>Professional web developers have been aware of <a href="http://www.alistapart.com/articles/sprites/">CSS sprites</a> or CSS rollovers/hovers since 2004 (The rollover term is taken from JavaScript and the hover term is taken from CSS).  They are the background graphics that change position based on mouse hover thus eliminating the need for JavaScript image swaps and image caching since the &#8220;mouse on&#8221; and &#8220;mouse off&#8221; are one image. I have been using sprites for years. It is a more tedious process than clicking Swap image on a DreamWeaver drop down menu, but it produces more accessible and more clean code. The most tedious part of creating CSS sprites for menu navigation is aligning the static (in-active) and hover (active) images. This script solves this problem by taking two images and merging them into one. I hope this increases your productivity and creates a more standards-compliant web.</p>
<p><span id="more-132"></span></p>
<p>There are <a href="http://spritegen.website-performance.org/">online CSS sprite generators</a> out there. My Photoshop script is not as remarkable as these 20 image sprites, but it’s much simpler, and you can assign a keyboard shortcut to it. Also, all my sites are designed in Illustrator which is a slightly different work flow than most. I find that Photoshop is an awful layout program.</p>
<p><a href="/blog/wp-content/uploads/2008/11/CSSsprite.jsx">Download CSSsprite.jsx</a></p>
<p><strong>Installation<br />
</strong></p>
<p>A JSX script is similar to a Photoshop plugin or an action, but are commands in Photoshop&#8217;s JavaScript based script interface. Download and copy this script within the Presets&gt;&gt;Scripts folder of your Photoshop application folder:</p>
<ul>
<li>OS-X: Macintosh HD/Applications/Adobe Photoshop CS3/Presets/Scripts/</li>
<li>Windows: Program Files/Photoshop CS/Presets/Scripts</li>
</ul>
<p>The Script will appear under File&gt;&gt;Scripts&gt;&gt;CSSsprite on the menu. You can assign a keyboard shortcut to this script. I prefer Control+Command+S. This shortcut fits well with the Save for Web shortcut, Command+Alt+Shift+S.</p>
<p><strong>Usage<br />
</strong></p>
<p>Open two files (and <em>only</em> two files) with the same height and width (if they are different sizes, the offset of your hover button state will not be half of the height). Select the non-hover background image, making it active&#8211;thus making the hover background image de-active. Run the script from the Scripts menu mentioned above. This will place the hover background image on the bottom of the sprite. This script does not support adding a third state to the sprite, but you could add a third <em>and</em> fourth state. To do this, first combine the third and fourth state, and then combine that image with the normal/hover sprite.</p>
<p><strong>For your information: States for this script</strong></p>
<p>The following is a list of Photoshop commands that are executed in this script:</p>
<ul>
<li>Convert Image Mode to RGB</li>
<li>Make horizontal guide at 100% of canvas height</li>
<li>Switch to inactive document (-1 in document array)</li>
<li>&#8220;Duplicate Layer. . .&#8221; Layer Menu via right click</li>
<li>Switch back to inactive document (+1 in document array)</li>
<li>Double canvas size vertically</li>
<li>Transform/Move top layer down (50% of canvas size)</li>
<li>Zoom In (twice)</li>
</ul>
<p><strong>Result<br />
</strong>This gives you a two-layered Photoshop file with second layer the CSS hover layer. Save the file as GIF, PNG, or JPEG using File&gt;&gt;Save for Web.</p>
<p><strong>Notes<br />
</strong>Adobe Photoshop JavaScript is the only cross-platform scripting language for Photoshop. <em>This script was only tested Photoshop CS3 Extended (Mac)</em>. Our firm does not use Photoshop for web layout&#8211;only for image manipulation. We use Illustrator for layout.</p>
<p>I would like to thank the creators of <a href="http://blogs.adobe.com/crawlspace/2006/05/installing_and_1.html">ScriptingListenerJS</a> and <a href="http://ps-scripts.cvs.sourceforge.net/viewvc/ps-scripts/xtools/xapps/">ActionToJavaScript</a>.</p>
<p>You may be interested in this <a href="http://arnaumarch.com/en/sprites.html">PhotoShop script that creates a sprite from all the images in a folder</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/photoshop-script-combine-two-images-css-hover-css-sprite/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Features and characteristics of a great 404 error page</title>
		<link>http://www.interactivellama.com/blog/archives/features-and-characteristics-of-a-great-404-error-page/</link>
		<comments>http://www.interactivellama.com/blog/archives/features-and-characteristics-of-a-great-404-error-page/#comments</comments>
		<pubDate>Fri, 23 May 2008 14:02:23 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Productivity & Workflow]]></category>
		<category><![CDATA[404 error]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[site features]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">/blog/?p=125</guid>
		<description><![CDATA[No matter how carefully you design your site, visitors will always request a page that is missing, moved, or non-existent (especially if you experiment with your site structure frequently). This past week, I&#8217;ve been obsessed with HTTP 404 errors and working on creating a better 404 Not Found page. The default 404 page for WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>No matter how carefully you design your site, visitors will always request a page that is missing, moved, or non-existent (especially if you experiment with your site structure frequently). This past week, I&#8217;ve been obsessed with <a href="http://en.wikipedia.org/wiki/404_error">HTTP 404 errors</a> and working on creating a better 404 Not Found page. The default 404 page for WordPress offers the opportunity to search the blog, but you should go another step. Usability is one of (if not the) key trait of a great website. If thought has gone into <em>even</em> your 404 error page, then I&#8217;d guess that much thought has been put into your entire site.<span id="more-125"></span></p>
<p>Features and characteristics of a great 404 page:</p>
<ul>
<li> A link to the site map that lists all articles and the home page</li>
<li> A search box</li>
<li> A distinctly minimalist look</li>
<li>Remove the jargon (i.e.- what&#8217;s a 404?)</li>
<li>State the reasons someone would reach a 404 page (A mis-typed URL, a out-of-date search engine referral, a broken (in-site) link) and then do something about it</li>
<li> Notify with either a user input form or automatically with server side scripting the site owner so that the problem can be fixed (In WordPress, you can <a href="http://herselfswebtools.com/2007/11/email-yourself-when-someone-gets-a-404-error-on-your-site.html">email yourself</a> using the code at the end of this article)</li>
<li>Contact information for the site owner (after all, it&#8217;s your site that is broken)</li>
</ul>
<p>Most of this list is taken from A List Apart, <a href="http://www.alistapart.com/articles/perfect404/">The Perfect 404</a>. They use JavaScript to create many of the features above. Address the mis-typed URL by suggesting the visitor review the sitemap. You could tell them to look for some of the words in the URL. For the out-of-date search engine referral, you could grab the query string for popular search engines and add search results to the bottom of your error page.</p>
<p>As to a pleasing visual design (not to mention humorous content) of a 404 page be sure to look at <a href="http://www.smashingmagazine.com/2007/07/25/wanted-your-404-error-pages/">Smashing&#8217;s Magazine&#8217;s collection of 404 pages</a> and a <a href="http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/">second collection</a> for inspiration.</p>
<p><strong>What to do now</strong></p>
<p>If the fault is truly yours and the invalid URL was not created by a crawler bot grabbing email addresses or trying SQL insertions, then you should open up your <a href="http://www.javascriptkit.com/howto/htaccess.shtml">.htaccess file</a> and <a href="http://www.javascriptkit.com/howto/htaccess7.shtml">redirect them</a>. You shouldn&#8217;t have to use <a href="http://www.sitepoint.com/article/guide-url-rewriting">mod_write</a> and <a href="http://www.regular-expressions.info/">regular expressions</a> if you are soley creating a list of 1 to 1 relationship URLs. If you create websites for a living, I HIGHLY recommend familiarizing yourself with both powerful tools.</p>
<p><strong>Email the site owner the invalid URL in WordPress</strong></p>
<p>I recommend not sending this to your main email, but one of your secondary email addresses or filtering it to a folder (with the subject &#8220;[404 Error]&#8220;). I receive more than 10 notices a day from my sites. By placing the URL in the subject line, Gmail will group/thread message about same URL.</p>
<pre><code class="js">&lt;?php
$url = $_SERVER[ 'REQUEST_URI' ];
$message = "URL Requested: ".$url_requested;
wp_mail("youremail@gmail.com", "[404 Error] ".$url_requested, $message);
?&gt;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/features-and-characteristics-of-a-great-404-error-page/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Change media and images to full size in WordPress media gallery</title>
		<link>http://www.interactivellama.com/blog/archives/change-media-and-images-to-full-size-in-wordpress-media-gallery/</link>
		<comments>http://www.interactivellama.com/blog/archives/change-media-and-images-to-full-size-in-wordpress-media-gallery/#comments</comments>
		<pubDate>Thu, 22 May 2008 00:15:09 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Productivity & Workflow]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[image width]]></category>
		<category><![CDATA[maximum image size]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[plug_in]]></category>
		<category><![CDATA[Rachel Steely]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">/blog/?p=122</guid>
		<description><![CDATA[I&#8217;ve been familiarizing myself with WordPress 2.5&#8242;s new media gallery. If you&#8217;ve visited my blog before, you know I don&#8217;t upload many images, but I&#8217;m hoping to upload many images to my wife, Rachel Steely&#8217;s website. I was annoyed to find out that the default image posting size is medium (which is about 300px). On [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been familiarizing myself with WordPress 2.5&#8242;s new media gallery. If you&#8217;ve visited my blog before, you know I don&#8217;t upload many images, but I&#8217;m hoping to upload many images to my wife, <a href="http://www.rachelsteely.com">Rachel Steely&#8217;s website</a>. I was annoyed to find out that the default image posting size is medium (which is about 300px). On top of that, if you select full size, it doesn&#8217;t mean full size. It means your WordPress theme&#8217;s column width. So unless you are using Kubrick your media size will not be your column width.<span id="more-122"></span></p>
<p><strong>Change Full Size image width to match theme</strong></p>
<p>The column width in WordPress&#8217;s default theme Kubrick is 500px. Therefore, the default (maximum) image size is 500px. The column width of the blog I am posting to is 614px. You can set a global variable to change this setting. Create if not already existing functions.php in your theme directory. Define your maximum media width (that is &#8220;Full Size&#8221; in the Gallery interface):<br />
<code><br />
&lt;?php<br />
$content_width = 614;<br />
?&gt;</code></p>
<p>I&#8217;ve set mine to 614 pixels since that is the width of my div with the class  &#8220;.entry&#8221; minus padding. If this does not work, some have solved this problem with $GLOBALS['content_width'] = 614; also. You can view this setting at a post at <a href="http://www.rachelsteely.com/blog/photos-from-wheeler-spring-open-house/">RachelSteely.com</a>.</p>
<p><strong>Default media to Full Size</strong></p>
<p>I prefer to justify my media (align left and right) to the column width. To do this, set default selected size to &#8220;Full Size&#8221; by changing the code in /wp-admin/includes/media.php. Move the &#8216;checked&#8217; radio attribute from Medium to Full Size.</p>
<p>Line 458:<br />
<code><br />
" : '' ) . "&lt;input type='radio' name='attachments[$post-&gt;ID][image-size]' id='image-size-medium-$post-&gt;ID' value='medium' checked='checked' /&gt;<br />
&lt;label for='image-size-medium-$post-&gt;ID'&gt;" . __('Medium') . "&lt;/label&gt;<br />
&lt;input type='radio' name='attachments[$post-&gt;ID][image-size]' id='image-size-full-$post-&gt;ID' value='full' /&gt;<br />
</code></p>
<p>change to<br />
<code><br />
" : '' ) . "&lt;input type='radio' name='attachments[$post-&gt;ID][image-size]' id='image-size-medium-$post-&gt;ID' value='medium' /&gt;<br />
&lt;label for='image-size-medium-$post-&gt;ID'&gt;" . __('Medium') . "&lt;/label&gt;<br />
&lt;input type='radio' name='attachments[$post-&gt;ID][image-size]' id='image-size-full-$post-&gt;ID' value='full' checked='checked' /&gt;</code></p>
<p>And that&#8217;s it! Happy uploading with the new and improved (and customized) WordPress media gallery.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/change-media-and-images-to-full-size-in-wordpress-media-gallery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Plain text link to HTML with a PHP function and regular expressions</title>
		<link>http://www.interactivellama.com/blog/archives/plain-text-link-to-html-with-a-php-function-and-regular-expressions/</link>
		<comments>http://www.interactivellama.com/blog/archives/plain-text-link-to-html-with-a-php-function-and-regular-expressions/#comments</comments>
		<pubDate>Wed, 07 May 2008 20:21:21 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">/blog/archives/plain-text-link-to-html-with-a-php-function-and-regular-expressions/</guid>
		<description><![CDATA[If you have ever wanted to turn a plain text link, http://www.smjdesign.com, into a "linked" HTML version, http://www.smjdesign.com, you can now. Pass the following function your entire text field and it will find all your links and return tagged HTML. function replace_plain_text_link($plain_text) { $url_html = preg_replace( '/(?&#60;!S)((http(s?):\/\/)&#124;(www.))+([\w.1-9\&#38;=#?\-~%;\/]+)/', '&#60;a href="http$3://$4$5"&#62;http$3://$4$5&#60;/a&#62;', $plain_text); return ($url_html); } echo replace_plain_text_link("hi [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever wanted to turn a plain text link, http://www.smjdesign.com, into a "linked" HTML version, <a href="http://www.smjdesign.com">http://www.smjdesign.com</a>, you can now. Pass the following function your entire text field and it will find all your links and return tagged HTML.</p>
<pre><code>function replace_plain_text_link($plain_text) {
$url_html = preg_replace(
'/(?&lt;!S)((http(s?):\/\/)|(www.))+([\w.1-9\&amp;=#?\-~%;\/]+)/',
'&lt;a href="http$3://$4$5"&gt;http$3://$4$5&lt;/a&gt;', $plain_text);
return ($url_html);
}
echo replace_plain_text_link("hi this is dummy text before
http://www.smjdesign.com hi this is dummy text after")
</code></pre>
<p><span id="more-121"></span></p>
<p>The majority of the above regular expression was not created by me. I however cannot locate the original programmer. It was posted on a message board I visited along with ftp and mailto options. If you can help, please comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/plain-text-link-to-html-with-a-php-function-and-regular-expressions/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Graphic web design and cascading style sheets</title>
		<link>http://www.interactivellama.com/blog/archives/graphic-web-design-and-cascading-style-sheets/</link>
		<comments>http://www.interactivellama.com/blog/archives/graphic-web-design-and-cascading-style-sheets/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 21:46:48 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Illustrator]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Productivity & Workflow]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox_extensions]]></category>
		<category><![CDATA[internet_explorer]]></category>
		<category><![CDATA[style sheet]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">/blog/archives/graphic-web-design-and-cascading-style-sheets/</guid>
		<description><![CDATA[On Saturday, February 9 at 11:30 am, I spoke at BarcampIndy 2008 on Graphic Web Design and Cascading Style Sheets. All presentations were broadcast on BlipTV. You can view a video of this presentation on BlipTV. The premise of my presentation was to show an overview of the process between layout in Illustrator and PhotoShop [...]]]></description>
			<content:encoded><![CDATA[<p>On Saturday, February 9 at 11:30 am, I spoke at <a href="http://barcamp.org/barcampindy">BarcampIndy 2008</a> on Graphic Web Design and Cascading Style Sheets. All presentations were broadcast on BlipTV. You can view a <a href="http://blip.tv/file/658349">video of this presentation on BlipTV</a>.</p>
<p>The premise of my presentation was to show an overview of the process between layout in Illustrator and PhotoShop to coding in HTML and CSS. I find that web design is often segmented between the coders and graphic designers. I propose that the best outcome can come from bridging that gap. I do this in my daily workplace and try to show tips and techniques for others to bridge that gap. The time slot was only a half hour, so I could not go into coding detail, but only point to tutorials via links.<span id="more-118"></span></p>
<p>You can view the <a href="http://www.smjdesign.com/public/presentations/barcampindy2008/graphic_web_design-and-css-smjdesign.ppt">Graphic Web Design and Cascading Style Sheets PowerPoint</a> (431KB) or view the <a href="http://www.smjdesign.com/public/presentations/barcampindy2008/graphic_web_design-and-css-smjdesign.htm">presentation in HTML</a>. Some <a href="http://www.smjdesign.com/public/presentations/barcampindy2008/support-images/">support images</a> and <a href="http://del.icio.us/smjdesign/barcampindy2008">all sites discussed can be found on Delicious</a> (theses are notated by &#8220;{link}&#8221; within the presentation).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/graphic-web-design-and-cascading-style-sheets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML standards in email clients: Oh, the horror!</title>
		<link>http://www.interactivellama.com/blog/archives/html-standards-email-clients-outlook-2007-gmail/</link>
		<comments>http://www.interactivellama.com/blog/archives/html-standards-email-clients-outlook-2007-gmail/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 23:35:55 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[acid_test]]></category>
		<category><![CDATA[email_clients]]></category>
		<category><![CDATA[html_css]]></category>
		<category><![CDATA[html_engine]]></category>
		<category><![CDATA[html_standards]]></category>
		<category><![CDATA[internet_explorer]]></category>
		<category><![CDATA[microsoft_outlook]]></category>
		<category><![CDATA[standards_project]]></category>
		<category><![CDATA[word_html]]></category>

		<guid isPermaLink="false">/blog/archives/html-standards-email-clients-outlook-2007-gmail/</guid>
		<description><![CDATA[A new HTML standards for email clients advocacy site has sprung up. It&#8217;s called Email Standards Project. I sincerely hope that it is able to make a difference. I&#8217;ve personally had issues with the major discrepancies in email clients at my job. I&#8217;ve heard that Microsoft Outlook 2007 is unfortunately using the Word HTML engine [...]]]></description>
			<content:encoded><![CDATA[<p>A new HTML standards for email clients advocacy site has sprung up. It&#8217;s called <a href="http://www.email-standards.org/">Email Standards Project</a>. I sincerely hope that it is able to make a difference. I&#8217;ve personally had issues with the major discrepancies in email clients at my job. I&#8217;ve heard that Microsoft Outlook 2007 is unfortunately using the Word HTML engine instead of the Internet Explorer Engine. The full list of clients that are on the Average or Poor list are:</p>
<ul>
<li><a href="http://www.email-standards.org/clients/dotmac/">Apple .Mac</a></li>
<li><a href="http://www.email-standards.org/clients/gmail/">Google Gmail</a></li>
<li><a href="http://www.email-standards.org/clients/lotus-notes-8/">Lotus Notes 8</a></li>
<li><a href="http://www.email-standards.org/clients/microsoft-outlook-2007/"> Outlook 2007</a></li>
<li><a href="http://www.email-standards.org/clients/windows-live-hotmail/">Windows Live</a></li>
</ul>
<p>This is based on their <a href="http://www.email-standards.org/acid-test/">acid test</a>. If you are involved in developing internet applications or sites and aren&#8217;t familiar with acid tests (and you should be!), visit <a href="http://www.webstandards.org/">WebStandards.org</a> for the <a href="http://www.webstandards.org/files/acid2/test.html">web browser acid test</a>.</p>
<p>So what&#8217;s a person to due in the mean time&#8211;structural tables and inline CSS, of course! That&#8217;s what! So barbaric and so 1999! Here is <a href="http://www.thinkvitamin.com/features/design/ensuring-your-html-emails-look-great-and-get-delivered">a tutorial on what HTML/CSS you can use across multiple email clients</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/html-standards-email-clients-outlook-2007-gmail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thirteen Ways To Add SEO To Gallery2</title>
		<link>http://www.interactivellama.com/blog/archives/add-seo-to-gallery2-search-engine-optimization/</link>
		<comments>http://www.interactivellama.com/blog/archives/add-seo-to-gallery2-search-engine-optimization/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 23:04:06 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[gallery2]]></category>
		<category><![CDATA[original_album]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[permalink]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[search_listings]]></category>
		<category><![CDATA[search_results]]></category>

		<guid isPermaLink="false">/blog/archives/add-seo-to-gallery2-search-engine-optimization/</guid>
		<description><![CDATA[Overview of Search Engine Optimization for Gallery2 I hope this is a starting point for those that want to make Gallery2 more SEO. Please remember that the SEO doesn&#8217;t make you show up higher in search listings, but makes it easier for this to happen. Having other people link to your pages is always the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Overview of Search Engine Optimization for Gallery2 </strong></p>
<p>I hope this is a starting point for those that want to make Gallery2 more SEO. Please remember that the SEO doesn&#8217;t make you show up higher in search listings, but makes it easier for this to happen. Having other people link to your pages is always the best thing you can do (at least for Google). Any additions to this list would be helpful. If you have questions or would like clarification, please ask.</p>
<p><strong>Technical Background on Gallery2</strong></p>
<p>Some of the suggestions on this list involve editing template and class files, do this at your own risk. Gallery2 administrators recommend copying the file you are editing to the subdirectory called &#8220;local&#8221; and editing the file there. Gallery2 will then use that file instead of the original. This also means that upgrades will not overwrite your edited file. In the examples below, I am using Gallery 2.2.3.<span id="more-106"></span></p>
<p><strong>1. Activate URL Rewrite plugin</strong></p>
<p>Read through the URL Rewrite Administration page and familiarize yourself with the structure of Gallery2, you&#8217;ll notice that the permalink of a photo is based on the filename.</p>
<p><strong>2. Make items in keyword and other dynamic albums point to item&#8217;s permalink</strong></p>
<p>ll links that can, should point to an item&#8217;s permalink&#8211;after all that is the valuable content&#8211;all else is for the user&#8217;s convenience and experience. This will eliminate some duplicate content and use the keyword album&#8217;s PageRank to point to the item&#8217;s permalink.</p>
<ul>
<li> On the Site Admin page, go to Keyword Album (and/or Dynamic Albums)</li>
<li> Change Thumbnail links in dynamic albums to Jump to original album, and click Global checkbox if possible.</li>
</ul>
<p><strong>3. Use keywords in filenames</strong></p>
<p>ince the permalink of an item is based on the filename, the filename of the item affect the keywords contained within the URL. Do not use the file name that a camera gives each photograph, but name your photos using keywords. You can do this manually, or you can use a bulk file renaming tool.</p>
<p>I recommend you use a bulk file renaming tool. On Windows, I use the free <a href="http://www.bulkrenameutility.co.uk/">Bulk Rename Utility</a>. It allows all sorts of file naming options including regular expressions, recursive file renaming of files in subdirectories, add suffixes, add prefixes and many, many more. It&#8217;s a little overwhelming when you first load the program. Thankfully, you can see the actual before/after of the file names, so you don&#8217;t have to guess at what you are doing. If anyone know of an OS-X bulk renaming tool, please contact me.</p>
<p>My naming convention for a file name is photo_set-photo_subset-people_or_objects. For a photo of my parents, my bride and myself at my wedding, I used wedding-party-rachel-stephen-richard-mary-james.jpg</p>
<p><strong>4. Create keyword-dense titles and keywords for each item</strong></p>
<p>aving tags or keywords link similar items not only provides users of your site to easily visit similar items, but it also links the keywords with your content for SEO.</p>
<p>Upon wanting to post over five hundred photographs of my honeymoon in Ireland to my Gallery2, I decided to write an automated PHP script that goes through the database and does the following:</p>
<ul>
<li> Reads in the file name</li>
<li> Replaces the hyphens and/or underscores with spaces</li>
<li> Removes Windows and OS-X renaming suffixes/prefixes such as numerals, parenthesizes and the word &#8220;copy.&#8221;</li>
<li> Then, places this text in the item title field</li>
</ul>
<p>After creating the title, I re-run the php script that then adds keywords. It does the following:</p>
<ul>
<li> Reads in the file name</li>
<li> Replaces the hyphens and/or underscores with a comma and a space</li>
<li> Removes Windows and OS-X renaming suffixes/prefixes such as numerals, parenthesizes and the word &#8220;copy.&#8221;</li>
<li> Removes common words such as the, of, to , with, on, through, in and single letters (A-Z)</li>
<li> Then, places this text in the item keyword field</li>
</ul>
<p>Now you can do all this manually and probably get better results by fine-tuning each item&#8217;s keywords and title, but in this instance, I did not want to enter thousands of keywords and possibly misspell them.</p>
<p>If you would like a copy of this script, I can email it to you. Please contact me. You will need to directly edit a PHP file, but I believe it is straight forward enough. It has no warranty for anything it does to your system. Before using it, backup your database. After the script has run, the database cache will need to deleted at Site Admin &gt;&gt; Maintenance &gt;&gt; Delete database cache</p>
<p><strong>5. Optimize robots.txt</strong></p>
<p>Some say to disallow search engines from listing keyword or tag pages by using disallow within one&#8217;s robots.txt. The theory behind this is that search engines do not actually stop looking at the pages listed after a disallow command. Disallow is there to prevent good search engines from listing disallowed pages in their search results. They DO read and evaluate disallowed pages for content. So the theory is that when a user searches for a keyword, the keyword page will not show up in the search results, but the actual content pages that the keyword pages link to will show up. This only works with search engines that value linking over keyword density. Since there is usually not much text on an item page, disallowing keyword filled dynamic albums might have negative effects. I suggest you research optimizing your robots.txt more, before disallowing hundreds of pages from search engine results.</p>
<p><strong>6. Remove slideshows</strong></p>
<p>I would say that this is the least important item on this list, but you want to be sure to remove as much duplicate content as possible, then to remove the slideshow:</p>
<ul>
<li> Goto Plugins on the Site Admin page.</li>
<li> Deactivate Slideshow and Slideshow Applet</li>
</ul>
<p><strong>7. Remove multiple sizes</strong></p>
<p>I&#8217;ve never had multiple sizes setup in my Gallery, if someone has the directions on how to deactivate this. It would be helpful.</p>
<p><strong>8. Enable Google Sitemap</strong></p>
<p>Sitemaps are an XML document that lists all content pages. When your site changes, it changes. Just like it says, it is a map. It doesn&#8217;t automatically get you a higher SEO, it only give the search engine a map to browse your site with. Personally, I&#8217;m not convinced that this helps SEO. It just makes sure all your pages get listed&#8211;which if you are practicing good SEO on your site, when you should not have to worry about a page not being listed. To enable Google Sitemap:</p>
<ul>
<li> Goto Plugins on the Site Admin page and deactivate Slideshow and Slideshow Applet</li>
<li> Activate Sitemap</li>
</ul>
<p><strong>9. Optimize permalinks</strong></p>
<p>Search engines do not like variables (question marks and ampersands) at the end of URLs. Gallery is made to be sticky with its items which makes human browsing easier and pretty much eliminates the need to use the browser&#8217;s back button. If you use the breadcrumbs in the upper left to view a parent album, you are shown the album page that contains the item you were just viewing. Below are changes to make to the Gallery2 code</p>
<p>Comment out the urlParams call in /modules/core/classes/GalleryTheme.class<br />
LINE 1408 &#8211; BEFORE</p>
<p><code>if (!empty($theme['parents'][$i + 1]['id'])) {<br />
$urlParams['highlightId'] = $theme['parents'][$i + 1]['id'];<br />
} else if ($itemId &amp;&amp; ($i + 1) == count($theme['parents'])) {<br />
$urlParams['highlightId'] = $itemId;<br />
}<br />
</code><br />
LINE 1408 &#8211; AFTER<br />
<code><br />
/* if (!empty($theme['parents'][$i + 1]['id'])) {<br />
$urlParams['highlightId'] = $theme['parents'][$i + 1]['id'];<br />
} else if ($itemId &amp;&amp; ($i + 1) == count($theme['parents'])) {<br />
$urlParams['highlightId'] = $itemId;<br />
} */<br />
</code><br />
<strong>10. Make item titles into heading text and links</strong></p>
<p>Add heading tags to item titles in /themes/matrix/templates/album.tpl (with &#8220;matrix&#8221; being your current theme)</p>
<p>LINE 121 &#8211; BEFORE</p>
<p><code>&lt;p class="giTitle"&gt;<br />
{if $child.canContainChildren &amp;&amp; (!isset($theme.params.albumFrame)<br />
|| $theme.params.albumFrame == $theme.params.itemFrame)}<br />
{* Add prefix for albums unless imageframe will differentiate *}<br />
{g-&gt;text text="Album: %s" arg1=$child.title|markup}<br />
{else}<br />
{$child.title|markup}<br />
{/if}<br />
&lt;/p&gt;</code></p>
<p>LINE 121 &#8211; AFTER</p>
<p><code>&lt;h2 class="giTitle"&gt;<br />
{if $child.canContainChildren &amp;&amp; (!isset($theme.params.albumFrame)<br />
|| $theme.params.albumFrame == $theme.params.itemFrame)}<br />
{* Add prefix for albums unless imageframe will differentiate *}<br />
&lt;a href="{g-&gt;url arg1="view=core.ShowItem" arg2="itemId=`$child.id`"}"&gt;<br />
{g-&gt;text text="Album: %s" arg1=$child.title|markup}&lt;/a&gt;<br />
{else}<br />
&lt;a href="{g-&gt;url arg1="view=core.ShowItem" arg2="itemId=`$child.id`"}"&gt;<br />
{$child.title|markup}&lt;/a&gt;<br />
{/if}<br />
&lt;/h2&gt;</code></p>
<p><strong>11. Prevent duplicate base URLs for your Gallery</strong></p>
<p>On Apache servers, you can change by each directory how the web server serves up your pages within a file named .htaccess. If you have implimented the URL Rewrite plugin correctly, then you should already have an .htaccess file in your Gallery2 directory. Redirects affect SEO negatively, and it has been said that two site homepages, /main.php and /, harm SEO. To prevent the 301 redirect to /main.php, add the following lines to the top of your .htaccess:<br />
<code><br />
# Set the default handler.<br />
DirectoryIndex main.php</code></p>
<p>It should be said that not all hosts allow you do change the DirectoryIndex. Also, this also might need to be done to get rid of &#8220;main.php&#8221; in the breadcrumb. I&#8217;m not sure if I changed this myself or gallery set it automatically, but on line 177 of /config.php, I have:<br />
<code><br />
# Set the default handler.<br />
DirectoryIndex main.php</code></p>
<p>In a related note, some search engines will differentiate www.yourdomain.com and yourdomain.com. This not good and could result in duplicate content. You can search Google via site:yourdomain.com and find out how your site is currently listed. You want to be listed in the same format that external links and internal links are linking to your site. To redirect pages without &#8220;www&#8221; to a page with the prefix, add the following lines to the top of your .htaccess:<br />
<code><br />
RewriteCond %{HTTP_HOST} !^www.<br />
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]</code></p>
<p>If you are hosting, your Gallery2 in a subdirectory (e.g.- photos), use this:</p>
<p><code>RewriteCond %{HTTP_HOST} !^www.<br />
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/photos/$1 [R=301,L]</code></p>
<p><strong>12. Add META tags to your Gallery2 pages</strong></p>
<p>It has been said that META tags have lost importance since their glory days ten years ago. They have lost importance to external links, but they are not to be disregarded. To add the META tags keyword and description to your Gallery2 pages add the following lines to /themes/matrix/templates/theme.tpl (with &#8220;matrix&#8221; being your current theme).</p>
<p>LINE 19 &#8211; BEFORE</p>
<p><code>{* If Gallery doesn't provide a header, we use the album/photo title (or filename) *}<br />
{if empty($head.title)}<br />
&lt;title&gt;{$theme.item.title|markup:strip|default:$theme.item.pathComponent}&lt;/title&gt;<br />
{/if}</code></p>
<p>LINE 19 &#8211; AFTER</p>
<p><code>{* If Gallery doesn't provide a header, we use the album/photo title (or filename) *}<br />
{if empty($head.title)}<br />
&lt;title&gt;{$theme.item.title|markup:strip|default:$theme.item.pathComponent}&lt;/title&gt;<br />
{/if}<br />
&lt;meta name="keywords" content="{$theme.item.keywords|markup:strip|default:$theme.item.pathComponent}" /&gt;<br />
&lt;meta name="description" content="{$theme.item.description|markup:strip|default:$theme.item.pathComponent}" /&gt;</code></p>
<p>Note: The above is only an addition of the meta tags.</p>
<p><strong>13. Optimize page title</strong></p>
<p>Page titles are some of the most important information used for SEO. Search engines will only use the first so many characters. I&#8217;ve heard that title elements should ideally be less than 64 characters in length. That doesn&#8217;t been you can&#8217;t use longer ones though. Forum user, maravizzo, suggests adding the title of the parent album to the page title. This should increases your associated keyword density in your page title.</p>
<p>Add lines in /themes/matrix/templates/theme.tpl<br />
LINE 14 &#8211; BEFORE</p>
<p><code><br />
{if empty($head.title)}<br />
&lt;title&gt;{$theme.item.title|markup:strip|default:$theme.item.pathComponent}&lt;/title&gt;<br />
{/if}<br />
</code></p>
<p>LINE 14 &#8211; AFTER</p>
<p><code><br />
{if empty($head.title)}<br />
&lt;title&gt;{$theme.item.title|markup:strip|default:$theme.item.pathComponent}<br />
{if $theme.parent.title}<br />
:: {$theme.parent.title|markup:strip|default:$theme.parent.pathComponent}<br />
{/if}<br />
:: Title of Site&lt;/title&gt;<br />
{/if}<br />
</code></p>
<p><strong>14. Create SEO page numbers</strong></p>
<p>This is related to number six, Optimize permalinks, but I have yet figured how to do it. I&#8217;ve read the Gallery2 forum thread, <a href="http://gallery.menalto.com/node/49021">URL Rewrite for page number</a>, but did not want to change my current item permalinks. If anyone has suggestions, I&#8217;d love to see this addressed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/add-seo-to-gallery2-search-engine-optimization/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Macromedia Dreamweaver 8 crashing on startup and close</title>
		<link>http://www.interactivellama.com/blog/archives/macromedia-dreamweaver-8-crashing-on-startup-and-close/</link>
		<comments>http://www.interactivellama.com/blog/archives/macromedia-dreamweaver-8-crashing-on-startup-and-close/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 18:08:02 +0000</pubDate>
		<dc:creator>Stephen James</dc:creator>
				<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[macromedia_dreamweaver_8]]></category>
		<category><![CDATA[site_cache]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[uninstall]]></category>

		<guid isPermaLink="false">/blog/archives/macromedia-dreamweaver-8-crashing-on-startup-and-close/</guid>
		<description><![CDATA[For a long time, I have had problems with Macromedia Dreamweaver 8 crashing at the close of the program. I had never had a problem with Macromedia Dreamweaver 8 crashing at startup until the other day. I surmise that Macromedia Dreamweaver 8 had closed and crashed as it usually did, but this time it wrote [...]]]></description>
			<content:encoded><![CDATA[<p>For a long time, I have had problems with Macromedia Dreamweaver 8 crashing at the close of the program. I had never had a problem with Macromedia Dreamweaver 8 crashing at startup until the other day. I surmise that Macromedia Dreamweaver 8 had closed and crashed as it usually did, but this time it wrote an invalid or corrupt Site Cache file. It took me a few hours to remove all parts of Macromedia Dreamweaver 8 from my system, but I finally found the corrupt site cache file in users/{username}/library/application support/macromedia/common/8/Sites/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interactivellama.com/blog/archives/macromedia-dreamweaver-8-crashing-on-startup-and-close/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

