<?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>Noupe &#187; PHP</title>
	<atom:link href="http://www.noupe.com/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.noupe.com</link>
	<description>The Curious Side of Smashing Magazine</description>
	<lastBuildDate>Fri, 10 Feb 2012 20:55:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Getting Started with PHP Regular Expressions</title>
		<link>http://www.noupe.com/php/php-regular-expressions.html</link>
		<comments>http://www.noupe.com/php/php-regular-expressions.html#comments</comments>
		<pubDate>Mon, 24 Aug 2009 01:01:42 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=21096</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; 1. What are Regular Expressions The main purpose of regular expressions, also called regex or regexp, is to efficiently search for patterns in a given text. These search patterns are written using a special format which a regular expression parser understands. Regular expressions are originating from Unix systems, where a program was designed, called [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<h3 class="title">1. What are Regular Expressions</h3>
<p><strong>The main purpose of regular expressions, also called regex or regexp, is to efficiently search for patterns in a given text</strong>. These search patterns are written using a special format which a regular expression parser understands.</p>
<p><span id="more-21096"></span></p>
<p class="showcase"><img src="http://noupe.com/img/express-1.gif" alt=""/></p>
<p>Regular expressions are originating from Unix systems, where a program was designed, called grep, to help users work with strings and manipulate text. <strong>By following a few basic rules, one can create very complex search patterns.</strong></p>
<p>As an example, let&#8217;s say you&#8217;re given the task to check wether an e-mail or a telephone number has the correct form. Using a few simple commands these problems can easily be solved thanks to regular expressions. The syntax doesn&#8217;t always seems straightforward at first, but once you learn it, you&#8217;ll realize that you can do pretty complex searches easily, just by typing in a few characters and you&#8217;ll approach problems from a different perspective.</p>
<h3 class="title">2. Perl Compatible Regular Expressions</h3>
<p>PHP has implemented quite a few <em>regex</em> functions which uses different parsing engines. There are two major parser in PHP. One called <strong>POSIX</strong> and the other <strong>PCRE</strong> or Perl Compatible Regular Expression.</p>
<p>The PHP <a href="http://www.php.net/manual/en/ref.regex.php" title="php.net/manual/en/ref.regex.php">function prefix</a> for POSIX is <em>ereg_</em>. <strong>Since the release of PHP 5.3 this engine is deprecated</strong>, but let&#8217;s have a look at the more optimal and faster PCRE engine.</p>
<p>In PHP every PCRE function starts with <em>preg_</em> such as <a href="http://www.php.net/manual/en/function.preg-match.php" title="php.net/manual/en/function.preg-match.php">preg_match</a> or <a href="http://www.php.net/manual/en/function.preg-replace.php" title="php.net/manual/en/function.preg-replace.php">preg_replace</a>. You can read the full function list in <a href="http://www.php.net/manual/en/ref.pcre.php" title="php.net/manual/en/ref.pcre.php">PHP&#8217;s documentation</a>.</p>
<h3 class="title">3. Basic Syntax</h3>
<p>To use regular expressions first you need to learn the syntax. This syntax consists in a series of letters, numbers, dots, hyphens and special signs, which we can group together using different parentheses.</p>
<p>In PHP every regular expression pattern is defined as a string using the Perl format. In Perl, a regular expression pattern is written between forward slashes, such as <em>/hello/</em>. In PHP this will become a string, <em>&#8216;/hello/&#8217;</em>.</p>
<p>Now, <strong>let&#8217;s have a look at some operators, the basic building blocks of regular expressions</strong></p>
<table>
<tbody>
<tr>
<th>Operator</th>
<th>Description</th>
</tr>
<tr>
<td>^</td>
<td>The circumflex symbol marks the beginning of a pattern, although in some cases it can be omitted</td>
</tr>
<tr>
<td>$</td>
<td>Same as with the circumflex symbol, the dollar sign marks the end of a search pattern</td>
</tr>
<tr>
<td>.</td>
<td>The period matches any single character</td>
</tr>
<tr>
<td>?</td>
<td>It will match the preceding pattern zero or one times</td>
</tr>
<tr>
<td>+</td>
<td>It will match the preceding pattern one or more times</td>
</tr>
<tr>
<td>*</td>
<td>It will match the preceding pattern zero or more times</td>
</tr>
<tr>
<td>|</td>
<td>Boolean <em>OR</em></td>
</tr>
<tr>
<td>-</td>
<td>Matches a range of elements</td>
</tr>
<tr>
<td>()</td>
<td>Groups a different pattern elements together</td>
</tr>
<tr>
<td>[]</td>
<td>Matches any single character between the square brackets</td>
</tr>
<tr>
<td>{min, max}</td>
<td>It is used to match exact character counts</td>
</tr>
<tr>
<td>\d</td>
<td>Matches any single digit</td>
</tr>
<tr>
<td>\D</td>
<td>Matches any single non digit caharcter</td>
</tr>
<tr>
<td>\w</td>
<td>Matches any alpha numeric character including underscore (_)</td>
</tr>
<tr>
<td>\W</td>
<td>Matches any non alpha numeric character excluding the underscore character</td>
</tr>
<tr>
<td>\s</td>
<td>Matches whitespace character</td>
</tr>
</tbody>
</table>
<p>As an addition in PHP the forward slash character is escaped using the simple slash <em><strong>\</strong></em>. Example: <em><strong>&#8216;/he\/llo/&#8217;</strong></em></p>
<p><strong>To have a brief understanding how these operators are used, let&#8217;s have a look at a few examples:</strong></p>
<table>
<tbody>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
<tr>
<td>&#8216;/hello/&#8217;</td>
<td>It will match the word <em>hello</em></td>
</tr>
<tr>
<td>&#8216;/^hello/&#8217;</td>
<td>It will match <em>hello</em> at the start of a string. Possible matches are <em>hello</em> or <em>helloworld</em>, but not <em>worldhello</em></td>
</tr>
<tr>
<td>&#8216;/hello$/&#8217;</td>
<td>It will match <em>hello</em> at the end of a string.</td>
</tr>
<tr>
<td>&#8216;/he.o/&#8217;</td>
<td>It will match any character between <em>he</em> and <em>o</em>. Possible matches are <em>helo</em> or <em>heyo</em>, but not <em>hello</em></td>
</tr>
<tr>
<td>&#8216;/he?llo/&#8217;</td>
<td>It will match either <em>llo</em> or <em>hello</em></td>
</tr>
<tr>
<td>&#8216;/hello+/&#8217;</td>
<td>It will match <em>hello</em> on or more time. E.g. <em>hello</em> or <em>hellohello</em></td>
</tr>
<tr>
<td>&#8216;/he*llo/&#8217;</td>
<td>Matches <em>llo</em>, <em>hello</em> or <em>hehello</em>, but not <em>hellooo</em></td>
</tr>
<tr>
<td>&#8216;/hello|world/&#8217;</td>
<td>It will either match the word <em>hello</em> or <em>world</em></td>
</tr>
<tr>
<td>&#8216;/(A-Z)/&#8217;</td>
<td>Using it with the hyphen character, this pattern will match every uppercase character from A to Z. E.g. A, B, C&#8230;</td>
</tr>
<tr>
<td>&#8216;/[abc]/&#8217;</td>
<td>It will match any single character <em>a</em>, <em>b</em> or <em>c</em></td>
</tr>
<tr>
<td>&#8216;/abc{1}/&#8217;</td>
<td>Matches precisely one <em>c</em> character after the characters <em>ab</em>. E.g. matches <em>abc</em>, but not <em>abcc</em></td>
</tr>
<tr>
<td>&#8216;/abc{1,}/&#8217;</td>
<td>Matches one or more <em>c</em> character after the characters <em>ab</em>. E.g. matches <em>abc</em> or <em>abcc</em></td>
</tr>
<tr>
<td>&#8216;/abc{2,4}/&#8217;</td>
<td>Matches between two and four <em>c</em> character after the characters <em>ab</em>. E.g. matches <em>abcc</em>, <em>abccc</em> or <em>abcccc</em>, but not <em>abc</em></td>
</tr>
</tbody>
</table>
<p>Besides operators, there are <strong>regular expression modifiers</strong>, which can globally alter the behavior of search patterns.</p>
<p>The <em>regex</em> modifiers are placed after the pattern, like this <em><strong>&#8216;/hello/i&#8217;</strong></em> and they consists of single letters such as <em>i</em> which marks a pattern case insensitive or <em>x</em> which ignores white-space characters. For a full list of modifiers please visit <a href="http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php" title="php.net/manual/en/reference.pcre.pattern.modifiers.php">PHP&#8217;s online documentation</a>.</p>
<p>The real power of regular expressions relies in combining these operators and modifiers, therefore creating rather complex search patterns.</p>
<h3 class="title">4. Using Regex in PHP</h3>
<p class="showcase"><img src="http://noupe.com/img/express-2.gif" alt=""/></p>
<p>In PHP we have a total of nine PCRE functions which we can use. Here&#8217;s the list:</p>
<ul class="post">
<li><a href="http://www.php.net/manual/en/function.preg-filter.php">preg_filter</a> &#8211; performs a regular expression search and replace</li>
<li><a href="http://www.php.net/manual/en/function.preg-grep.php">preg_grep</a> &#8211; returns array entries that match a pattern</li>
<li><a href="http://www.php.net/manual/en/function.preg-last-error.php">preg_last_error</a> &#8211; returns the error code of the last PCRE regex execution</li>
<li><a href="http://www.php.net/manual/en/function.preg-match.php">preg_match</a> &#8211; perform a regular expression match</li>
<li><a href="http://www.php.net/manual/en/function.preg-match-all.php">preg_match_all</a> &#8211; perform a global regular expression match</li>
<li><a href="http://www.php.net/manual/en/function.preg-quote.php">preg_quote</a> &#8211; quote regular expression characters</li>
<li><a href="http://www.php.net/manual/en/function.preg-replace.php">preg_replace</a> &#8211; perform a regular expression search and replace</li>
<li><a href="http://www.php.net/manual/en/function.preg-replace-callback.php">preg_replace_callback</a> &#8211; perform a regular expression search and replace using a callback</li>
<li><a href="http://www.php.net/manual/en/function.preg-split.php">preg_split</a> &#8211; split string by a regular expression</li>
</ul>
<p><strong>The two most commonly used functions are <em>preg_match</em> and <em>preg_replace</em>.</strong></p>
<p>Let&#8217;s begin by creating a test string on which we will perform our regular expression searches. The classical <em>hello world</em> should do it.</p>
<pre class="php" name="code">$test_string = 'hello world';</pre>
<p>If we simply want to search for the word <em>hello</em> or <em>world</em> then the search pattern would look something like this:</p>
<pre name="code" class="php">
preg_match('/hello/', $test_string);
preg_match('/world/', $test_string);
</pre>
<p>If we wish to see if the string begins with the word <em>hello</em>, we would simply put the ^ character in the beginning of the search pattern like this:</p>
<pre class="php" name="code">preg_match('/^hello/', $test_string);
</pre>
<p>Please note that <strong>regular expressions are case sensitive</strong>, the above pattern won&#8217;t match the word <em>hElLo</em>. If we want our pattern to be <strong>case insensitive</strong> we should apply the following modifier:</p>
<pre class="php" name="code">preg_match('/^hello/i', $test_string);
</pre>
<p>Notice the character <em>i</em> at the end of the pattern <strong>after the forward slash</strong>.</p>
<p>Now let&#8217;s examine a more complex search pattern. What if we want to check that the first five characters in the string are alpha numeric characters.</p>
<pre class="php" name="code">preg_match('/^[A-Za-z0-9]{5}/', $test_string);
</pre>
<p>Let&#8217;s dissect this search pattern. First, by using the caret character (^) we specify that the string must begin with an alpha numeric character. This is specified by <em>[A-Za-z0-9]</em>.</p>
<p><em>A-Z</em> means all the characters from A to Z followed by <em>a-z</em> which is the same except for lowercase character, this is important, because regular expressions are case sensitive. I think you&#8217;ll figure out by yourself what <em>0-9</em> means.</p>
<p><em>{5}</em> simply tells the <em>regex</em> parser to count exactly five characters. If we put six instead of five, the parser wouldn&#8217;t match anything, because in our test string the word <em>hello</em> is five characters long, followed by a white-space character which in our case doesn&#8217;t count.</p>
<p>Also, this regular expression could be optimized to the following form:</p>
<pre class="php" name="code">preg_match('/^\w{5}/', $test_string);
</pre>
<p><em>\w</em> specifies any alpha numeric characters plus the underscore character (_).</p>
<h1>6. Useful Regex Functions</h1>
<p>Here are a few PHP functions using regular expressions which you could use on a daily basis.</p>
<p><strong>Validate e-mail</strong>. This function will validate a given e-mail address string to see if it has the correct form.</p>
<pre class="php" name="code">function validate_email($email_address)
{
    if( !preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+
                     ([a-zA-Z0-9\._-]+)+$/", $email_address))
    {
        return false;
    }
    return true;
}
</pre>
<p><strong>Validate a URL</strong></p>
<pre class="php" name="code">function validate_url($url)
{
    return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?
                      (/.*)?$|i', $url);
}
</pre>
<p><strong>Remove repeated words</strong>. I often found repeated words in a text, such as <em>this this</em>. This handy function will remove such duplicate words.</p>
<pre class="php" name="code">function remove_duplicate_word($text)
{
    return preg_replace("/s(w+s)1/i", "$1", $text);
}
</pre>
<p><strong>Validate alpha numeric, dashes, underscores and spaces</strong></p>
<pre class="php" name="code">function validate_alpha($text)
{
    return preg_match("/^[A-Za-z0-9_- ]+$/", $text);
}
</pre>
<p><strong>Validate US ZIP codes</strong></p>
<pre class="php" name="code">function validate_zip($zip_code)
{
    return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code);
}
</pre>
<h3 class="title">7. Regex Cheat Sheet</h3>
<p>Because cheat sheets are cool nowadays, below you can find a PCRE cheat sheet that you can run through quickly anytime you forget something.</p>
<h3>Meta Characters</h3>
<table border="0" cellpadding="2" cellspacing="2">
<col class="symbol">
<col>
<tbody>
<tr>
<th>&nbsp;</th>
<th>Description</th>
</tr>
<tr>
<td>^</td>
<td>Marks the start of a string</td>
</tr>
<tr>
<td>$</td>
<td>Marks the end of a string</td>
</tr>
<tr>
<td>.</td>
<td>Matches any single character</td>
</tr>
<tr>
<td>|</td>
<td>Boolean OR</td>
</tr>
<tr>
<td>()</td>
<td>Group elements</td>
</tr>
<tr>
<td>[abc]</td>
<td>Item in range (a,b or c)</td>
</tr>
<tr>
<td>[^abc]</td>
<td>NOT in range (every character except a,b or c)</td>
</tr>
<tr>
<td>\s</td>
<td>White-space character</td>
</tr>
<tr>
<td>a?</td>
<td>Zero or one b characters. Equals to a{0,1}</td>
</tr>
<tr>
<td>a*</td>
<td>Zero or more of a</td>
</tr>
<tr>
<td>a+</td>
<td>One or more of a</td>
</tr>
<tr>
<td>a{2}</td>
<td>Exactly two of a</td>
</tr>
<tr>
<td>a{,5}</td>
<td>Up to five of a</td>
</tr>
<tr>
<td>a{5,10}</td>
<td>Between five to ten of a</td>
</tr>
<tr>
<td>\w</td>
<td>Any alpha numeric character plus underscore. Equals to [A-Za-z0-9_]</td>
</tr>
<tr>
<td>\W</td>
<td>Any non alpha numeric characters</td>
</tr>
<tr>
<td>\s</td>
<td>Any white-space character</td>
</tr>
<tr>
<td>\S</td>
<td>Any non white-space character</td>
</tr>
<tr>
<td>\d</td>
<td>Any digits. Equals to [0-9]</td>
</tr>
<tr>
<td>\D</td>
<td>Any non digits. Equals to [^0-9]</td>
</tr>
</tbody>
</table>
<h3>Pattern Modifiers</h3>
<table border="0" cellpadding="2" cellspacing="2">
<col class="symbol">
<col>
<tbody>
<tr>
<th>&nbsp;</th>
<th>Description</th>
</tr>
<tr>
<td>i</td>
<td>Ignore case</td>
</tr>
<tr>
<td>m</td>
<td>Multiline mode</td>
</tr>
<tr>
<td>S</td>
<td>Extra analysis of pattern</td>
</tr>
<tr>
<td>u</td>
<td>Pattern is treated as UTF-8</td>
</tr>
</tbody>
</table>
<h3 class="title">8. Useful Readings</h3>
<ul class="post">
<li><a href="http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers">15 PHP Regular Expression for Web Developers</a></li>
<li><a href="http://www.ibm.com/developerworks/opensource/library/os-php-regex1/index.html">Mastering Regular Expressions in PHP</a></li>
<li><a href="http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html">Introduction to PHP Regex</a></li>
</ul>
<div class="author-box">
<div class="author-text">
<h4><strong>Author</strong>: Joel Reyes</h4>
<p>Joel Reyes Has been designing and coding web sites for several years, this has lead him to be the creative mind behind Looney Designer a design resource and portfolio site that revolves around web and graphic design.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/php-regular-expressions.html/feed</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>10+ Mod_Rewrite Rules You Should Know</title>
		<link>http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html</link>
		<comments>http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html#comments</comments>
		<pubDate>Tue, 18 Aug 2009 07:55:41 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=20451</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; Mod_rewrite is an Apache-based rewrite engine for dynamically rewriting URLs. It&#8217;s built into Apache servers natively, though not enabled by default. It&#8217;s capable of functions beyond simple rewrites, though, some of which are included below. Turn Mod_Rewrite On Mod_rewrite is used through your .htaccess file. Place the following code at the beginning of your [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Mod_rewrite is an Apache-based rewrite engine for dynamically rewriting URLs. It&#8217;s built into Apache servers natively, though not enabled by default. </p>
<p>It&#8217;s capable of functions beyond simple rewrites, though, some of which are included below.</p>
<p><span id="more-20451"></span></p>
<hr/>
<p class="img"><img src="http://noupe.com/img/modrewrite-image1.jpg" width="500" height="325" alt="Mod_Rewrite Rules You Should Know"/></p>
<h3 class="title">Turn Mod_Rewrite On</h3>
<p>Mod_rewrite is used through your .htaccess file. Place the following code at the beginning of your .htaccess file to turn mod_rewrite on:</p>
<pre name="code" class="php">
RewriteEngine on
</pre>
<p>(Don&#8217;t forget that .htaccess commands are case-sensitive.) This code needs to be entered at the beginning of any .htaccess file using mod_rewrite.</p>
<h3 class="title">The Basic Mod_Rewrite Layout</h3>
<p>The basic format for a mod_rewrite command is:</p>
<pre name="code" class="php">
RewriteRule Pattern Substitution [Flag(s)]
</pre>
<h3 class="title">URLs are Always Relative</h3>
<p>The URL you redirect to is always relative to the directory in which your .htaccess file is placed. So if it&#8217;s in the root directory, URLs are all in relation to the root directory; if it&#8217;s in a sudirectory, URLs are in relation to that particular subdirectory.</p>
<h3 class="title">A Basic Redirect</h3>
<p>If you just want to create a simple 301 redirect from one URL to another, then use the following code:</p>
<pre name="code" class="php">
RewriteRule ^fileone.html$ filetwo.html
</pre>
<p>This is a very basic rule that means any requests for fileone.html will be sent to filetwo.html.</p>
<h3 class="title">Require no &#8220;www&#8221;</h3>
<p>This bit of code will make it so visitors to your site don&#8217;t need to type in the &#8220;www&#8221; bit of your website address.</p>
<pre name="code" class="php">
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
</pre>
<h3 class="title">Block a Specific IP Address</h3>
<p>If you want to block someone coming from a specific IP address from accessing your website, you can use the following code:</p>
<pre name="code" class="php">
RewriteCond %{REMOTE_ADDR} ^(A\.B\.C\.D)$
RewriteRule ^/* http://www.domain.com/sorry.html [L]
</pre>
<p>Replace the A\.B\.C\.D with the IP address you want to block (don&#8217;t forget to leave the &#8220;\&#8221; before each dot, which escapes the character). </p>
<h3 class="title">Block Specific User Agents</h3>
<p>If you want to block a group of IP addresses using the same User Agent (bot), the following code with do it:</p>
<pre name="code" class="php">
RewriteCond %{HTTP_USER_AGENT} UserAgent
RewriteRule .* - [F,L]
</pre>
<p>Just replace the &#8220;UserAgent&#8221; bit with whatever user agent you want to block. You can also block more than one at a time by replacing the top line in that code with something like this:</p>
<pre name="code" class="php">
RewriteCond %{HTTP_USER_AGENT} UserAgentA [OR]
RewriteCond %{HTTP_USER_AGENT} UserAgentB
</pre>
<p>You can put as many user agents in as you want, just make sure you end each line with [OR] (with the exception of the last line, of course).</p>
<p class="img"><img src="http://noupe.com/img/modrewrite-image2.jpg" width="500" height="375" /></p>
<h3 class="title">Strip Query Strings</h3>
<p>Let&#8217;s say all the pages on your site other than your home page are formatted as follows, with query strings instead of page names:</p>
<p>http://www.domain.com/home.html?example=12345abcd</p>
<p>Those aren&#8217;t very pretty, and on top of that, search engines will show a bunch of duplicated &#8220;home&#8221; pages. If you want to get rid of the query string in your page URLs, use the following code:</p>
<pre name="code" class="php">
RewriteCond %{QUERY_STRING} example=
RewriteRule (.*) http://www.domain.com/$1? [R=301]
</pre>
<p>This not only gets rid of the query string, but also the preceding question mark.</p>
<h3 class="title">Set up a Default Image</h3>
<p>Using a default, backup image in case of broken images can make your site look more professional. Use the following code to redirect to a default image for any image whose file cannot be found.</p>
<pre name="code" class="php">
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]
</pre>
<p>Of course, you can change the &#8220;.jpg&#8221; bit to whatever file type you&#8217;re using. Make sure you have an image called &#8220;default.jpg&#8221; or change that to whatever your default image filename is.</p>
<h3 class="title">Prevent Hotlinking</h3>
<p>The last thing most website owners want is other sites stealing their content or worse—hotlinking to their images and stealing their bandwidth. Here&#8217;s a simple bit of code that prevents it:</p>
<pre name="code" class="php">
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/ .*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
</pre>
<p>Make sure you change the &#8220;domain.com&#8221; bit to your own domain name.</p>
<h3 class="title">Redirect to a Maintenance Page</h3>
<p>If you need to take your entire site offline for a bit and redirect to a maintenance page (or some other page), use the following code:</p>
<pre name="code" class="php">
RedirectMatch 302 ^/ /maintenancepage.html
</pre>
<p>Change the &#8220;maintenancepage.html&#8221; bit to wherever your maintenance page file is located.</p>
<h3 class="title">Redirect Multiple Domains to a Single Domain</h3>
<p>If you have multiple domains pointing to your site, it&#8217;s possible you could take a hit in the search engines for having duplicate content. Use the following code to redirect visitors from two domains to just one:</p>
<pre name="code" class="php">
RewriteCond %{HTTP_HOST} ^www.domain.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.net$ [NC]
RewriteRule ^(.*)$ http://domain.net/$1 [R=301,L]
</pre>
<h3 class="title">Remember the Filesystem Always Takes Precedence</h3>
<p>The filesystem on your server will always take precedence over the rewritten URL. For example, if you have a directory named &#8220;services&#8221; and within that directory is a file called &#8220;design.html&#8221;, you can&#8217;t have the URL redirect to &#8220;http://domain.com/services&#8221;. What happens is that Apache goes into the &#8220;services&#8221; directory and doesn&#8217;t see the rewrite instructions. </p>
<p>To fix this, simply rename your directory (adding an underscore to the beginning or end is a simple way to do that).</p>
<h3 class="title">Remember:</h3>
<ul>
<li>Because mod_rewrite works within the .htaccess file, commands are case sensitive.</li>
<li>Always back up your .htaccess file before making any changes to it. This way, if there&#8217;s a problem, you can easily restore your site.</li>
</ul>
<h3 class="title">More Resources:</h3>
<ul class="post">
<li><a href="http://www.modrewrite.com/" target="_blank">Modrewrite.com</a> &#8211; This is a great site that offers a forum, a beginner&#8217;s guide, and links to more information about mod_rewrite.</li>
<li><a href="http://spellbook.infinitiv.it/2006/09/25/mod_rewrite-tips-and-tricks.htm" target="_blank">Mod_Rewrite Tips and Tricks</a> &#8211; A great article on the basics of mod_rewrite and some beginner and advanced techniques.</li>
<li><a href="http://www.modrewrite.co.uk/" target="_blank">Mod Rewrite Tips and Tricks</a> &#8211; This site offers a few basic tips for mod_rewrite.</li>
<li><a href="http://www.justinshattuck.com/2007/01/19/apache-mod_rewrite-cheat-sheet/" target="_blank">Apache Mod_Rewrite Cheat Sheet</a> &#8211; This cheat sheet offers information on the most-used items for building a mod_rewrite pattern.</li>
<li><a href="http://www.sitepoint.com/article/apache-mod_rewrite-examples/" target="_blank">Learn Apache mod_rewrite: 13 Real-World Examples</a> &#8211; This is a much more advanced article from SitePoint.</li>
<li><a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" target="_blank">Module mod_rewrite URL Rewriting Engine</a> &#8211; The official documentation from Apache.</li>
<li><a href="http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html" target="_blank">.htaccess Rewrite Tips for Using RewriteRule and RewriteCond for .htaccess mod_rewrite</a> &#8211; A great guide to a number of different mod_rewrite patterns.</li>
<li><a href="http://www.xinsight.ca/blog/tips-for-configuring-apaches-mod_rewrite/" target="_blank">Tip for Configuring Apache&#8217;s Mod_Rewrite</a> &#8211; Five great tips for mod_rewrite configuration.</li>
<li><a href="http://phpstarter.net/2008/07/several-htaccess-mod_rewrite-tricks-to-better-web-application/">Several Mod_Rewrite Tricks for a Better Web Application</a> &#8211; Covers a number of basic and more advanced mod_rewrite tricks.</li>
</ul>
<div class="author-box">
<div class="author-text">
<img height="80" width="80" class="author-photo" src="http://media.noupe.com//uploads/2009/05/cameronchapman-80x80.png" alt=""/>   </p>
<h4><strong>Author</strong>: <a href="http://cameronchapman.com">Cameron Chapman</a></h4>
<p>Cameron Chapman is a writer, blogger, copyeditor, and social media addict. She&#8217;s been designing for more than six years and writing her whole life. If you’d like to connect with her, you can follow her on <a href="http://twitter.com/cameron_chapman">Twitter</a> or at her <a href="http://cameronchapman.com/">Personal Website</a>.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html/feed</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>The Definitive Guide to htaccess Techniques: Do&#8217;s and Don&#8217;ts</title>
		<link>http://www.noupe.com/php/htaccess-techniques.html</link>
		<comments>http://www.noupe.com/php/htaccess-techniques.html#comments</comments>
		<pubDate>Sun, 09 Aug 2009 21:47:51 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=19525</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; Of all the elements of web design and coding, htaccess can be one of the most intimidating. After all, it&#8217;s an incredibly powerful tool and one that has the potential to completely break your site if you&#8217;re not careful. Below are a dozen basic htaccess techniques and tips to get you started. They&#8217;re not [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Of all the elements of web design and coding, htaccess can be one of the most intimidating. After all, it&#8217;s an incredibly powerful tool and one that has the potential to completely break your site if you&#8217;re not careful.</p>
<p>Below are a dozen basic htaccess techniques and tips to get you started. They&#8217;re not nearly as intimidating as many people expect, and if you study the code for a few minutes, I&#8217;m sure you&#8217;ll quickly grasp exactly how they work and why.</p>
<p>After that are a few bewares and don&#8217;ts for working with htaccess to help keep you out of trouble, and some more resources for further working with htaccess.</p>
<p><span id="more-19525"></span></p>
<p class="img"><img src="http://noupe.com/img/1092550_15746034.jpg" alt="htaccess Techniques"/></p>
<h3 class="title">12 Basic htaccess Tips:</h3>
<h4 class="title">1. Create a custom error page.</h4>
<p>.htaccess on a Linux Apache server makes it easy to create your own custom error pages. Just create your custom error page files and then add this code to your .htaccess file:</p>
<pre name="code" class="php">ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php
</pre>
<p>(Obviously you should replace the &#8220;/500.php&#8221; or whatever with your own file path and name.)</p>
<h4 class="title">2. Prevent directory browsing.</h4>
<p>If you don&#8217;t include an index file in a directory, visitors can browse the directory itself. But preventing that is as easy as adding a single line to your .htaccess file:</p>
<pre name="code" class="php">
Options All -Indexes
</pre>
<h4 class="title">3. Set the default page of each directory.</h4>
<p>If you don&#8217;t want to use an index page in each directory, you can set the default page visited when someone reaches (like an about page or a page offering the newest content) that directory by adding this:</p>
<pre name="code" class="php">
DirectoryIndex news.html
</pre>
<p>(And of course you&#8217;d replace the &#8220;news.html&#8221; bit with whatever you want to use as the default.)</p>
<h4 class="title">4. Set up a 301 redirect.</h4>
<p>If you move around the structure of your site and need to redirect some old URLs to their new locations, the following bit of code will do so for you:</p>
<pre name="code" class="php">
Redirect 301 /original/filename.html http://domain.com/updated/filename.html
</pre>
<h4 class="title">5. Compress file output with GZIP.</h4>
<p>You can add the following code to your htaccess file to compress all of your JavaScript, CSS and HTML files using GZIP.</p>
<pre name="code" class="php">
&lt;IfModule mod_gzip.c&gt;
	mod_gzip_on			Yes
	mod_gzip_dechunk	Yes
	mod_gzip_item_include file			\.(html?|txt|css|js|php|pl)$
	mod_gzip_item_include handler		^cgi-script$
	mod_gzip_item_include mime		^text\.*
	mod_gzip_item_include mime		^application/x-javascript.*
	mod_gzip_item_exclude mime		^image\.*
	mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
&lt;/IfModule&gt;
</pre>
<p class="img"><img src="http://noupe.com/img/1160560_58688732.jpg" alt="secure https connection"/></p>
<h4 class="title">6. Redirect to a secure https connection</h4>
<p>If you want to redirect your entire site to a secure https connection, use the following:</p>
<pre name="code" class="php">
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</pre>
<h4 class="title">7. Block script execution.</h4>
<p>You can stop scripts in certain languages from running with this:</p>
<pre name="code" class="php">
Options -ExecCGI
AddHandler cgi-script .pl .py .php .jsp. htm .shtml .sh .asp .cgi
</pre>
<p>Just replace the types of scripts you want to block.</p>
<h4 class="title">8. Force a file to download with a &#8220;Save As&#8221; prompt.</h4>
<p>If you want to force someone to download a file instead of opening it in their browser, use this code:</p>
<pre name="code" class="php">
AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4
</pre>
<h4 class="title">9. Restrict file upload limits for PHP.</h4>
<p>You can restrict the maximum file size for uploading in PHP, as well as the maximum execution time. Just add this:</p>
<pre name="code" class="php">
php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_execution_time 200
php_value max_input_time 200
</pre>
<p>Line one specifies the maximum file size for uploading; line two is the maximum size for post data; line three is the maximum time in seconds a script can run before it&#8217;s terminated; and line four is the maximum amount of time in seconds a script is allowed to parse input data.</p>
<h4 class="title">10. Enable File Caching.</h4>
<p>Enabling file caching can greatly improve your site&#8217;s performance and speed. Use the following code to set up caching (changing the file types and time values to suit your site&#8217;s needs):</p>
<pre name="code" class="php">
#cache html and htm files for one day
&lt;FilesMatch &quot;.(html|htm)$&quot;&gt;
Header set Cache-Control &quot;max-age=43200&quot;
&lt;/FilesMatch&gt;

#cache css, javascript and text files for one week
&lt;FilesMatch &quot;.(js|css|txt)$&quot;&gt;
Header set Cache-Control &quot;max-age=604800&quot;
&lt;/FilesMatch&gt;

#cache flash and images for one month
&lt;FilesMatch &quot;.(flv|swf|ico|gif|jpg|jpeg|png)$&quot;&gt;
Header set Cache-Control &quot;max-age=2592000&quot;
&lt;/FilesMatch&gt;

#disable cache for script files
&lt;FilesMatch &quot;\.(pl|php|cgi|spl|scgi|fcgi)$&quot;&gt;
Header unset Cache-Control
&lt;/FilesMatch&gt;
</pre>
<p>(Time shown for max-age is in seconds.)</p>
<h4 class="title">11. Protect your site from hotlinking.</h4>
<p>The last thing you want is for those stealing your content to also be able to embed the images hosted on your server in their posts. It takes up your bandwidth and can quickly get expensive. Here&#8217;s a way to block hotlinking within htaccess:</p>
<pre name="code" class="php">
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9]  \.)?domain\.com [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]
</pre>
<p>(Of course you&#8217;ll want to replace the domain\.com with your own domain name.)</p>
<h4 class="title">12. Disguise your file types.</h4>
<p>You can disguise all of your file types by making them appear as PHP files. Just insert this snippet in:</p>
<pre name="code" class="php">
ForceType application/x-httpd-php
</pre>
<p class="img"><img src="http://noupe.com/img/1096880_63786041.jpg" alt="htaccess Techniques"/></p>
<h3 class="title">8 Common htaccess Mistakes and Don&#8217;ts:</h3>
<ul class="post">
<li><strong>Be careful of spelling</strong>- .htaccess is not forgiving of spelling errors.</li>
<li><strong>htaccess is case sensitive</strong>. If something is shown in the examples with a capital letter, make sure it&#8217;s capitalized in your htaccess file.</li>
<li><strong>Consider your caching</strong> needs carefully before setting it up. If your site is almost entirely static, you can set longer cache times. If your site changes daily, make sure you adapt which files will cache for how long. There&#8217;s nothing worse as a visitor than coming back to a site thinking there&#8217;s been an update and not seeing it.</li>
<li>Don&#8217;t forget to<strong> comment out your notes</strong> within the file. This is done by adding a # before the comment line.</li>
<li><strong>Always test your site</strong> immediately after making any changes to your htaccess file. One mistyped character could make the difference between your site working and being down for hours before you realize what&#8217;s happened.</li>
<li>On that note, always make sure you<strong> backup your htaccess</strong> file before making any changes. That way, if there is a problem, you can easily swap back in the old file.</li>
<li>Make sure any essential htaccess functions you&#8217;ve included are <strong>cross-browser compatible</strong>. There are certain things some browsers just won&#8217;t support (one example is with certain methods for forcing file downloads).</li>
<li>Remember when protecting a web directory with htaccess, that unless it&#8217;s restricted to https access, the password could be sniffed (as your authentication will be done over an un-secure connection).</li>
</ol>
<h3 class="title">More Resources:</h3>
<ul class="post">
<li><a href="http://viralpatel.net/blogs/2009/06/21-very-useful-htaccess-tips-tricks.html">21 Very Useful htaccess Tips and Tricks</a></li>
<li><a href="http://frontdeskapp.com/blog/5-htaccess-tricks-every-webmaster-should-know/">5 htaccess Tricks Every Webmaster Should Know</a></li>
<li><a href="http://www.thomsonchemmanoor.com/16-useful-htaccess-tricks-and-hacks-for-web-developers.html">16 Useful .htaccess Tricks and Hacks For Web Developers</a></li>
<li><a href="http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/">Stupid htaccess Tricks</a></li>
<li><a href="http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/">Using htaccess Files for Pretty URLS</a></li>
</ul>
<div class="author-box">
<div class="author-text">
<img height="80" width="80" class="author-photo" src="http://media.noupe.com//uploads/2009/05/cameronchapman-80x80.png" alt=""/>   </p>
<h4><strong>Author</strong>: <a href="http://cameronchapman.com">Cameron Chapman</a></h4>
<p>Cameron Chapman is a writer, blogger, copyeditor, and social media addict. She&#8217;s been designing for more than six years and writing her whole life. If you’d like to connect with her, you can follow her on <a href="http://twitter.com/cameron_chapman">Twitter</a> or at her <a href="http://cameronchapman.com/">Personal Website</a>.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/htaccess-techniques.html/feed</wfw:commentRss>
		<slash:comments>64</slash:comments>
		</item>
		<item>
		<title>Discussing PHP Frameworks: What, When, Why and  Which?</title>
		<link>http://www.noupe.com/php/discussing-php-frameworks.html</link>
		<comments>http://www.noupe.com/php/discussing-php-frameworks.html#comments</comments>
		<pubDate>Sat, 25 Jul 2009 21:01:26 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=17784</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; What is a PHP Framework? PHP is the world’s most popular scripting language for many different reasons – flexibility, ease-of-use, among others – but often times coding in PHP, or any language for that matter, can get rather monotonous and repetitive. That’s where a PHP framework can help. PHP frameworks streamline the the development [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<h3 class="title">What is a PHP Framework?</h3>
<p>PHP is the world’s most popular scripting language for many different reasons – flexibility, ease-of-use, among others – but often times coding in PHP, or any language for that matter, can get rather monotonous and repetitive. That’s where a PHP framework can help.</p>
<p><span id="more-17784"></span></p>
<p>PHP frameworks streamline the the development of web applications written in PHP by providing a basic structure for which to build the web applications. In other words, PHP frameworks help to promote rapid application development (RAD), which saves you time, helps build more stable applications, and reduces the amount of repetitive coding for developers. Frameworks can also help beginners to build more stable apps by ensuring proper database interaction and coding on the presentation layer. This allows you to spend more time creating the actual web application, instead of spending time writing repetitive code.</p>
<p>The general idea behind the workings of a <strong>PHP framework</strong> is referred to as <strong>Model View Controller</strong> (MVC). MVC is an architectural pattern in programming that isolates business logic from the UI, allowing one to be modified separately from the other (also known as separation of concerns). With MVC, Model refers to data, View refers to the presentation layer, and Controller to the application or business logic. Basically, MVC breaks up the development process of an application, so you can work on individual elements while others are unaffected. Essentially, this makes coding in PHP faster and less complicated.</p>
<h3 class="title">Why Should we use a PHP Framework?</h3>
<p>Developers should utilize PHP frameworks for various reasons, but the number one reason is for speeding up the development process. Reusing code across similar projects will save the developer a substantial amount of time and effort. A framework offers pre-built modules for performing tedious coding tasks, so the developer can spend their time on developing the actual application rather than re-building the foundation with each and every project.</p>
<p>Stability is another big reason developers are utilizing frameworks. While simplicity is one of PHP’s greatest assets, and the reason many people prefer to use this scripting language, it can also be one of its biggest downfalls. It’s fairly easy, especially for beginners, to write bad code and not even realize it. With PHP the application will often times still work, but unknowingly you may have opened up a large security hole in your coding that may be susceptible to attacks. It’s important to remember that PHP is a very forgiving language, so it’s even more important to make sure to tie up any loose ends in your coding – even if the application seems to be working properly.</p>
<p>Finally, the availability of PHP frameworks is extensive, and there are many different frameworks to choose from. You can even create your own, although many developers elect to choose from any of the most well-known frameworks due to their popularity, large support teams, and their forums/communities that allow you to interact with other developers who utilize the same framework. As a side note, you should always examine your project to first decide if you should even use a framework or not. Some questions you should ask yourself are: Will it save you, and anyone else who may use it, time and effort? Will the app perform better? Will it improve stability? If you can answer yes to any of these questions, a PHP framework may be the right answer for that particular project.</p>
<h3 class="title">When to use a PHP Framework?</h3>
<p>This is a common question amongst experienced and beginner developers alike, and there’s really no direct answer to the question. For many beginners, a framework will offer greater simplicity as well stability, so it may be a good idea to use PHP frameworks whenever possible. It will help reduce or eliminate bad coding and speed up the build process.</p>
<p>On the other hand, many experienced PHP programmers see frameworks as tools for “weak” programmers that don’t understand how to write good, clean code. Whether this is true or not is up for debate, but the fact of the matter is that PHP frameworks are a tool that can be used to save time and tighten up one’s coding.</p>
<p>When working on a project with tight deadlines, utilizing a PHP framework is a huge benefit that can greatly speed up the coding process. So if you’re in a time crunch, PHP frameworks can be very beneficial to you. Another instance when PHP frameworks should be a consideration is when you’re working on projects with substantial amounts of monotonous coding, because it will help make the job much less tedious.</p>
<h3 class="title">What to Look for in a PHP Framework?</h3>
<p>There’s plenty of options available to anyone who may be searching for PHP frameworks, and there’s even the option of creating your own, although that’s only recommended for PHP experts. When searching for the the PHP framework best suited for your needs, it’s important to keep in mind who will be using and/or modifying your applications from top to bottom. If there are many people who will be using the application, it may be best use a popular PHP framework that many developers are familiar with. On the other hand, if you wish to build web applications for your own personal use, you are better off choosing any PHP framework that you’re comfortable with – whether it’s popular amongst the developer community or not.</p>
<p>Various factors to search for in a PHP framework include: easy of use, rapid development/performance, popularity amongst other developers, strong features, and support/forums. It’s recommended to try out several PHP frameworks when you’re first starting out in order to find one that suits your needs the best. All frameworks are slightly different and have varying strengths and weaknesses, for instance Zend Framework has been around since V3 and is full of features plus has an extensive support system in place since it has been around for so long. On the contrary, CakePHP is another PHP framework which is younger than Zend Framework and has slightly less of a support system in place (although support for this framework is growing rapidly), but is much more user-friendly and easy to use.</p>
<p>As you can see, each type of PHP framework has its own advantages, so it’s best to use a bit of trial and error to figure out which one will work the best for your needs. Another excellent way of choosing a framework is to consult your colleagues in the development community to see which ones they prefer. Those who have actually used a specific framework will be able to inform you of the ease-of-use, features, support availability, scope of the community surrounding the framework, and possible shortfalls.</p>
<h3 class="title">Most Common Mistakes When Using a PHP Framework</h3>
<p>Mistakes are possible in any type of programming, but PHP frameworks help to limit these mistakes greatly by providing good quality code that is tried and true from the start of the development process. Repetitive coding seems to promote mistakes now and then, and frameworks all but eliminate that problem.</p>
<p>That being said, there are still things to be careful of when utilizing any PHP framework. For instance, unless you are an expert in PHP programming, you should always opt for using a popular framework with plenty of support and an active user base (see below for examples of popular PHP frameworks). There are many frameworks out there that have little or no support, and/or they were created by individuals with limited knowledge of PHP. These types of frameworks can cause your applications to not function properly, and worse case scenario, could cause catastrophic security issues with your website.</p>
<p>Another somewhat common mistake is not ensuring your database and web server is compatible with the particular framework. For example, Seagull PHP Framework recommends the following configuration:</p>
<ul class="post">
<li><strong>PHP:</strong> PHP 4.3.0 is the minimum, later versions work fine, as do versions PHP 5.1.1 and above. Avoid anything in the 5.0.x series</li>
<li><strong>MySQL:</strong> MySQL 4.0.x, 4.1.x and 5.0.x are all supported. You can also use 3.23.x.</li>
<li><strong>Apache:</strong> Seagull works fine with 1.3.x and 2.x series of Apache</li>
</ul>
<p>If you don’t meet these requirements, you won’t be observing the best performance possible from your chosen framework. Even if you are an expert in PHP, you should always go over the documentation of the framework to confirm compatibility before trying it out.</p>
<p>Similar to the previously mentioned common mistake, not following the recommended installation process of your PHP framework can also give you some headaches. Take Seagull as an example again – the Seagull wiki has a detailed rundown of the framework’s installation process that has several key steps that are sometimes easily overlooked by careless or unsuspecting developers. The key is to take your time setting up the framework and follow the installation instructions to the “T” – The time you’ll save actually developing applications later will more than make up for the few extra minutes spent installing the framework correctly the first time.</p>
<h3 class="title">What are the Best PHP Frameworks Available?</h3>
<p>Within the past few years as PHP has evolved as the scripting language of choice by most developers, there have been an explosion of PHP frameworks to hit the scene. There is a great debate about what the best PHP frameworks are, because the simple fact is that not every framework is built for everyone. Here’s a quick rundown of five of the best and most popular choices right now:</p>
<h4 class="title">The Zend Framework</h4>
<p class="img"><img src="http://noupe.com/img/php-frameworks/php-1.jpg" alt="PHP Frameworks Post Image" width="500" height="350" /></a></p>
<p><a href="http://framework.zend.com/">The Zend Framework</a> has a massive following amongst the development community and is focused on web 2.0 style applications. Because of their massive following, extensive support and active user base, Zend is referred to as “The PHP Company”. Zend is one of, if not, the most popular PHP frameworks available today. It has robust features that are built for corporate-level development, and it requires an extensive knowledge of PHP.</p>
<h4 class="title">CakePHP</h4>
<p class="img"><img src="http://noupe.com/img/php-frameworks/php-2.jpg" alt="PHP Frameworks Post Image" width="500" height="350" /></a></p>
<p><a href="http://cakephp.org/">CakePHP</a> is a great choice for beginners to advanced PHP developers. It’s based on the same principles that Ruby on Rails is designed around, and it’s heavily focused on rapid development – making it a great framework to be used for rapid application development. Its rapidly growing support system, simplicity, and scalability make CakePHP one of the most popular PHP frameworks available today.</p>
<h4 class="title">Symfony</h4>
<p class="img"><img src="http://noupe.com/img/php-frameworks/php-3.jpg" alt="PHP Frameworks Post Image" width="500" height="350" /></a></p>
<p><a href="http://www.symfony-project.org/">Symfony</a> is aimed more at advanced developers who’s main objective is to create enterprise-level applications – most notably Askeet and Yahoo! Bookmarks. This open source PHP framework is full of features and can do it all, but it’s main downfall is that it is a bit slower than other frameworks.</p>
<h4 class="title">Codelgniter</h4>
<p class="img"><img src="http://noupe.com/img/php-frameworks/php-4.jpg" alt="PHP Frameworks Post Image" width="500" height="350" /></a></p>
<p><a href="http://codeigniter.com/">Codelgniter</a> is well-known for its ease-of-use, performance and speed. Unlike Symfony, this PHP framework is ideal for shared hosting accounts or for when you want a framework with a small footprint. It offers simple solutions, and has an extensive library of video tutorials, forums, a user guide and wiki available for support. Beginners should consider using Codelgniter.</p>
<h4 class="title">Seagull</h4>
<p class="img"><img src="http://noupe.com/img/php-frameworks/php-5.jpg" alt="PHP Frameworks Post Image" width="500" height="350" /></a></p>
<p><a href="http://seagullproject.org/">Seagull</a> is a well-established PHP framework used for building web, command line and GUI apps. It is an extremely easy to use framework that is ideal for beginners to advanced coders. For beginners, Seagull features a library of sample applications that can be customized to fit your needs, and for experts, Seagull offers a host of options – including best practices, standards, and modular codebase – for building web applications quickly and easily. Seagull has an active developer community and plenty of support documentation in place as well.</p>
<h4 class="title">Summary</h4>
<p>PHP frameworks are a great way for developers of all skill levels to reduce the need for repetitive coding, speed up the development process, and to ensure proper coding when creating web applications. This not only speeds up the development of rich applications, but it also tightens up PHP security by reducing the risk of security holes in your coding.</p>
<p>While some expert PHP coders do not feel the need to use frameworks to develop web apps, they can still be an advantage in situations where rapid development is necessary, such as under tight deadlines. And for beginner to intermediate developers, frameworks can enhance the PHP learning process while promoting good coding practices and reducing bad coding, which is common in PHP due to its “forgiving” nature.</p>
<p>There are many PHP frameworks available today, and thus developers are sure to find a framework that fits there needs in terms of features, support, speed, scalability and more. Some of the top PHP frameworks used by developers today include: The Zend Framework, CakePHP, Symfony, Codelgniter, and Seagull.</p>
<div class="author-box">
<div class="author-text">
<h4><strong>Author</strong>: Joel Reyes</h4>
<p>Joel Reyes Has been designing and coding web sites for several years, this has lead him to be the creative mind behind Looney Designer a design resource and portfolio site that revolves around web and graphic design.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/discussing-php-frameworks.html/feed</wfw:commentRss>
		<slash:comments>221</slash:comments>
		</item>
		<item>
		<title>In choosing a CMS: 40+ Great CMS Theming Tutorials</title>
		<link>http://www.noupe.com/php/cms-theming-tutorials.html</link>
		<comments>http://www.noupe.com/php/cms-theming-tutorials.html#comments</comments>
		<pubDate>Tue, 21 Jul 2009 00:34:45 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[TUTORIAL]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=17441</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; In choosing a CMS, one thing you should consider is the theming or templating process. While some CMSs have very simple and easy-to-use theming systems, others can be a real bear to use. Below are tutorials for some of the more popular CMSs out there. Some have tons of tutorials available (WordPress, Drupal, Concrete5) [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>In <a href="http://www.noupe.com/php/choosing-cms-tips.html">choosing a CMS</a>, one thing you should consider is the theming or templating process. While some CMSs have very simple and easy-to-use theming systems, others can be a real bear to use.</p>
<p>Below are tutorials for some of the more popular CMSs out there. Some have tons of tutorials available (WordPress, Drupal, Concrete5) while others have limited documentation outside of the official site (Magnolia, Umbraco, TYPOlight). Some CMSs we&#8217;d planned to feature had little readily-available theming documentation and were left off the list entirely. In any case, whatever CMS you choose should have reliable, easy-to-understand instructions for creating custom themes, either in the official documentation or easily available within the developer community.</p>
<p><span id="more-17441"></span></p>
<h3 class="title">CMS Made Simple</h3>
<p><a href="http://www.cmsmadesimple.org" target="_blank">CMS Made Simple</a> is an open source CMS built in PHP.</p>
<h4 class="title"><a href="http://wiki.cmsmadesimple.org/index.php/User_Handbook/Getting_Started/Designer/Templates" target="_blank">Getting Started: Templates</a></h4>
<p>This page from CMSMS&#8217;s documentation covers all the basics for creating your own templates. It also includes information on customizing the default templates.</p>
<p class="img"><a href="http://wiki.cmsmadesimple.org/index.php/User_Handbook/Getting_Started/Designer/Templates" target="_blank"><br />
<img src="http://www.noupe.com/img/cms-tutorials/cmsmsgettingstartedtemplates.jpg" alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.denisvlasov.net/147/3-ways-to-plug-custom-css-stylesheet-in-cmsms/" target="_blank">3 ways to plug a custom CSS stylesheet in CMSMS</a></h4>
<p>This tutorial shows three different ways to use custom CSS with CMS Made Simple. Methods included are using metadata in global admin settings, directly in the website templates, and using the native stylesheet mechanism of CMSMS.</p>
<p class="img"><a href="http://www.denisvlasov.net/147/3-ways-to-plug-custom-css-stylesheet-in-cmsms/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/3waystoplugcustomcssstylesheetincmsms.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Concrete5</h3>
<p><a href="http://www.concrete5.org/" target="_blank">Concrete5</a> is an open-source CMS released under the MIT software license.</p>
<h4 class="title"><a href="http://hungred.com/2009/03/07/how-to/tutorial-making-a-template-for-concrete5/" target="_blank">Tutorial: Making a template for concrete5</a></h4>
<p>This tutorial shows how to adapt a regular HTML template for use with Concrete5. The tutorial is illustrated and very simple to follow, with all the code you need included.</p>
<p class="img"><a href="http://hungred.com/2009/03/07/how-to/tutorial-making-a-template-for-concrete5/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/tutorialmakingatemplateforconcrete5.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.codeblog.ch/2009/01/concrete5-theme-erstellen/" target="_blank">Concrete5—Create your own theme</a></h4>
<p>This multi-part tutorial shows you exactly how to create your own template for Concrete5. It covers the elements of a theme, the HTML structure, and more.</p>
<p class="img"><a href="http://www.codeblog.ch/2009/01/concrete5-theme-erstellen/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/concrete5createyourowntheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.concrete5.org/help/building_with_concrete5/developers/themes" target="_blank">Understanding and Building Themes in Concrete</a></h4>
<p>This is the official theming documentation for Concrete5 and includes both a basic introduction to themes and links to more advanced topics.</p>
<p class="img"><a href="http://www.concrete5.org/help/building_with_concrete5/developers/themes" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/understandingandbuildingthemesinconcrete.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">CushyCMS</h3>
<p><a href="http://www.cushycms.com/" target="_blank">CushyCMS</a> is a free, hosted CMS option.</p>
<h4 class="title"><a href="http://net.tutsplus.com/tutorials/site-builds/how-to-build-a-maintainable-site-using-cushycms-and-twitter/" target="_blank">How to Build a Maintainable Site using CushyCMS and Twitter</a></h4>
<p>While this tutorial covers a lot more than just theming, that&#8217;s what it starts with. And it does a great job of showing how to create a theme for CushyCMS, with very easy-to-follow instructions.</p>
<p class="img"><a href="http://net.tutsplus.com/tutorials/site-builds/how-to-build-a-maintainable-site-using-cushycms-and-twitter/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtobuildamaintainablesiteusingcushycmsandtwitter.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.cushycms.com/static/documentation" target="_blank">CushyCMS Designer Documentation</a></h4>
<p>This is the official documentation for designers. It includes everything you&#8217;d want to know about designing or customizing themes for use with CushyCMS. Topics covered include overriding content types, using Cushy with dynamic languages, XML elements and more.</p>
<p class="img"><a href="http://www.cushycms.com/static/documentation" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/cushycmsdesignerdocumentation.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">DotNetNuke</h3>
<p><a href="http://www.dotnetnuke.com/" target="_blank">DotNetNuke</a> is an open-source CMS for ASP.NET.</p>
<h4 class="title"><a href="http://www.themeswiki.org/Creating_your_first_DotNetNuke_Skin" target="_blank">Creating your first DotNetNuke Skin</a></h4>
<p>This is a very basic tutorial on how to create a skin for DotNetNuke. It&#8217;s a good starting point for learning to create skins, though it doesn&#8217;t really result in an end-product many people would want to use.</p>
<p class="img"><a href="http://www.themeswiki.org/Creating_your_first_DotNetNuke_Skin" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatingyourfirstdotnetnukeskin.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.dnncreative.com/CreatingaSkinTemplate/tabid/216/Default.aspx" target="_blank">Creating a Skin Template</a></h4>
<p>This is a thorough template on creating a skin that&#8217;s part of a series on creating websites in DotNetNuke. It includes tons of information on skin design and implementation. Additional tutorials after this one provide more in depth information on skinning and are linked at the bottom of this page.</p>
<p class="img"><a href="http://www.dnncreative.com/CreatingaSkinTemplate/tabid/216/Default.aspx" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatingaskintemplatedotnetnuke.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.dnncreative.com/HowtocreateapureCSSskin/tabid/252/Default.aspx" target="_blank">How to Create a Pure CSS Skin in DotNetNuke</a></h4>
<p>This is a 9-part video tutorial on how to create CSS-based skins for DotNetNuke. It&#8217;s very complete and based on the Simple Red Leaf layout available from DNN Creative Magazine.</p>
<p class="img"><a href="http://www.dnncreative.com/HowtocreateapureCSSskin/tabid/252/Default.aspx" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtocreateapurecssskinindotnetnuke.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Drupal</h3>
<p><a href="http://drupal.org/" target="_blank">Drupal</a> is a free, open-source, PHP-based CMS.</p>
<h4 class="title"><a href="http://drupal.org/theme-guide" target="_blank">Theming Guide</a></h4>
<p>This is the theming guide available in the Drupal documentation. It covers everything you&#8217;d want to know about building Drupal themes, including information for both Drupal 5 and 6. Best practices and information on how to contribute themes are also included. </p>
<p class="img"><a href="http://drupal.org/theme-guide" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/drupalthemingguide.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.gomediazine.com/tutorials/create-a-killer-band-site-with-drupal-introduction/" target="_blank">Create a Killer Band Site With Drupal: A 6-part Tutorial Series</h3>
<p></a></p>
<p>This tutorial is specific to band-sites, but the information it contains could easily be applied to other types of sites. It covers everything from designing the site in Illustrator to Drupal theming and admin. And it gives plenty of examples of similar sites running on Drupal.</p>
<p class="img"><a href="http://www.gomediazine.com/tutorials/create-a-killer-band-site-with-drupal-introduction/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/createakillerbandsitewithdrupal.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://tips.webdesign10.com/how-to-make-a-drupal-theme" target="_blank">How to Make a Drupal Theme</a></h4>
<p>This is a very simple but complete tutorial on how to create your own Drupal themes. It covers theme building based on the PHPtemplate theme engine and Drupal 6. It also covers the different files included in a Drupal theme and what each one does.</p>
<p class="img"><a href="http://tips.webdesign10.com/how-to-make-a-drupal-theme" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtomakeadrupaltheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title">From PSD to Drupal Theme Tutorial<a href="http://www.xalking.com/blog/psd-drupal-theme-tutorial-part-i" target="_blank">Part 1</a>, <a href="http://www.xalking.com/blog/psd-drupal-theme-tutorial-part-ii" target="_blank">Part 2</a>, <a href="http://www.xalking.com/blog/psd-drupal-theme-tutorial-part-iii" target="_blank">Part 3</a></h4>
<p>This multi-part tutorial covers everything you need to know to convert a PSD file into a Drupal theme. It&#8217;s another very complete tutorial that includes all the code you&#8217;ll need.</p>
<p class="img"><a href="http://www.xalking.com/blog/psd-drupal-theme-tutorial-part-i" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/frompsdtodrupalthemetutorial.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">ExpressionEngine</h3>
<p><a href="http://expressionengine.com/" target="_blank">ExpressionEngine is a PHP and MySQL-based CMS.</p>
<h4 class="title"><a href="http://expressionengine.com/blog/article_list/category/dissecting_templates/" target="_blank">Dissecting the Default Templates</a></h4>
<p>This page gives a complete run-down of how templates in ExpressionEngine work. It covers everything from category headings and parameters to variables to RSS and mailing lists. It&#8217;s a good starting point for anyone interested in developing EE templates.</p>
<p class="img"><a href="http://expressionengine.com/blog/article_list/category/dissecting_templates/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/expressionenginedissectingthedefaulttemplate.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://expressionengine.com/tutorials/lesson/introduction_to_templates/" target="_blank">Introduction to Templates Tutorial</a></h4>
<p>This video tutorial covers the basics of ExpressionEngine templates. It&#8217;s another good place to start if you want to design EE templates.</p>
<p class="img"><a href="http://expressionengine.com/tutorials/lesson/introduction_to_templates/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/introductiontotemplatestutorialee.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/" target="_blank">Building a Small Business Site</a></h4>
<p>This series of tutorials covers the complete setup of a website in ExpressionEngine. It includes a few tutorials specifically on how to work with templates, though, all of which are worth a look.</p>
<p class="img"><a href="http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/buildingasmallbusinesswebsiteee.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Joomla!</h3>
<p><a href="http://www.joomla.org/" target="_blank">Joomla!</a> is a PHP-based, free CMS.</p>
<h4 class="title"><a href="http://www.compassdesigns.net/tutorials/83-creating-a-w3c-valid-joomla-template.html" target="_blank">Creating a W3C Valid Joomla Template</a></h4>
<p>This tutorial shows how to create a CSS-based Joomla theme that&#8217;s completely standards-compliant and accessible. The end result is a basic, 3-column theme that can be adapted to different needs.</p>
<p class="img"><a href="http://www.compassdesigns.net/tutorials/83-creating-a-w3c-valid-joomla-template.html" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatingaw3cvalidjoomlatemplate.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.tobacamp.com/tutorial/5-easy-steps-converting-html-template-to-joomla-template/" target="_blank">5 Easy Steps Converting HTML Template to Joomla Template</a></h4>
<p>Here&#8217;s a five-step tutorial for turning just about any HTML template into a Joomla theme. The starting template should be (X)HTML and CSS-based and standards-compliant. This is really a very simple process and the tutorial outlines the steps very well.</p>
<p class="img"><a href="http://www.tobacamp.com/tutorial/5-easy-steps-converting-html-template-to-joomla-template/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/5easystepsconvertinghtmltemplatetojoomlatemplate.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://net.tutsplus.com/tutorials/other/creating-your-first-joomla-template/" target="_blank">How to Create Your First Joomla Template</a></h4>
<p>This tutorial covers all the basics to creating a Joomla template, specifically geared to someone with no Joomla templating experience. It&#8217;s highly illustrated, making it really easy to follow. It&#8217;s also one of the most extensive Joomla theme tutorials out there.</p>
<p class="img"><a href="http://net.tutsplus.com/tutorials/other/creating-your-first-joomla-template/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtocreateyourfirstjoomlatemplate.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.make-my-own-website.org/how-to-make-a-joomla-theme/" target="_blank">How to make a Joomla theme</a></h4>
<p>This is a very basic tutorial covering creating your own simple Joomla theme. It consists of only ten steps and provides sample code.</p>
<p class="img"><a href="http://www.make-my-own-website.org/how-to-make-a-joomla-theme/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtomakeajoomlatheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Magnolia</h3>
<p><a href="http://www.magnolia-cms.com/home.html" target="_blank">Magnolia</a> is an enterprise-level CMS built on the Java platform. There is a free, open-source edition available.</p>
<h4 class="title"><a href="http://documentation.magnolia-cms.com/templating-guide.html" target="_blank">Templating Guide</a></h4>
<p>This is the templating tutorial from Magnolia&#8217;s official documentation. It covers the basics of creating a simple template.</p>
<p class="img"><a href="http://documentation.magnolia-cms.com/templating-guide.html" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/magnoliatemplatingguide.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">MODx</h3>
<p><a href="http://modxcms.com" target="_blank">MODx</a> is an open-source &#8220;application framework&#8221; built on PHP.</p>
<h4 class="title"><a href="http://wiki.modxcms.com/index.php/Beginner%27s_Guide_to_MODx#Creating_the_Template" target="_blank">Beginner&#8217;s Guide to MODx: Creating the Template</a></h4>
<p>This tutorial is from the MODx wiki and covers all the basics of theming with MODx. It includes all the sample code you&#8217;ll need and is broken down in easy-to-understand sections.</p>
<p class="img"><a href="http://wiki.modxcms.com/index.php/Beginner%27s_Guide_to_MODx#Creating_the_Template" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/beginnersguidetomodxcreatingthetemplate.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.themeswiki.org/Theming_MODx" target="_blank">Theming MODx</a></h4>
<p>Here&#8217;s another wiki-based tutorial for creating MODx themes. Sample code is included, though this tutorial doesn&#8217;t seem to be quite as complete as the one in the official documentation.</p>
<p class="img"><a href="http://www.themeswiki.org/Theming_MODx" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/themingmodx.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://codingpad.maryspad.com/2009/03/31/building-a-website-with-modx-for-newbies-part-3-working-with-templates/" target="_blank">Building a Website with MODx for Newbies—Part 3: Working with Templates</a></h4>
<p>This tutorial gives thorough instructions for customizing an existing template to work with MODx. Additional tutorials in the series get into more detailed customizations and other aspects of working with MODx.</a></h4>
<p class="img"><a href="http://codingpad.maryspad.com/2009/03/31/building-a-website-with-modx-for-newbies-part-3-working-with-templates/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/buildingawebsitewithmodxfornewbiespart3.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Plone</h3>
<p><a href="http://plone.org/" target="_blank">Plone</a> is a free, open-source CMS.</p>
<h4 class="title"><a href="http://plone.org/documentation/tutorial/creating-plone-themes" target="_blank">Creating a new theme for Plone: a real-world example</a></h4>
<p>This is a very complete tutorial that covers all aspects of building a Plone theme from a Photoshop mockup. It shows how to do everything from creating the basic foundation for the theme to styling the individual elements.</p>
<p class="img"><a href="http://plone.org/documentation/tutorial/creating-plone-themes" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatinganewthemeforplonerealwordexample.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.themeswiki.org/Creating_a_Custom_theme_for_Plone" target="_blank">Creating a Custom Theme for Plone</a></h4>
<p>This is another incredibly detailed tutorial for creating Plone themes. It covers everything from creating custom CSS to overriding visual elements.</p>
<p class="img"><a href="http://www.themeswiki.org/Creating_a_Custom_theme_for_Plone" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatingacustomthemeforplone.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Radiant CMS</h3>
<p><a href="http://radiantcms.org/" target="_blank">Radiant</a> is a free Ruby On Rails CMS.</p>
<h4 class="title"><a href="http://www.artofmission.com/articles/2006/06/06/radiant-cms" target="_blank">Radiant CMS</a></h4>
<p>This tutorial covers the basics of working with Radiant, including how the pages are set up and how to design around the basic page structure. It shows the basic divs used and how theme and template files are generally set up.</p>
<p class="img"><a href="http://www.artofmission.com/articles/2006/06/06/radiant-cms" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/radiantcms.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">SilverStripe</h3>
<p><a href="http://www.silverstripe.org/" target="_blank">SilverStripe</a> is built on the open source Sapphire development framework.</p>
<h4 class="title"><a href="http://doc.silverstripe.org/doku.php?id=themes:developing" target="_blank">Developing Themes</a></h4>
<p>This is the theme development guide right from the SilverStripe Documentation. It&#8217;s a great place to start, as it explains all the basics of how SilverStripe themes are structured and the core files required.</p>
<p class="img"><a href="http://doc.silverstripe.org/doku.php?id=themes:developing" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/developingthemessilverstripe.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.mathias-wilhelm.de/silverstripe_tutorial/index.html" target="_blank">Tutorial for SilverStripe</a></h4>
<p>This is a tutorial for creating a very basic SilverStripe theme. It includes three steps. In the end, you get a framework that allows for quick and easy theme development without compromising the capabilities of SilverStripe.</p>
<p class="img"><a href="http://www.mathias-wilhelm.de/silverstripe_tutorial/index.html" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/tutorialforsilverstripe.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.ssbits.com/building-a-theme-from-a-static-template/" target="_blank">Building a Theme from a Static Template</a></h4>
<p>Here&#8217;s a tutorial that covers how to adapt just about any website template to work as a SilverStripe theme. It includes a sample template to work with (both the starting files and the completed ones). It also includes documentation for working with other templates in case you&#8217;d prefer to start with something different.</p>
<p class="img"><a href="http://www.ssbits.com/building-a-theme-from-a-static-template/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/buildingathemefromastatictemplatesilverstripe.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://doc.silverstripe.org/doku.php?id=tutorial:1-building-a-basic-site" target="_blank">Tutorial: Building a Basic Site</a></h4>
<p>This is the tutorial in SilverStripe&#8217;s official documentation. It covers building templates in addition to other basic functionality of the CMS.</p>
<p class="img"><a href="http://doc.silverstripe.org/doku.php?id=tutorial:1-building-a-basic-site" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/silverstripetutorialbuildingabasicsite.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Textpattern</h3>
<p><a href="http://textpattern.com/" target="_blank">Textpattern</a> is an open source CMS built on PHP and MySQL.</p>
<h4 class="title"><a href="http://babblative.com/article/your-first-textpattern-theme" target="_blank">Your First Textpattern Theme</a></h4>
<p>This is an 8-part tutorial on creating a Textpattern theme, specifically geared at beginners. It covers forms, pages, excerpts, secondary pages and forms, and tags, among other things. It&#8217;s very complete and easy to understand.</p>
<p class="img"><a href="http://babblative.com/article/your-first-textpattern-theme" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/yourfirsttextpatterntheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://textbook.textpattern.net/wiki/index.php?title=Page_%28Template%29_Related_Tags" target="_blank">Page (Template) Related Tags</a></h4>
<p>This page gives a complete overview of the tags used in building page templates (as opposed to form templates) for Textpattern. It&#8217;s a must-have resource for anyone building Textpattern templates.</p>
<p class="img"><a href="http://textbook.textpattern.net/wiki/index.php?title=Page_%28Template%29_Related_Tags" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/pagetemplaterelatedtagstextpattern.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">TYPO3</h3>
<p><a href="http://typo3.org/" target="_blank">TYPO3</a> is a GPL-licensed CMS built with PHP.</p>
<h4 class="title"><a href="http://www.themeswiki.org/Creating_TYPO3_Templates" target="_blank">Creating TYPO3 Templates</a></h4>
<p>This is a very detailed tutorial from ThemesWiki that thoroughly explains how to create templates for TYPO3. It covers the elements of a template, objects and properties, using TypoScript, integrating design templates, using the auto parser template and more.</p>
<p class="img"><a href="http://www.themeswiki.org/Creating_TYPO3_Templates" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/creatingtypo3templates.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.typo3-tutorials.org/tutorials/sonstiges/typo3-template-design-guide.html" target="_blank">TYPO3 Template Design Guide</a></h4>
<p>This is a rather short article on creating maintainable sites and templates in TYPO3. It includes hints for using TemplaVoila, too.</p>
<p class="img"><a href="http://www.typo3-tutorials.org/tutorials/sonstiges/typo3-template-design-guide.html" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/typo3templatedesignguide.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.typo3.jp/us/documentation/futuristic-template-building-t.html" target="_blank">Futuristic Template Building Tutorial</a></h4>
<p>Here&#8217;s a very in-depth tutorial on creating TYPO3 templates. It includes sections covering integration of an HTML page template with TemplaVoila, creating additional page templates, &#8220;flexible content elements,&#8221; and information on TypoScript.</p>
<p class="img"><a href="http://www.typo3.jp/us/documentation/futuristic-template-building-t.html" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/futuristictemplatebuildingtutorial.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">TYPOlight</h3>
<p><a href="http://www.typolight.org/" target="_blank">TYPOlight</a> is a free, PHP-based CMS that uses Ajax and other &#8220;Web 2.0&#8243; technologies.</p>
<h4 class="title"><a href="http://dev.typolight.org/wiki/TutorialsCreatingCustomTemplates" target="_blank">Tutorials: Creating Custom Templates</a></h4>
<p>This tutorial is from the TYPOlight documentation and covers all the basics of creating your own layouts. Topics included are creating basic modules, importing style sheets, creating page layouts and the site structure, adding content, and previewing and modifying your templates. You can also watch the tutorial as a narrated screencast.</p>
<p class="img"><a href="http://dev.typolight.org/wiki/TutorialsCreatingCustomTemplates" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/typolightcreatingcustomtemplates.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">Umbraco</h3>
<p><a href="http://umbraco.org/" target="_blank">Umbraco</a> is an open source CMS built on ASP.NET.</p>
<h4 class="title"><a href="http://umbraco.org/documentation/books/understanding-templates--stylesheets" target="_blank">Understanding Templates &amp; Stylesheets</a></h4>
<p>This article from the official documentation offers the basics of how Umbraco builds pages and using templates. It&#8217;s a perfect starting point for learning how to build templates for Umbraco.</p>
<p class="img"><a href="http://umbraco.org/documentation/books/understanding-templates--stylesheets" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/umbracounderstandingtemplatesstylesheets.jpg"alt="CMS Theming Tutorials" /></a></p>
<h3 class="title">WordPress</h3>
<p><a href="http://wordpress.org" target="_blank">WordPress</a> is a free blogging platform that can be modified to be used as a CMS.</p>
<h4 class="title"><a href="http://www.wpdesigner.com/2007/02/19/so-you-want-to-create-wordpress-themes-huh/" target="_blank">So you want to create WordPress themes huh?</a></h4>
<p>This is one of the most complete WP theme-building tutorials out there. It consists of 25 separate lessons and covers how the WP templating system works, The Loop, post meta data, search forms, calendars, comment templates and pretty much everything else about themes in WP. If you want to build a theme completely from scratch, this is the tutorial to show you how.</p>
<p class="img"><a href="http://www.wpdesigner.com/2007/02/19/so-you-want-to-create-wordpress-themes-huh/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/soyouwanttocreatewordpressthemehuh.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://www.siteground.com/tutorials/wordpress/wordpress_create_theme.htm" target="_blank">How to create a simple WordPress theme</a></h4>
<p>This tutorial gives instructions for creating a basic, simple WP theme that includes the header.php, index.php, sidebar.php and footer.php template files, in addition to the style sheet. It&#8217;s very simple and straight-forward, but a great place to start if you&#8217;re new to building WP themes. The basic steps can easily be adapted to building more complex themes.</p>
<p class="img"><a href="http://www.siteground.com/tutorials/wordpress/wordpress_create_theme.htm" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtocreateasimplewordpresstheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://themeshaper.com/wordpress-themes-templates-tutorial/" target="_blank">How To Create a WordPress Theme: The Ultimate WordPress Theme Tutorial</a></h4>
<p>Here&#8217;s another very complete tutorial, offering up 11 lessons on how to create a WP theme. It focuses on creating a theme with good SEO, valid and logical semantic markup, separated trackbacks and comments, two widget areas, and all the basics you&#8217;d expect from a WP theme. The lessons are ordered logically and include theme development tools and information about the WP template and directory structure.</p>
<p class="img"><a href="http://themeshaper.com/wordpress-themes-templates-tutorial/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtocreateawordpressthemetheultimatewpthemetutorial.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://max.limpag.com/2006/09/01/how-to-convert-any-web-template-into-a-wordpress-theme/" target="_blank">How to convert any web template into a WordPress theme</a></h4>
<p>Sometimes you don&#8217;t want to design a theme from scratch. Maybe you&#8217;ve found the perfect theme (or designed one), but it&#8217;s just a regular web template, not a WP theme. This tutorial will show you how to convert that web template into a WP theme without too much trouble. It also includes a link to a video tutorial showing how one template was converted.</p>
<p class="img"><a href="http://max.limpag.com/2006/09/01/how-to-convert-any-web-template-into-a-wordpress-theme/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtoconvertanywebtemplateintoawptheme.jpg"alt="CMS Theming Tutorials" /></a></p>
<h4 class="title"><a href="http://net.tutsplus.com/site-builds/how-to-create-a-wordpress-theme-from-scratch/" target="_blank">How to Create a WordPress Theme from Scratch</a></h4>
<p>This tutorial shows how to take a basic HTML/CSS template and convert it to a WP theme. It&#8217;s incredibly complete, covering every aspect of WP theming. It also explains how themes are structured and how to create the core theme files.</p>
<p class="img"><a href="http://net.tutsplus.com/site-builds/how-to-create-a-wordpress-theme-from-scratch/" target="_blank"><img src="http://www.noupe.com/img/cms-tutorials/howtocreateawpthemefromscratch.jpg"alt="CMS Theming Tutorials" /></a></p>
<div class="author-box">
<div class="author-text">
<img height="80" width="80" class="author-photo" src="http://media.noupe.com//uploads/2009/05/cameronchapman-80x80.png" alt=""/>   </p>
<h4><strong>Author</strong>: <a href="http://cameronchapman.com">Cameron Chapman</a></h4>
<p>Cameron Chapman is a writer, blogger, copyeditor, and social media addict. She&#8217;s been designing for more than six years and writing her whole life. If you’d like to connect with her, you can follow her on <a href="http://twitter.com/cameron_chapman">Twitter</a> or at her <a href="http://cameronchapman.com/">Personal Website</a>.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/cms-theming-tutorials.html/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Ten Simple Rules for Choosing the Perfect CMS + Excellent Options</title>
		<link>http://www.noupe.com/php/choosing-cms-tips.html</link>
		<comments>http://www.noupe.com/php/choosing-cms-tips.html#comments</comments>
		<pubDate>Sun, 12 Jul 2009 22:53:36 +0000</pubDate>
		<dc:creator>Editorial</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.noupe.com/?p=16605</guid>
		<description><![CDATA[<table width="650"><tr><td width="650"><div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=noupe-rss&position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=noupe-rss&position=3" border="0" alt="" /></a>
    </div></td></tr></table>
&nbsp;&nbsp; The content management system you choose can really make a huge difference in how much time you (or your clients) spend keeping a site updated and maintained. There&#8217;s a huge variety out there&mdash;some estimates put the number at around 1700 different options. Some are great&#8230;some, not so much. Below are ten useful guidelines to [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div style="width:650px;">
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&#038;collection=noupe-rss&#038;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&#038;collection=noupe-rss&#038;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>The content management system you choose can really make a huge difference in how much time you (or your clients) spend keeping a site updated and maintained. There&#8217;s a huge variety out there&mdash;some estimates put the number at around 1700 different options. Some are great&#8230;some, not so much.</p>
<p>Below are <strong>ten useful guidelines</strong> to consider when choosing a <strong>CMS</strong>, followed by rundowns on ten great CMS options available and how they stack up based on the guidelines. </p>
<p><span id="more-16605"></span></p>
<h3 class="title">Ten Simple Guidelines for Choosing the Perfect CMS</h3>
<h5 class="title">1. The CMS you choose should be really good at whatever the main function of your website is.</h5>
<p>What do you want your website to do? Is it going to be primarily a static website, like an online brochure? Or is it going to be a fully-functioning ecommerce site? Or maybe it&#8217;s going to be really media-heavy with tons of videos, photos, and audio files. Or is a blog going to be the primary focus? </p>
<p>Whatever your site&#8217;s primary function is going to be, you need to define it and then find a CMS that does that particular thing really, really well. If blogging is the main focus of the site, then use a blog platform. If images and video are the main focus, then you need to find a CMS that either has great support for media built-in or has great plugins for enabling those functions. If your site is going to focus on an online store, then the platform you choose needs to be able to seamlessly integrate that online store without a ton of extra work.</p>
<h5 class="title">2. A CMS needs to work intuitively.</h5>
<p>When you average user opens up the backend of the site, they should be able to figure out how to do basic functions without too much instruction. Different elements of the site should be clearly labeled. The basics of posting a new page, editing a page, and even changing themes or sidebar elements should all be relatively simple to figure out for the average computer user.</p>
<h5 class="title">3. The backend needs to be standardized.</h5>
<p>Things should all work basically the same way in the backend of the site. A good CMS should have a standardized format for each section of the backend. If one section uses a drop-down menu for selecting something, then all of the other sections should use the same type of menu for similar options&mdash;not radio buttons or some other selector. </p>
<p>The same goes for the way things are named or otherwise referred to. If something is called a &#8220;page&#8221; in one place and a &#8220;post&#8221; in another, that&#8217;s going to get confusing (plus, most people consider those two different things). If it&#8217;s a &#8220;sidebar&#8221; in one place and a &#8220;second column&#8221; somewhere else, that&#8217;s going to confuse your average user. </p>
<h5 class="title">4. The backend needs to be logical and well-organized.</h5>
<p>Things should be laid out logically in the backend. This means that all of the functions related to editing, or sidebars, or themes, or creating new content, should be grouped somehow or otherwise function the same. Alternatively, some CMSs put all of the things related to pages in one place, sidebars in another, plugins in another, etc. Either way, they&#8217;re laid out logically and once you know the basic architecture, it&#8217;s easy enough to figure out where things are supposed to be.</p>
<h5 class="title">5. The right CMS shouldn&#8217;t have a ton of extra functionality you&#8217;ll never use.</h5>
<p>This is a completely personal choice. Some sites will make use of tons of advanced functionality. Other sites won&#8217;t. If you&#8217;re never going to have an online store, why do you need a CMS that focuses on ecommerce? If you never plan to do anything beyond posting photos to your site, why have a CMS that does that plus a hundred other things? Instead, find a CMS that does the one thing you want to do really well and forget about the other features.</p>
<h5 class="title">6. The right CMS should be easy for non-geeks to use.</h5>
<p>Web designers and developers are very good at using web-based applications and pretty much anything else computer-related. A lot of their clients, on the other hand, probably aren&#8217;t. While most of the end-users of any CMS are going to have at least basic computer knowledge, they&#8217;re probably not super tech savvy. While you might love a particular CMS and think it&#8217;s the best thing since solid-state hard drives, your clients might find it confusing, hard to use, and overly complicated. </p>
<p>The question I always ask myself when considering this is, &#8220;Could my mother use this?&#8221; My mother is your typical business computer user. She can do spreadsheets, word processing, and email, but she&#8217;s definitely not a techy. If I&#8217;m confident that I could easily explain a CMS to her and she&#8217;d then be able to use it with a minimum of later support, then I know it&#8217;s going to be appropriate for 90% of other likely users.</p>
<h5 class="title">7. It needs to include a WYSIWYG editor.</h5>
<p>WYSIWYG editors make life easier for your clients. Most clients don&#8217;t know HTML and don&#8217;t care to learn. But they want to be able to use bold or italic text or use header tags to create sections within their pages. A WYSIWYG editor makes that all possible for non-tech-savvy users.</p>
<h5 class="title">8. The pages it creates should be fast-loading and have simple code.</h5>
<p>One of the major advantages of a CMS is that it simplifies the updating and management of a website. So the pages it produces should also be simple. There shouldn&#8217;t be a lot of extra code or provisions for unused functionality in the final page code. All that serves to do is slow the load times for the page and increase the likelihood that something will render wrong or throw an error.</p>
<h5 class="title">9. The template engine should allow you complete creative control.</h5>
<p>Some CMSs have very set ideas about what a website should look like. There needs to be a sidebar for navigation. You shouldn&#8217;t use navigation dropdowns. The content has to be arranged in nice, neat columns. Who&#8217;s the designer here? Whatever CMS you choose should let you design pages the way you want and should work around your needs.</p>
<h5 class="title">10. The right CMS should have adequate support and documentation.</h5>
<p>In all likelihood, you&#8217;re going to run into some sort of problems with any CMS you choose. Whether this is caused by add-ons or in the course of customizing some bit of code, or whether the CMs is doing something unexpected, having somewhere you can turn to to get advice on how to fix the problem is invaluable. </p>
<p>This doesn&#8217;t necessarily have to be some expensive tech support phone number or other paid support. Sometimes you can get quicker and better responses from a user community. Does the CMS you&#8217;re considering have support forums frequented both by other users and by those involved in the project? Are there other, off-site forums dedicated to that particular CMS? The people who visit these forums can be a wealth of information for doing just about anything with your CMS of choice.</p>
<p>Thorough documentation for the CMS is also valuable. It should provide information on everything from basic use of the CMS to customizations and advanced functionality. In addition to being complete, it should also be easy to understand and accurate (which can be hard to determine until you actually delve into doing some of what it suggests).</p>
<h3 class="title">Ten Excellent CMS Options</h3>
<h4 class="title">1. <a href="http://wordpress.org">WordPress</a></h4>
<p>WordPress has morphed from a basic blogging platform into a fully-functioning CMS. WordPress&#8217; primary functionality is still blogging, though with plugins it&#8217;s capable of doing everything from brochure sites to portfolio and gallery sites to fully-featured ecommerce sites. For the most part, WordPress&#8217; backend is intuitive to use, with different functions laid out based on different sections of the site (appearance, posts, pages, etc.) The way things work in the backed, though, is very standardized and once you&#8217;re used to doing things in one section, it&#8217;s easy enough to figure them out in every other section. Likewise, it&#8217;s also well organized and finding where to perform different functions is very straight-forward in most cases. The WYSIWYG editor provides all the basic functions you could need, including inserting images, video, and other media, and makes it easy to toggle back and forth between HTML and Visual mode.</p>
<p class="img"><a href="http://php.opensourcecms.com/scripts/details.php?scriptid=88"><img src="http://noupe.com/img/cms/wordpress-backend.jpg" height="295" width="500" /></a></p>
<p>Because a lot of WP&#8217;s functionality comes from plugins, the basic platform is pretty simple, with support for pages, posts, and other standard content that will be used on the vast majority of sites. You only need to add plugins as you need their functionality, meaning there isn&#8217;t a whole lot of unused &#8220;stuff&#8221; in the core installation. WP is also simple enough to use for non-geeks (my mother has no problem with it and she&#8217;s running a complete ecommerce site with WP) and the different user permissions means it&#8217;s harder for users to break things (just limit their access to things like themes and plugins). </p>
<p>WP is also completely standards-compliant. The pages it creates are simple and quick-loading. Of course, some plugins create not-so-small pages, especially those that put JavaScript and CSS right into the page instead of in separate files. Just be aware of this when checking out plugins.</p>
<p class="img"><a href="http://wordpress.org/development/2008/10/the-visual-design-of-27/"><img src="http://noupe.com/img/cms/wordpressdashboard.jpg" height="631" width="500" /></a></p>
<p>WP really makes it possible to design pages however you see fit. From galleries to text-heavy sites and pretty much anything in between, WP can do it through the use of custom themes and page templates.</p>
<p>Where WP really shines, though, is in it&#8217;s documentation. The WordPress Codex is massive, covering everything from basic instructions for use to creating your own plugins and working with advanced features. WP also has active forums where you can generally find fixes for any problems you might encounter from other users.</p>
<h4 class="title">2. <a href="http://radiantcms.org/">Radiant CMS</a></h4>
<p>Radiant is built on Ruby on Rails. It&#8217;s really good at building basic sites with an unlimited number of pages. Blogging and gallery functionality can be added through extensions. The backend is simple and logically laid out, with pages, snippets, and layouts as the primary sections. Functions work pretty much the same no matter which section you&#8217;re in.</p>
<p class="img"><a href="http://radiantcms.org/"><img src="http://noupe.com/img/cms/radiantcms.jpg" height="401" width="500" /></a></p>
<p>Currently, Radiant is rather limited in its functionality, so it&#8217;s unlikely you&#8217;ll end up with any unneeded functions. Extensions can be built in Ruby On Rails, though, opening up huge possibilities for future functionality. The WYSIWYG editor is basic but allows users to perform all of the basic functions.</p>
<p>Radiant has an extremely easy-to-use backend. Basic functions like updating and add pages are really no more complicated than sending an email. This makes it a great solution for clients who aren&#8217;t at all tech-savvy. The code Radiant produces is simple and clean. </p>
<p class="img"><a href="http://radiantcms.org/"><img src="http://noupe.com/img/cms/radiantcms2.jpg" height="336" width="500" /></a></p>
<p>Pages can be built to look pretty much however you want based on a combination of snippets you create. There also appears to be an active developer community with extensive documentation for developers. End-user documentation is a bit light, but it&#8217;s such simple to use CMS that it&#8217;s not really a big issue.</p>
<h4 class="title">3. <a href="http://www.silverstripe.org">SilverStripe</a></h4>
<p>SilverStripe is a full-featured CMS that&#8217;s capable of just about anything you want it to do. It&#8217;s built in PHP on the Sapphire framework, making it more customizable. One of SilverStripe&#8217;s most interesting features is that designers can customize the backend for each of their clients, only showing content fields the clients actually need to access. This makes it potentially one of the easiest-to-use CMSs for geeks and non-geeks alike. And of course it includes a WYSIWYG editor.</p>
<p class="img"><a href="http://www.silverstripe.org"><img src="http://noupe.com/img/cms/silverstripeblog.jpg" height="338" width="500" /></a></p>
<p>SilverStripe is probably overkill for most very basic websites, but because of its ability to be customized, it&#8217;s appropriate for most other sites. SilverStripe also provides tons of great, free support, including documentation for both developers and end-users, forums and an IRC channel. SilverStripe makes a point to stay out of the HTML/CSS portion of your site, making it possible to design pages to look however you want. </p>
<h4 class="title">4. <a href="http://www.joomla.org">Joomla!</a></h4>
<p>Joomla is widely considered to be the most popular open-source CMS currently available. It runs on PHP and MySQL. The backend is relatively simple and straightforward, with sections for managing articles, the front page, menus, media, and other content. There&#8217;s also a link to create a new article to save time. Drop-down menus also give more options for those and other sections (including extensions). Joomla&#8217;s WYSIWYG editor includes tons of formatting options&mdash;even emoticons.</p>
<p class="img"><a href="http://linux.softpedia.com/progScreenshots/Joomla-Screenshot-5739.html"><img src="http://noupe.com/img/cms/Joomla_3.jpg" height="297" width="500" /></a></p>
<p>Joomla is pretty powerful, so it&#8217;s another CMS probably not well-suited to very simple sites, where it would have a lot of excess functionality. It includes a number of provisions to make pages load faster, including caching and GZIP page compression. Joomla also has a huge list of plugins available to extend its functionality, making it appropriate for just about any kind of site requiring advanced functionality.  One of the biggest drawbacks of Joomla, though, is it&#8217;s use of tables for layout. While there are workarounds to replace the tables with CSS, it might not be worth the effort considering how many other CMSs don&#8217;t use tables to begin with. </p>
<h4 class="title">5. <a href="http://www.typolight.org">TYPOlight</a></h4>
<p>TYPOlight uses PHP5 and Ajax and includes functionality for static pages, blogs, newsletters, and calendars, among other sections. The backend is intuitive while still offering a ton of functionality. There are shortcuts for doing everything from creating forms to including Flash content. Content is displayed within modules, which can be styled with CSS. The output is accessible XHTML Strict. It also offers mootools and GZip support. </p>
<p class="img"><a href="http://www.typolight.org"><img src="http://noupe.com/img/cms/typolighteditor.jpg" height="375" width="500" /></a></p>
<p>TYPOlight may be a bit overwhelming for those who aren&#8217;t at least a little bit tech-savvy. It&#8217;s not that it&#8217;s complicated; just that there&#8217;s a lot of options and a lot of different ways to customize it. It does include a complete WYSIWYG editor and other tools to make publishing content simple. The interface is intuitive if you take a minute to look over what&#8217;s there and everything is laid out logically. Again, it&#8217;s just that there&#8217;s a lot of information in there! </p>
<p class="img"><a href="http://www.typolight.org"><img src="http://noupe.com/img/cms/typolightpage_structure.jpg" height="375" width="500" /></a></p>
<p>TYPOlight does include some nice developer tools, including a built-in CSS generator and a form generator. There&#8217;s plenty of documentation on the site for both developers and end-users. There are screencasts, forums, and a wiki for support. There are also options for paid support through TYPOlight partners in case you (or your clients) really need advanced help.</p>
<h4 class="title">6. <a href="http://www.madebyfrog.com/">Frog</a></h4>
<p>Frog is basically a PHP-based version of Radiant CMS (mentioned above). Frog has a simplified UI that&#8217;s very intuitive. It allows for an unlimited hierarchy of pages and allows you to customize templates on a per-page basis. It includes the requisite WYSIWYG editor, simplified and more like WP&#8217;s than some of the more complex editors. It also features reusable snippets for regularly-used bits of content.</p>
<p class="img"><a href="http://www.madebyfrog.com/"><img src="http://noupe.com/img/cms/frog-pages.jpg" height="397" width="500" /></a></p>
<p>The backend provides a very coherent and well-organized structure that&#8217;s user-friendly while also being quite powerful. The basic functionality is aimed at a site with an unlimited number of pages, but there are plenty of plugins to extend that functionality. There are currently plugins for both admin functions and front-end improvements (including a number for image galleries). The code Frog creates is clean and semantic.</p>
<p class="img"><a href="http://www.madebyfrog.com/"><img src="http://noupe.com/img/cms/frog-page-edit.jpg" height="525" width="500" /></a></p>
<p>Frog has decent documentation, with plenty of how-to articles for both basic functions and development. There&#8217;s also an IRC channel to get answers to any questions you might have.</p>
<h4 class="title">7. <a href="http://textpattern.com/">Textpattern</a></h4>
<p>Textpattern uses a tabbed UI on the backend, which is surprisingly intuitive. It automatically brings you to the content editor to add a new page when you login, a great feature for sites that add new content regularly. The biggest drawback to Textpattern is its lack of a WYSIWYG editor. It does use <a href="http://textile.thresholdstate.com/">Textile</a>, though, for content editing, which is easy enough for a new user to learn.</p>
<p class="img"><a href="http://textpattern.com/"><img src="http://noupe.com/img/cms/textpattern_html_preview.jpg" height="398" width="500" /></a></p>
<p>The pages output by Textpattern are very lightweight and quick-loading, so no issues there. The thing I like most about Textpattern is that it feels like a real alternative type of CMS. The rest of the options out there are all, to some extent at least, kind of the same. The basic functionality of the CMS is very simple, without a ton of added features you&#8217;re unlikely to ever use. There&#8217;s support for images, categories, and articles, and not a whole lot else. But there are a ton of different plugins available to extend its functionality, including plugins for everything from media and gallery support to advanced navigation options and stats. There are even a couple of different ecommerce plugins available.</p>
<p class="img"><a href="http://textpattern.com/"><img src="http://noupe.com/img/cms/textpattern-links.jpg" height="344" width="500" /></a></p>
<p>There&#8217;s a large community built around Textpattern, so documentation and support are surprisingly good. There&#8217;s at least one book available, plus a support forum, developers&#8217; weblog, and TextBook (a community-powered user manual). </p>
<h4 class="title">8. <a href="http://expressionengine.com/">ExpressionEngine</a></h4>
<p>Expression Engine is one of the more powerful CMSs out there. EE has support for just about every function you could ever need or want, either in the core package or through plugins. The backend is very simple and intuitive (the first time I used it I was able to figure out the backend within a couple of minutes). It&#8217;s probably overkill for very basic websites, but appropriate for pretty much anything else. Modules are available for everything from statistics to user forums. The built-in WYSIWYG editor is pretty standard and works well. </p>
<p class="img"><a href="http://expressionengine.com/"><img src="http://noupe.com/img/cms/expressionengine.jpg" height="272" width="500" /></a></p>
<p>The pages created by EE are a bit bulkier than many of the other CMSs featured here, but still appear to be reasonably clean, with the exception of some JavaScript plugins. Some of the plugins available (or at least some of those used on sites powered by EE) either stick the JavaScript in the header of the page or, worse, right in the middle of the page&#8217;s code. But there have to be some tradeoffs when working with a CMS with this much built-in functionality.</p>
<p class="img"><a href="http://expressionengine.com/"><img src="http://noupe.com/img/cms/expressionengine2.jpg" height="272" width="500" /></a></p>
<p>EE&#8217;s biggest drawback is that, except in certain circumstances, it&#8217;s quite expensive. A personal license is $99.95 and a commercial license is $249.95. You can use the free Core Version, but only on personal, non-commercial or non-profit sites.</p>
<h4 class="title">9. <a href="http://drupal.org/">Drupal</a></h4>
<p>Drupal is another very powerful CMS that can be used for everything from corporate sites to ecommerce sites to social networking sites. The backend of Drupal is incredibly simple, with logically organized links to create new content, manage accounts, and edit existing content. One of Drupal&#8217;s nicest features is their &#8220;Book Page&#8221; content type. These pages can be grouped into collections, referred to as books, which are automatically linked together. This is a huge advantage if working with this kind of content. Drupal doesn&#8217;t have a WYSIWYG editor in the core installation, but there is a module to add the functionality. </p>
<p class="img"><a href="http://drupal.org/"><img src="http://noupe.com/img/cms/drupal1.jpg" height="353" width="500" /></a></p>
<p>The amount of functionality available in the backend is astounding, especially considering how easy it is to access it all. Drupal has tons of modules available, too, to add functionality beyond basic content management. There really are plugins to be able to do just about anything you could think of. The code output by Drupal is a bit more complex than some simpler CMSs, but still relatively semantic and easy to decipher. </p>
<p class="img"><a href="http://drupal.org/"><img src="http://noupe.com/img/cms/drupal2.jpg" height="353" width="500" /></a></p>
<p>Drupal has a huge user community with forums both on the main development site and elsewhere. There&#8217;s also extensive documentation for end-users and developers.</p>
<h4 class="title">10. <a href="http://www.cmsmadesimple.org/">CMS Made Simple</a></h4>
<p>When they say &#8220;Made Simple,&#8221; they really mean it. CMS Made Simple was the first CMS I ever used. I literally set up my first CMS-powered website in the course of a single evening (with a customized but out-of-the-box template). It includes complete template support, an incredibly easy-to-use backend, and an unlimited content hierarchy. There&#8217;s support for &#8220;global content blocks&#8221; (called snippets in a lot of other CMSs) and plenty of options for site layout. There&#8217;s also access to help files right from the backend, including the wiki, IRC and forums. This is another CMS with no built-in WYSIWYG editor, but there is a plugin to add that functionality. </p>
<p class="img"><a href="http://php.opensourcecms.com/scripts/details.php?scriptid=9"><img src="http://noupe.com/img/cms/cmsmadesimple.jpg" height="308" width="500" /></a></p>
<p>The pages output by CMS Made Simple are all XHTML and CSS compliant in addition to being clean and quick-loading. The core installation has all the basic content functionality you&#8217;d need, with plugins available to add most other functionality, with one exception: there doesn&#8217;t currently appear to be an ecommerce plugin for the platform. </p>
<p class="img"><a href="http://php.opensourcecms.com/scripts/details.php?scriptid=9"><img src="http://noupe.com/img/cms/cmsmadesimple2.jpg" height="320" width="500" /></a></p>
<p>There&#8217;s good documentation available for <a href="http://www.cmsmadesimple.org/">CMSMS</a>. There&#8217;s also extensive support options, including IRC and forums. </p>
<div class="author-box">
<div class="author-text">
<img height="80" width="80" class="author-photo" src="http://media.noupe.com//uploads/2009/05/cameronchapman-80x80.png" alt=""/>   </p>
<h4><strong>Author</strong>: <a href="http://cameronchapman.com">Cameron Chapman</a></h4>
<p>Cameron Chapman is a writer, blogger, copyeditor, and social media addict. She&#8217;s been designing for more than six years and writing her whole life. If you’d like to connect with her, you can follow her on <a href="http://twitter.com/cameron_chapman">Twitter</a> or at her <a href="http://cameronchapman.com/">Personal Website</a>.</p>
</p></div>
<div class="write-for-us"><strong class="red">Write for Us!</strong> We are looking for exciting and creative articles, if you want to contribute, just send us an <a href="mailto:info@noupe.com">email</a>.</div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.noupe.com/php/choosing-cms-tips.html/feed</wfw:commentRss>
		<slash:comments>306</slash:comments>
		</item>
	</channel>
</rss>

