<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>Train&#45;ee.com Free Tutorials</title>
    <link>http://www.train-ee.com/courseware/free-tutorials/</link>
    <description>Learn ExpressionEngine Fast with Free Tutorials from Train-ee.com</description>
    <dc:language>en</dc:language>
    <dc:creator>eeforme@train-ee.com</dc:creator>
    <dc:rights>Copyright 2010</dc:rights>
    <dc:date>2010-07-06T22:35:37+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>Translating EE 1 code to EE 2</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/translating-ee-1-code-to-ee-2/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/translating-ee-1-code-to-ee-2/#When:22:35:37Z</guid>
	<description>
		<![CDATA[
			<p>Hey - if you&#8217;re new to ExpressionEngine and are here on Train-ee.com looking for ExpressionEngine 2 tutorials - take heart.&nbsp; With a few minor tweaks any EE 1 template code will run just fine in EE 2.
</p> <p>Make no mistake - EE 2 is a significantly different product than EE 1.&nbsp; The main differences however are that EE 2 runs on <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.codeigniter.com">CodeIgniter</a> and the Control Panel is re-arranged and redesigned.&nbsp; While these changes have represented a significant amount of work for the EllisLab developers, they don&#8217;t change the fundamental approaches to building and implementing websites in ExpressionEngine.&nbsp; </p>

<p>If you are looking at some EE 1 template code - here on Train-ee or anywhere else - and want to use it in EE 2 just change the following (note again that this is EE template code and not plugin, extension or module code):</p>

<p><strong>Weblog to Channel</strong><br />
Where you used to code something like:
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;dynamic</span><span style="color: #007700">=</span><span style="color: #DD0000">"off"&nbsp;</span><span style="color: #0000BB">weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"news"&nbsp;</span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"trackbacks|pagination|member_data"&nbsp;</span><span style="color: #0000BB">sort</span><span style="color: #007700">=</span><span style="color: #DD0000">"asc"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;page_content&#125;&nbsp;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /><br />
Your first revision would be to replace weblog with channel:
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;dynamic</span><span style="color: #007700">=</span><span style="color: #DD0000">"off"&nbsp;</span><span style="color: #0000BB">channel</span><span style="color: #007700">=</span><span style="color: #DD0000">"news"&nbsp;</span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"trackbacks|pagination|member_data"&nbsp;</span><span style="color: #0000BB">sort</span><span style="color: #007700">=</span><span style="color: #DD0000">"asc"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;page_content&#125;&nbsp;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /></p>

<p><strong>Dynamic = &#8220;no&#8221;</strong><br />
In EE 2 the dynamic property is now yes/no vs. on/off.&nbsp; So you&#8217;d then change the above code to:
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;dynamic</span><span style="color: #007700">=</span><span style="color: #DD0000">"no"&nbsp;</span><span style="color: #0000BB">channel</span><span style="color: #007700">=</span><span style="color: #DD0000">"news"&nbsp;</span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"trackbacks|pagination|member_data"&nbsp;</span><span style="color: #0000BB">sort</span><span style="color: #007700">=</span><span style="color: #DD0000">"asc"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;page_content&#125;&nbsp;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /></p>

<p><strong>Trackbacks Gone</strong><br />
EE 2 doesn&#8217;t have trackbacks - so there is no need to disable them.&nbsp; The updated code would be:
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;dynamic</span><span style="color: #007700">=</span><span style="color: #DD0000">"no"&nbsp;</span><span style="color: #0000BB">channel</span><span style="color: #007700">=</span><span style="color: #DD0000">"news"&nbsp;</span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"pagination|member_data"&nbsp;</span><span style="color: #0000BB">sort</span><span style="color: #007700">=</span><span style="color: #DD0000">"asc"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h3</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;page_content&#125;&nbsp;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /></p>

<p><strong>assign_variable Is Now preload_replace</strong><br />
If the code uses the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fglobals%2Fassign_variable.html">assign_variable</a> approach to building template-level variables those have been renamed to <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fglobals%2Fpreload_replacement.html">preload_replace</a>.</p>

<p>So any EE 1 code like:</p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;assign_variable</span><span style="color: #007700">:</span><span style="color: #0000BB">weblogs</span><span style="color: #007700">=</span><span style="color: #DD0000">"news|reviews"</span><span style="color: #0000BB">&#125;<br />&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;weblogs&#125;"&nbsp;</span><span style="color: #0000BB">limit</span><span style="color: #007700">=</span><span style="color: #DD0000">"10"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h2</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h2</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;body&#125;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /></p>

<p>Would be re-written as:
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;preload_replace</span><span style="color: #007700">:</span><span style="color: #0000BB">channels</span><span style="color: #007700">=</span><span style="color: #DD0000">"news|reviews"</span><span style="color: #0000BB">&#125;<br />&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&nbsp;channel</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;channels&#125;"&nbsp;</span><span style="color: #0000BB">limit</span><span style="color: #007700">=</span><span style="color: #DD0000">"10"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">h2</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;title&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">h2</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;body&#125;<br />&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">channel</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;&nbsp;</span>
</span>
</code></div><p>
<br /></p>

<p><strong>dynamic_start=&#8220;yes&#8221;</strong><br />
<a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3Duser_guide%2Fmodules%2Fchannel%2Fparameters.html%23par_dynamic_start">dynamic_start=</a> is most commonly used in RSS templates, and (like the closely-named <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3Duser_guide%2Fmodules%2Fchannel%2Fparameters.html%23par_dynamic">dynamic parameter</a> mentioned above) has also changed from &#8220;on|off&#8221; in EE 1 to &#8220;yes|no&#8221; in EE 2.</p>

<p>Those few changes are all that&#8217;s really needed to change most EE 1 code to work in EE 2.&nbsp; If you run across other versioning-related code changes need please let me know via the comments here.</p>

<p>As EE 1 is <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3Dblog%2Fentry%2Fthe_end_of_beta_is_near_what_you_need_to_know%2F">slated for retirement</a> once EE 2 is released  will be working through the content here on Train-ee to update it to EE 2 code where it makes sense to do so.
</p>
		]]>
	</description>       

      <dc:subject>Other</dc:subject>
      <dc:date>2010-07-06T22:35:37+00:00</dc:date>
    </item>

    <item>
      <title>Boyinks4Adventure &#45; Pretrip Blog</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-pretrip-blog/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-pretrip-blog/#When:14:08:31Z</guid>
	<description>
		<![CDATA[
			<p>I&#8217;ve already posted the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.train-ee.com%2Fcourseware%2Ffree-tutorials%2Fcomments%2Fboyinks4adventure-blog-archives%2F">Archives Template</a> for the Pre-trip Blog - here are the rest of the EE templates that round out the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2Fpre-trip%2F">Pre-trip blog on Boyinks4Adventure.com</a>.
</p> <p>My main goal for this section was to keep the URLs clean - with no /comments/ segment in the single-entry view.&nbsp; As with anything in <a href="http://www.expressionengine.com/index.php?affiliate=boyink">ExpressionEngine</a> there are a couple of ways to go about the development.</p>

<p>I chose to use the pre-trip/index template as a controller template.&nbsp; All it does is read the URL and embed in the full-page template required to display content indicated in the URL:</p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">md_detect_page_type&nbsp;url_segment</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;segment_2&#125;"</span><span style="color: #0000BB">&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;</span><span style="color: #007700">!--&nbsp;</span><span style="color: #0000BB">Loads&nbsp;the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">index&nbsp;view&nbsp;</span><span style="color: #007700">--</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;if&nbsp;segment_2&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;</span><span style="color: #007700">!--&nbsp;</span><span style="color: #0000BB">Load&nbsp;the&nbsp;weblog&nbsp;multi</span><span style="color: #007700">-</span><span style="color: #0000BB">entry</span><span style="color: #007700">/</span><span style="color: #0000BB">index&nbsp;view&nbsp;</span><span style="color: #007700">--</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"pre-trip/multi-entry"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">if&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;</span><span style="color: #007700">!--&nbsp;if&nbsp;</span><span style="color: #0000BB">something&nbsp;</span><span style="color: #007700">else&nbsp;</span><span style="color: #0000BB">in&nbsp;the&nbsp;URL&nbsp;</span><span style="color: #007700">use&nbsp;</span><span style="color: #0000BB">Masugas&nbsp;plugin&nbsp;to&nbsp;decide&nbsp;what&nbsp;to&nbsp;present&nbsp;</span><span style="color: #007700">--</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;if&nbsp;segment_2&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;if&nbsp;pagination_page&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">yearly_archive_page&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"pre-trip/multi-entry"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;if</span><span style="color: #007700">:elseif&nbsp;</span><span style="color: #0000BB">category_page&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"pre-trip/multi-entry"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;if</span><span style="color: #007700">:</span><span style="color: #0000BB">else&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;</span><span style="color: #007700">!--&nbsp;If&nbsp;</span><span style="color: #0000BB">not&nbsp;category</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">archive&nbsp;</span><span style="color: #007700">or&nbsp;</span><span style="color: #0000BB">pagination&nbsp;page&nbsp;it&nbsp;must&nbsp;be&nbsp;a&nbsp;single&nbsp;entry</span><span style="color: #007700">--</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"pre-trip/single-entry&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;/if&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;/if&#125;<br /><br />&#123;/exp:md_detect_page_type&#125;&nbsp;</span>
</span>
</code></div>

<p>The trick in this template is to use the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fforums%2Fviewthread%2F92307">MD Detect Page Type</a> plugin from Ryan Masuga.&nbsp; It eases the pain of accommodating the different URL structures that you&#8217;ll encounter working with blogs - including category urls and paginated urls.</p>

<p>Note that there is no logic here to accomodate the archives template (which is stored in the same Pre-trip template group).&nbsp; When EE encounters the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2Fpre-trip%2Farchives%2F">http://boyinks4adventure.com/pre-trip/archives/</a> URL it looks first for a template named /archives/ before falling back to the index template.&nbsp; Since /archives/ exists it gets loaded and this index template isn&#8217;t entered.&nbsp; This is good to know for when you have unique templates within a template group that need to function alongside an index template with more logic in it like this one.</p>

<p>From there the multi-entry and single-entry templates are relatively straightforward with a couple of notes:</p>

<ul>
<li>Boyinks4Adventure.com and Boyink.com are both running off a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdownloads%2Fdetails%2Fmultiple_site_manager%2F">Multiple Site Manager</a> installation, and the Pre-trip content actually lives in the Boyink.com site (as we started posting before I had the adventure site built).</li>
<li>I have a new &#8220;Our Travels&#8221; section to put live once we actually start moving on our trip - so some of the sidebar elements are coded to be reusable  by passing site and blog names as <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fembedding_templates.html">Embed Variables for Embedded Templates</a></li>
</ul>

<p>So - grab the code, pull it apart, destroy, rebuild, improve!
</p>
		]]>
	</description>       

      <dc:subject>Template Examples</dc:subject>
      <dc:date>2010-06-23T14:08:31+00:00</dc:date>
    </item>

    <item>
      <title>Boyinks4Adventure &#45; Blog Archives</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-blog-archives/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-blog-archives/#When:13:27:25Z</guid>
	<description>
		<![CDATA[
			<p>Blog archives are typically pretty straightforward affairs - but in this case I was using a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.woothemes.com%2Fdemo%2F%3Fname%3Dpostcard">WooTheme</a> for the site that was written for WordPress.&nbsp; The page has a few features that aren&#8217;t straight out of the box with <a href="http://www.expressionengine.com/index.php?affiliate=boyink">ExpressionEngine</a>, so I wanted to see how hard it would be to replicate them.
</p> <p><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2Fpre-trip%2Farchives%2F">Here is my finished product</a> - you can see that I was able to re-create the main page functionality.&nbsp; This was mostly straightforward with general-purpose EE tags, with the exception of a couple things. I&#8217;ve provided a text version of the template - open that and let&#8217;s work through the page:</p>

<p><strong>The Last 30 Posts</strong><br />
This is an easy one - just a weblog:entries loop with a limit of 30.</p>

<p><strong>Categories</strong><br />
EE has a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Fmodules%2Fweblog%2Fcategories.html">Weblog Categories</a> tag that will return category links for the specified weblog - but what EE doesn&#8217;t provide is a native way to get the count of entries in each category.&nbsp; There are a few ways to do this - like you could write a custom query using the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Fmodules%2Fquery%2Findex.html">Query Module</a>.&nbsp; I chose to use a 3rd party plugin called <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fforums%2Fviewthread%2F82484">Entries Number</a> by the somewhat mythical Laisvunas (almost 50 addons listed for EE!).&nbsp; I wrapped &#123;exp:entries_number&#125; tags with &#123;exp:weblog:categories&#125; tags so I could feed entries_number the category_id and get it to return the count.</p>

<p><strong>Monthly Archives</strong><br />
Same story here - EE has a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3Ddocs%2Fmodules%2Fweblog%2Farchive_month_links.html">Monthly Archives</a> tag - but it doesn&#8217;t return a count.&nbsp; In this case I did chose to do a custom query that uses the year and month values provided by the native month_links EE tag pair.</p>

<p>So with a quick custom query, a plugin, and some native tags - I was able to replicate the provided design in pretty short order.
</p>
		]]>
	</description>       

      <dc:subject>Template Examples</dc:subject>
      <dc:date>2010-06-22T13:27:25+00:00</dc:date>
    </item>

    <item>
      <title>Greenview Church</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/greenview-church/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/greenview-church/#When:23:04:43Z</guid>
	<description>
		<![CDATA[
			<p>Thanks to <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.digitalevangelist.net">Steven Grant</a> this is more than just one example template - rather Steven has provided 46 templates that drive most of the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.greenviewevangelicalchurch.co.uk">Greenview Evangelical Church</a> site!</p>

<p>Steven writes:</p>

 <p>Our church site was my first real implementation with EE. I&#8217;d looked at a few CMS like WordPress, ModX, Joomla, Drupal and .net based Umbraco.</p>

<p>If I don&#8217;t pick things up quickly then I tend to get quite frustrated and, being honest, give up too easily. However, EE just made sense pretty much as soon as I&#8217;d looked at the video tutorials as well as stumbling very quickly on the excellent resources Mike has here on Train EE.</p>

<p>So into the templates themselves.</p>

<p>One of the biggest things I like about EE is global variables and embeds, typically I only have a few user defined global variables like {html_begin} and {html_end} that contain the opening html and head tags as and the closing body and html tag.</p>

<p>Depending on the project I may use other global variables as well but these are my standard ones.</p>

<p><b><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.greenviewevangelicalchurch.co.uk%2F">Home</a> Template Group</b></p>

<p>This group contains only 1 template and within makes use of a few embedded templates. My mast head is embedded in all of the templates, after that I&#8217;ve then embedded our jQuery slideshow. I took this approach as I found it easier to debug the slider as a standalone template and not have to worry about everything else round about it. It also means that I can reuse that slideshow elsewhere if I so desire.</p>

<p>I&#8217;ve then used some basic if conditionals to offer a little bit of personalisation for logged in users of the site. If one of our editors needed to edit the intro text on a regular basis then I&#8217;d probably use something like Low Variables - as it is, we don&#8217;t need it. Of course the other alternative (as I&#8217;ve done on some sites) is to have that text contained within a weblog but that&#8217;s probably overkill to have a weblog/channel for 1 piece of text. Of course you could have it as a global variable as well but then you&#8217;d need to open the templates for users who may not be a developer.</p>

<p>I then have 4 content divs that pull content from 3 weblogs, one to pull sermon links, one for service information and the other to pull the next 5 events over the next 7 days (this uses the Solspace Calendar addon). In our last column is our church motto and again I could have use a global variable but I&#8217;ve just used plain ol&#8217; html.</p>

<p><b><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fgreenviewevangelicalchurch.co.uk%2Fabout%2Fbeliefs%2F">About</a> Template Group</b></p>

<p>The layout of this template is common throughout the site, it&#8217;s fairly standard in its functionality but has some wee tweaks where required. The page for elder information uses an if conditional for the segment variable that will display elder profiles from another weblog if the user is on that page.</p>

<p>I&#8217;ve made use of the excellent Gyspy addon for common field groups of related documents &amp; websites.</p>

<p>As I mentioned, this layout is particularly common throughout the site and I&#8217;ve used another embedded template that pulls in the latest sermons, blog posts and links to the main site RSS feeds</p>

<p><b><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fgreenviewevangelicalchurch.co.uk%2Factivities%2F">Activities</a> Template Group</b></p>

<p>This is where I discovered one of my favourite EE bits of code on the index page of this group&#8230;the switch parameter being able to change the class on an entry on a bespoke CMS used to take me ages, the switch parameter did away with that for me.</p>

<p><b><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fgreenviewevangelicalchurch.co.uk%2Fresources%2F">Resources</a> Template Group</b></p>

<p>This group is probably the most intense because of the content.</p>

<p>The index template is just static html that won&#8217;t change, again, if regular updates were needed, I&#8217;d use the Low Variables addon.</p>

<p>I could probably refine my audio section into 1 template for single, multiple, archive and category pages rather than 3 individual templates I have presently. I only realised the true power of conditional segments when I started building a bug tracker in ExpressionEngine. The same could be said of the blog in this template group.</p>

<p>Looking at the audio template, it uses the FLV addon to create a nice little Flash based audio player. I was concerned about the accessibility of the Flash player, especially for those iPhone (and now iPad) users and so gave the option to download the mp3 file directly.</p>

<p>I&#8217;ve also used the Pagination Style addon to make the pagination that wee bit nicer, the only downside is that you need to make a few line changes to one of the core EE files but it works like a dream.</p>

<p>The only other thing within that template is the comment submission form and comment entries tag that allows people to comment on the sermon (these undergo approval before they go live).</p>

<p>I&#8217;ll touch on the nav for this template group as well as it&#8217;s pretty mammoth. It uses a series of if segment conditionals to spit out an unordered list. I have to say this was particularly confusing for me making sure my closing ifs were in the right place to keep my lovely css tree directory. Again, this could have been simplified if I had opted to use 1 template file for audio, rather than several.</p>

<p><b><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fgreenviewevangelicalchurch.co.uk%2Fcalendar%2F">Calendar</a> Template Group</b></p>

<p>I&#8217;m still working my way around this as it&#8217;s a new addition to the site. One of the biggest hurdles we faced from the off was events, repeating events, multi-day events etc. from within EE. I did use the default calendar option until Solspace released this addon. It makes it incredibly easy now to set repeating events (without having to clone an entry) whilst adding easy exclusion/inclusion dates.</p>

<p>The code for the templates here isn&#8217;t a kick in pants off the default examples provided by Solspace. A word of warning though if you are going to use this addon, I have noticed some errors in the example code where it won&#8217;t return events. With their excellent forum help though we&#8217;ve worked around them. There are known issues with some events not outputting to ICS properly but I&#8217;m sure these will get ironed out.</p>

<p><b>To Conclude</b></p>

<p>I&#8217;ve learned a lot since this first implementation and with a redesign later this year, I&#8217;ll probably do things in a different way, particularly using segment conditionals to minimise the number of templates within my groups.</p>

<p>There&#8217;s probably quite a few things that more experienced EE devs could do to improve but hopefully some of my templates will help newbies.</p>

<p>Any comments, questions or suggestions are more than welcome.</p>

<p>Thanks,<br />
Steven Grant<br />
<a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.digitalevangelist.net">http://www.digitalevangelist.net</a><br />
<a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Ftwitter.com%2Fstevieg_83">http://twitter.com/stevieg_83</a>
</p>
		]]>
	</description>       

      <dc:subject>Template Examples</dc:subject>
      <dc:date>2010-06-09T23:04:43+00:00</dc:date>
    </item>

    <item>
      <title>Boyinks4Adventure &#45; The RV</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-the-rv/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure-the-rv/#When:13:20:23Z</guid>
	<description>
		<![CDATA[
			<p>This template handles the index and single-entry views for <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2Fthe-rv%2F">The RV</a> in on the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2F">Boyinks4Adventure.com</a> site.&nbsp; The single entry-views feature the ability to have multiple photos and/or multiple videos, presented in a tabbed area with grammatically-correct labels.
</p> <p>This template has a fair amount of things going on:
</p><ul>
<li>It uses <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3Ddocs%2Ftemplates%2Fglobals%2Furl_segments.html">Segment Variables</a> and <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fglobals%2Fconditionals.html">Conditionals</a> to handle presenting both the index view and single-entry views.</li>
<li>To build the index view the template uses a couple of third-party plugins - <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.lumis.com%2Fpage%2Fimgsizer%2F">Image Sizer</a> from David Lumis and the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fdownloads%2Fdetails%2Fword_limit_plus%2F">Word Limit Plus</a>. These plugins created abbreviated/smaller versions of the content for use on the index template.</li>
<li>The single-entry views may possible contain one or more photos, and/or one or more videos.&nbsp; From an HTML perspective these are put into a tabbed area below the main content.&nbsp; The template has logic in it to both create grammatically correct tabs (&#8220;Photo&#8221; vs. &#8220;Photos&#8221; based on the number of photos in the entry, for example), and set the active tab based on what content is present.</li>
<li>On the backend the photos and videos are stored in the entry using <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fpixelandtonic.com%2Fmatrix">Matrix</a> from Brandon Kelly.&nbsp; Photos are uploaded using the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.ngenworks.com%2Fsoftware%2Fee%2Fngen-file-field%2F">nGen FIle Upload</a> fieldtype for Matrix.</li>
<li>Videos are presented using the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2F5pieces.com%2Faddons%2Fflv-media-player%2F">FLV Media Player</a> from John Henry Donovan. The template logic chooses between a single-video player or a multi-video player based on the number of videos placed in the entry</li>
<li>The playlist for the multi-entry player is created by an XML template that&#8217;s also included in the zip file.</li>
</ul>

<p>This template has a lot going on behind the scenes - but I&#8217;m quite pleased with what it does.&nbsp; I get nice clean URL&#8217;s and the ability to have text, photos, and videos all in one entry with rendered page adapting itself well to what&#8217;s been stored in the content.
</p>
		]]>
	</description>       

      <dc:subject>Template Examples</dc:subject>
      <dc:date>2010-06-08T13:20:23+00:00</dc:date>
    </item>

    <item>
      <title>Boyinks4Adventure.com &#45; About</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure.com-about/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/boyinks4adventure.com-about/#When:19:50:15Z</guid>
	<description>
		<![CDATA[
			<p>This code handles both the index and single-entry views for the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com%2Fabout%2F">About Section</a> on <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyinks4adventure.com">Boyinks4Adventure</a>.&nbsp; 
</p> <p>Overall this is a pretty straightforward example of a one EE template that uses <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fglobals%2Furl_segments.html">Segment Variables</a> and <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fglobals%2Fconditionals.html">conditionals</a> to function as two templates.&nbsp; </p>

<p>The first view is the index view, or what you get when you just click the &#8220;About&#8221; link in the main navigation.&nbsp; To build these abbreviated versions of the single entries the template uses a couple of third-party plugins - <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.lumis.com%2Fpage%2Fimgsizer%2F">Image Sizer</a> from David Lumis and the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fdownloads%2Fdetails%2Fword_limit_plus%2F">Word Limit Plus</a>.</p>

<p>The second type of view is what you get when you navigate deeper in the content and choose a single entry.&nbsp; This template is again loaded but since there will now be a value in the segment_2 position different parts of the template are rendered.&nbsp; The Image Sizer plugin is again used to prevent the often-forgetful client from uploading an image that&#8217;s too big.</p>

<p>I had two reasons for choosing this coding approach:</p>

<p>1 - I didn&#8217;t really have unique content for the index page.<br />
2 - I wanted clean URLs for my single-entry pages.</p>

<p>Combining both multi and single entry logic into one template worked for me in this case.</p>

<p>Take a look - and steal whatever you need to steal to accomplish any similar requirements you have with your projects.</p>



<p>&nbsp;</p>
		]]>
	</description>       

      <dc:subject>Template Examples</dc:subject>
      <dc:date>2010-06-07T19:50:15+00:00</dc:date>
    </item>

    <item>
      <title>Client Handoff Resources</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/client-handoff-resources/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/client-handoff-resources/#When:20:02:25Z</guid>
	<description>
		<![CDATA[
			<p>At the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.eeci2010.com">ExpressionEngine and CodeIgniter Conference</a> of 2010 in San Francisco I gave a talk around how to successfully transition an <a href="http://www.expressionengine.com/index.php?affiliate=boyink">ExpressionEngine</a> project to the client.&nbsp; Here&#8217;s a list of resources mentioned during that talk.
</p> <p>Note that when I started putting this presentation together I was seeing the client handoff as - ideally at least - a moment in time.&nbsp; You develop the site, meet the client requirements, hand it over, and they pick up from there.</p>

<p>What I realized is that never really happens - as the developer you will always retain some amount of ownership in the site.&nbsp; There&#8217;s a good chance that you will re-visit it in the future to make tweaks, add functionality, or modify the design.&nbsp; </p>

<p>So this presentation became less about that &#8220;moment in time&#8221; handoff and more about setting your future-self up well for easy re-entry back into the site down the road.</p>

<p><br />
<b>Avoid Junk</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyink.com%2Fwrite%2Fpotential-client-red-flags%2F">Boyink.com: Potential Client Red Flags</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fboyink.com%2Fwrite%2Fpotential-client-red-flags-part-2%2F">Boyink.com: Potential Client Red Flags Pt. 2</a></li>
</ul>

<p><b>Contract</b><br />
Just Do it.</p>

<p><b>Hosting</b>
</p><ul>
<li>Choose a good &#8216;un</li>
<li>Good support?</li>
<li>Fast support?</li>
<li>PHP5?</li>
<li>Many clients will blame you for hosting issues</li>
</ul>

<p><br />
<b>Architect Well</b>
</p><ul>
<li>Model the content well</li>
<li>Don&#8217;t think in terms of pages</li>
<li>Choose the simplest structure possible</li>
<li>Learn EE&#8217;s strengths before using add-ons.</li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.train-ee.com%2Fcourseware%2Fscreencasts%2Fdetail%2Fdesigning-an-expressionengine-architecture%2F">Train-ee Screencast: Designing an EE Architecture</a></li>
</ul>

<p><b>Choose (Add-ons) Wisely</b>
</p><ul>
<li>Favor established developers</li>
<li>Make sure they have established and active support channels</li>
<li>Favor more popular addons</li>
<li>Don&#8217;t use dump -n- run code</li>
<li>No docs?&nbsp; No way</li>
</ul>

<p><b>Consider Prototyping</b>
</p><ul>
<li>Build quick examples and let client see them</li>
<li>Relationships vs. categories</li>
<li>Weblogs vs. categories</li>
<li>Different/similar 3rd party tools</li>
<li>Client input now = easier later</li>
</ul>

<p><b>Name Carefully</b>
</p><ul>
<li>snp_snippet and gv_global_variable</li>
<li>weblog_field_name for fields?</li>
<li>These names can become part of client&#8217;s lexicon</li>
<li>More important the more devs involved</li>
</ul>

<p><b>Document</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Ftemplates%2Fcommenting.html">Commenting EE Template Code</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fdesign%2Ftemplates%2Fedit_template.html">Template Notes</a></li>
<li>Pretend it&#8217;s you 5 years from now</li>
</ul>

<p><b>Expect Traffic</b>
</p><ul><li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fmodules%2Fchannel%2Fparameters.html%23par_disable">Disable Parameter for Channel Entries</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Ftemplates%2Fglobals%2Fconditionals.html">Simple vs. Advanced Conditionals</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Ftemplates%2Fglobals%2Fsnippets.html">Favor Snippets</a></li>
<li>Don&#8217;t chunk separately if you won&#8217;t ever use code separately.</li>
<li>If using MSM specify site variable</li>
<li>Favor sorts using native fields vs. custom fields (native fields more likely to be indexed at the db level).</li>
<li>Learn the rules but use a/b testing to make final decisions.</li>
</ul>

<p><b>Add Details</b>
</p><ul><li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fwiki%2FEdit_Link_With_Entries%2F">Edit This link for Entries</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fdevot-ee.com%2Fadd-ons%2Fcustom-system-messages%2F">Style System Messages</a></li>
<li>Copyright date dynamic?&nbsp; Or not? </li>
</ul>

<p><br />
<b>301s &amp; 404s</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fdesign%2Ftemplates%2Fglobal_template_preferences.html">Strict URLs</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fmodules%2Fchannel%2Fparameters.html%23par_req_entry">Require Entry Parameter for Channel:Entries tag</a></li>
<li>Erik Reagan&#8217;s <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Ferikreagan.com%2Fprojects%2Fredirect-helper-lite%2F">Redirect Helper Lite</a>
</ul>

<p>htaccess (assuming you have a site template group with a template named 404):
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">ErrorDocument&nbsp;404&nbsp;</span><span style="color: #007700">/</span><span style="color: #0000BB">index</span><span style="color: #007700">.</span><span style="color: #0000BB">php</span><span style="color: #007700">/</span><span style="color: #0000BB">site</span><span style="color: #007700">/</span><span style="color: #0000BB">404</span><span style="color: #007700">/<br /></span><span style="color: #0000BB">ErrorDocument&nbsp;500&nbsp;</span><span style="color: #007700">/</span><span style="color: #0000BB">index</span><span style="color: #007700">.</span><span style="color: #0000BB">php</span><span style="color: #007700">/</span><span style="color: #0000BB">site</span><span style="color: #007700">/</span><span style="color: #0000BB">404</span><span style="color: #007700">/<br /></span><span style="color: #0000BB">ErrorDocument&nbsp;403&nbsp;</span><span style="color: #007700">/</span><span style="color: #0000BB">index</span><span style="color: #007700">.</span><span style="color: #0000BB">php</span><span style="color: #007700">/</span><span style="color: #0000BB">site</span><span style="color: #007700">/</span><span style="color: #0000BB">404</span><span style="color: #007700">/&nbsp;</span>
</span>
</code></div>

<p><b>Comments</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fgeneral%2Fspam_protection.html">Spam Prevention</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fdesign%2Fmessage_pages%2Findex.html%23email_notification_templates">User Comment Notification Email Template</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.train-ee.com%2Fcourseware%2Ffree-tutorials%2Fcomments%2Fapprove-link-for-comments%2F">Approve Link for Comments</a></li>
</ul>

<p><b>URL Finessing</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fwiki%2FRemove_index.php_From_URLs%2F">Removing index.php from URLs</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fdevot-ee.com%2Fadd-ons%2Fshrimp%2F">Shrimp</a> (v 1.6x)</li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fdevot-ee.com%2Fadd-ons%2Fee-shortener%2F">EE Shortener</a> (v 1.6x)</li>
</ul>

<p><b>Correct Email Addresses</b>
</p><ul>
<li>Webmaster email address</li>
<li>Contact forms</li>
</ul>

<p><b>Performance Tuning</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fgeneral%2Fcaching.html">Data Caching and Performance</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.solspace.com%2Fdownloads%2FPerformanceGuidelines.pdf">Paul Burdick&#8217;s Performance Guidelines</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fadmin%2Fsystem_admin%2Foutput_and_debugging_preferences.html">gZip Output</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fadmin%2Fsystem_admin%2Ftracking_preferences.html">Tracking Preferences</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Ftools%2Fdata%2Fsql_manager.html">Optimize Tables</a></li>
</ul>

<p><b>Clean House</b>
</p><ul>
<li>Get rid of unused stuff</li>
</ul>

<p><br />
<b>Create Client Logins</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fadmin%2Fcontent_admin%2Ffile_upload_preferences.html">File Upload Preferences</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fadmin%2Fcontent_admin%2Fcustom_entry_statuses.html">Custom Entry Statuses</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fadmin%2Fcontent_admin%2Fcategory_management.html">Category Management</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fcontent%2Fpublish_page_layouts.html">Publish Page Layouts</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fwiki%2FMultiple_Domain_Login%2F">Multiple Domain Login</a></li>
<li>&#8220;Emergency&#8221; Super Admin Login for Client</li>
</ul>

<p><b>End User Training</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Faccessory_generator%2F">EllisLab Accessory Generator</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Ferikreagan.com%2Fprojects%2Ftrain-ee-client-handoff%2F">New Accessory Template</a></li></ul>

<p><b>Member Profile Trigger</b>
</p><ul><li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fpublic_beta%2Fdocs%2Fcp%2Fmembers%2Fmembership_preferences.html">Trigger Word</a></li></ul>

<p><b>Celebrate!</b><br />
Just do it.</p>

<p><b>Support 3rd Party Developers</b><br />
Did they make your life easier?&nbsp; Throw $20 their way.&nbsp; </p>

<p><b>SEO</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fdevot-ee.com%2Fadd-ons%2Fcp-analytics%2F">Google Analytics Accessory for EE 2</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.putyourlightson.net%2Fprojects%2Fsitemap">Commericial Sitemap Module</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fleevigraham.com%2Fcms-customisation%2Fexpressionengine%2Flg-better-meta%2F">LG Better Meta</a></li>
<li>Post a link from your site</li>
<li>Enroll client in Google local business search if appropriate</li>
</ul>

<p><b>Backup Strategy</b>
</p><ul>
<li>Consider adding depth to backups over and above what host does.&nbsp; </li>
<li>Possible recurring revenue.</li>
</ul>

<p><b>License</b>
</p><ul>
<li>If you bought it for client make sure it gets transferred to them</li>
<li>Same with hosting account</li>
<li>Process for ensuring licenses get renewed?</li>
</ul>

<p><b>Formal Signoff</b>
</p><ul>
<li>Goes with contract</li>
<li>Stake in the ground to ensure that all subsequent work is new &amp; billable</li>
</ul>

<p><b>Testimonial</b><br />
Get it now while client is experiencing that post-launch and post-purchase euphoria.</p>

<p><b>Update Portfolio</b><br />
Do it now while you are still fresh with the project.</p>

<p><b>Schedule Checkup</b><br />
6-8 weeks out to see if any questions/issues/changes/new work needed.</p>

<p><b>Reflect</b>
</p><ul>
<li>Did project go well?</li>
<li>If not, what could you do better?</li>
<li>If yes, can you repeat it?</li>
<li>Work with same type of client again?</li>
<li>Leverage anything you did/learned to find new clients?</li>
<li>Meet or work with any new people that you should follow up with? </li>
</ul>

<p><br />
<b>Other Resources</b>
</p><ul>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2F5by5.tv%2Feepodcast%2F15">EE Podcast #15 - Preparing for Client Handoff</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Feeinsider.com%2Fvideos%2Fshow%2Fpreparing-sites-for-clients%2F">EE Screencasts: Preparing Sites for Clients</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.train-ee.com%2Fcourseware%2Fscreencasts%2Fdetail%2Fprepping-an-ee-site-for-client-access%2F">Train-ee Screencast: Prepping a EE Site for Client Access</a></li>
</ul>

<p><strong>Fellow EE&#8217;rs that I Need to Thank:</strong>
</p><ul><li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fcode72.com%2F">John Knotts</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Floracsdesign.com%2F">Paula McIntyre</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fjoviawebstudio.com%2F">Ryan Battles</a></li>
<li>Todd Daubs</li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.tonygeer.com%2F">Tony Geer</a></li>
<li><a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Ferikreagan.com%2F">Erik Reagan</a></li>
</ul>
		]]>
	</description>       

      <dc:subject>The Business Side</dc:subject>
      <dc:date>2010-05-18T20:02:25+00:00</dc:date>
    </item>

    <item>
      <title>Reorganized Date Formatting Options</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/reorganized-date-formatting-options/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/reorganized-date-formatting-options/#When:15:51:03Z</guid>
	<description>
		<![CDATA[
			<p>I posted a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fexpressionengine.com%2Fforums%2Fviewthread%2F136185%2F">Feature Request</a> for this to be changed in the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.expressionengine.com%2Findex.php%3Faffiliate%3Dboyink%26page%3D%2Fdocs%2Ftemplates%2Fdate_variable_formatting.html">EE Docs</a>, but I know the EE folks are busy so I&#8217;m posting a version of the EE date formatting options, reorganized by output rather than alphabetically by letter.
</p> <p><strong>Seconds:</strong>
</p><ul><li>%s - seconds (“00” to “59”)</li>
<li>%U - seconds since the epoch</li></ul>

<p><br />
<strong>Minutes:</strong>
</p><ul>
<li>%i - minutes (“00” to “59”)</li>
</ul>

<p><br />
<strong>Hours:</strong>
</p><ul><li>%g - hour, 12-hour format without leading zeros (“1” to “12”)</li>
<li>%G - hour, 24-hour format without leading zeros (“0” to “23”)</li>
<li>%h - hour, 12-hour format (“01” to “12”)</li>
<li>%H - hour, 24-hour format (“00” to “23”)</li>
</ul>

<p><br />
<strong>AM/PM:</strong>
</p><ul><li>%a - “am” or “pm”</li>
<li>%A - “AM” or “PM”</li></ul>

<p><br />
<strong>Day</strong>:
</p><ul>
<li>%d - day of the month, 2 digits with leading zeros (“01” to “31”)</li>
<li>%D - day of the week, textual, 3 letters (“Fri”)</li>
<li>%j - day of the month without leading zeros (&#8220;1&#8221; to &#8220;31&#8221;)</li>
<li>%l (lowercase &#8216;L&#8217;) - day of the week, textual, long (&#8220;Friday&#8221;)</li>
<li>%w - day of the week, numeric - &#8220;0&#8221; (Sunday) to &#8220;6&#8221; (Saturday)</li>
<li>%z - day of the year (&#8220;0&#8221; to &#8220;365&#8221;)</li>
<li>%S - English ordinal suffix, 2 characters; (&#8220;th&#8221;, &#8220;nd&#8221;)</li>
</ul>

<p><br />
<strong>Week:</strong>
</p><ul>
<li>%W - ISO-8601 week number of year, weeks starting on Monday (&#8220;42&#8221;: the 42nd week in the year)</li>
</ul>

<p><br />
<strong>Month:</strong>
</p><ul>
<li>%M - month, textual, 3 letters (“Jan”)</li>
<li>%F - month, textual, long (“January”)</li>
<li>%n - month without leading zeros (&#8220;1&#8221; to &#8220;12&#8221;)</li>
<li>%m - month with leading zeros (&#8220;01&#8221; to &#8220;12&#8221;)</li>
<li>%t - number of days in the given month (&#8220;28&#8221; to &#8220;31&#8221;)</li>
</ul>

<p><br />
<strong>Year:</strong>
</p><ul>
<li>%y - year, 2 digits (“99”)</li>
<li>%Y - year, 4 digits (“1999”)</li>
<li>%L - boolean for whether it is a leap year (&#8220;0&#8221; or &#8220;1&#8221;)</li>
</ul>

<p><br />
<strong>Other</strong>
</p><ul><li>%B - Swatch Internet time</li>
<li>%I (capital i) - &#8220;1&#8221; if Daylight Saving Time, &#8220;0&#8221; otherwise.</li>
<li>%T - Time zone setting of this machine (“MDT”)</li>
<li>%Z - time zone offset in seconds (”-43200” to “43200”). The offset for time zones west of UTC is always negative, and for those east of UTC is always positive.</li>
<li>%Q - local server time zone offset, in hours and seconds, against GMT (e.g. &#8220;+06:00&#8221;)</li>
<li>%r - RFC 822 formatting (&#8220;Thu, 21 Dec 2000 16:01:07 +0200&#8221;)</li></ul>

<p><br />
<strong>Common Formats</strong><br />
12/12/09
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;entry_date&nbsp;format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%m/%d/%y"</span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div><p>
January 10, 2010
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;entry_date&nbsp;format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%F&nbsp;%j,&nbsp;%Y"</span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div><p>
Wednesday, July 16th, 2008
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;entry_date&nbsp;format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%l,&nbsp;%F&nbsp;%j%S,&nbsp;%Y"</span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div><p>
01/11 at 01:31 PM 
</p><div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">&#123;entry_date&nbsp;format</span><span style="color: #007700">=</span><span style="color: #DD0000">'%m/%d'</span><span style="color: #0000BB">&#125;&nbsp;at&nbsp;&#123;entry_date&nbsp;format</span><span style="color: #007700">=</span><span style="color: #DD0000">'%h:%i&nbsp;%A'</span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div>

<p>&nbsp;</p>

<p>&nbsp;</p>
		]]>
	</description>       

      <dc:subject>Other</dc:subject>
      <dc:date>2009-11-25T15:51:03+00:00</dc:date>
    </item>

    <item>
      <title>Quoting and Planning ExpressionEngine Projects</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/quoting-and-planning-expressionengine-projects/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/quoting-and-planning-expressionengine-projects/#When:15:02:47Z</guid>
	<description>
		<![CDATA[
			 <p>This was the talk I gave at the <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.eeci2009.com%2Fvideo-and-slides%2F">2009 ExpressionEngine and CodeIgniter Conference</a> covering my process for quoting projects that need to be built on ExpressionEngine, and then how I plan out the builds.&nbsp; The slides are available as a <a href="http://www.train-ee.com/courseware?URL=http%3A%2F%2Fwww.flickr.com%2Fphotos%2F40729146%40N00%2Fsets%2F72157622664301527%2F">set on Flickr</a>.</p>

<object width="476" height="357"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7570396&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7570396&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="476" height="357"></embed></object><p><a href="http://vimeo.com/7570396">EECI2009 | Michael Boyink</a> from <a href="http://vimeo.com/eeci2009">EECI2009</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
		]]>
	</description>       

      <dc:subject>The Business Side</dc:subject>
      <dc:date>2009-11-12T15:02:47+00:00</dc:date>
    </item>

    <item>
      <title>Approve Link for Comments</title>
      <link>http://www.train-ee.com/courseware/free-tutorials/comments/approve-link-for-comments/</link>
      <guid>http://www.train-ee.com/courseware/free-tutorials/comments/approve-link-for-comments/#When:13:08:32Z</guid>
	<description>
		<![CDATA[
			<p>One of the &#8216;last-straw&#8217; ways to deal with spam in <a href="http://www.expressionengine.com/index.php?affiliate=boyink">ExpressionEngine</a> is enabling Comment Moderation, wherein each comment submitted to the site has to be approved by an administrator before appearing.&nbsp; Admins are notified of new comments via email - and that email can contain a &#8220;Delete Comment&#8221; link using a built-in EE variable.&nbsp; There is, however, no matching variable for &#8220;Approve Comment&#8221;.&nbsp; 
</p> <p>This makes the process for approving a new comment harder than deleting - which just shouldn&#8217;t be the case.&nbsp; We&#8217;re going to be positive here, right? </p>

<p>Turns out this is pretty easy to get around with the following code snippet.&nbsp; This would go in your Admin Notification of Comments template which is found under: Admin  ›&nbsp; Specialty Templates  ›&nbsp; Email Notification Templates.</p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">Approve</span><span style="color: #007700">?<br /></span><span style="color: #0000BB">PATH&nbsp;TO&nbsp;YOUR&nbsp;CP&nbsp;HERE</span><span style="color: #007700">?</span><span style="color: #0000BB">S</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">C</span><span style="color: #007700">=</span><span style="color: #0000BB">edit</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">M</span><span style="color: #007700">=</span><span style="color: #0000BB">change_status</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">comment_id</span><span style="color: #007700">=</span><span style="color: #0000BB">&#123;comment_id&#125;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">status</span><span style="color: #007700">=</span><span style="color: #0000BB">open&nbsp;</span>
</span>
</code></div>

<p>or: </p>

<div class="codeblock"><code><span style="color: #000000">
<span style="color: #0000BB">Approve</span><span style="color: #007700">?<br /></span><span style="color: #0000BB">http</span><span style="color: #007700">:</span><span style="color: #FF8000">//www.yoursite.com/system/index.php?S=0&amp;C=edit&amp;M=change_status&amp;comment_id=&#123;comment_id&#125;&amp;status=open&nbsp;</span>
</span>
</code></div>

<p>When you or your Admin clicks the Approve link they will be taken to the EE Control Panel view of the list of comments for this particular entry.&nbsp; The nice thing is if the &#8220;Approve&#8221; link was clicked by mistake the option to close or delete the comment is right there as well.</p>

<p>&nbsp;</p>
		]]>
	</description>       

      <dc:subject>Control Panel</dc:subject>
      <dc:date>2009-11-03T13:08:32+00:00</dc:date>
    </item>

    
    </channel>
</rss>