<?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>Adventures In Development &#187; Content Management Systems</title>
	<atom:link href="http://www.adventuresindevelopment.com/category/content-management-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adventuresindevelopment.com</link>
	<description>Web Development Tools, Ideas, Techniques and Resources</description>
	<lastBuildDate>Fri, 27 Aug 2010 04:11:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>How to Display Your Twitter Feed using ASP.NET</title>
		<link>http://www.adventuresindevelopment.com/2009/06/21/how-to-display-your-twitter-feed-using-aspnet/</link>
		<comments>http://www.adventuresindevelopment.com/2009/06/21/how-to-display-your-twitter-feed-using-aspnet/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 00:08:38 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=145</guid>
		<description><![CDATA[UPDATE 3/23/2010 - Ricky from Twitterizer commented below noting that basic authentication will soon go away via Twitter and OAUTH will be required. Note that the code below will only work for a few months. We will post an updated code-example soon. As I write this article, It&#8217;s about 75 degrees and Sunny outside. When [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE 3/23/2010 </strong>- Ricky from Twitterizer commented below noting that basic authentication will soon go away via Twitter and OAUTH will be required. Note that the code below will only work for a few months. We will post an updated code-example soon.</p>
<p>As I write this article, It&#8217;s about 75 degrees and Sunny outside. When I should be going out on a bike ride, instead I&#8217;ve opted to play with <a href="http://code.google.com/p/twitterizer/">Twitterizer</a> (an ASP.NET Twitter Library). Twitterizer is an ASP.NET library that lets you interact with the Twitter API using easy to use objects and methods. It will work with any of the .NET variants (C#, VB, J#, Windows Forms, ASP.NET, WPF, etc). I added the functionality into the <a href="http://www.360webcms.com/">360 Web Content Management System</a> and I thought I&#8217;d share with you how I did it.</p>
<p><span style="text-decoration: underline;"><strong>Here&#8217;s how to retrieve twitter feeds in ASP.NET</strong></span></p>
<p><strong>(1) Get a copy of the Twitterizer Library </strong></p>
<p>First, you&#8217;ll need to get a copy of the <a href="http://code.google.com/p/twitterizer/">Twitterizer Library from Google&#8217;s Codebase</a>. The download is pretty small and contains only the application library (DLL) you need. Create a new website in ASP.NET and extract the twitterizer library to the /bin/ folder so that you can use it.  Once you have it placed in your /bin/ folder, add a &#8220;using&#8221; reference to the library in the header of your page.</p>
<p>using Twitterizer.Framework;</p>
<p><strong>(2) Create a &#8220;Twitter&#8221; object and Retrieve Your Status Updates.</strong></p>
<p>The library contains a few different objects that you can create. A &#8220;Twitter&#8221; object is the most generic object that you can create. Creating an instance of this object using your username and password gives you all the functionality you would normally have in Twitter, but instead of using the Twitter web interface, you&#8217;re using C# or Visual Basic. First, we&#8217;ll need to instantiate the object, and then get a collection of status updates from your account.</p>
<p>Twitter thisUser = new Twitter(&#8220;UserNameHere&#8221;, &#8220;PasswordHere&#8221;);<br />
TwitterStatusCollection thisCollection = thisUser.Status.UserTimeline();</p>
<p><strong>(3) Loop Through Your Status Updates and Generate Some HTML</strong></p>
<p>The &#8220;TwitterStatusCollection&#8221; object type is a list of &#8220;TwitterStatus&#8221; objects, so you can use a foreach loop and go through your most recent status updates. You&#8217;ll notice in the code below that I also do some basic work with the time of the status update to generate a hyperlink to the page of the status, similar to what Twitter does.</p>
<p>string TwitterCode = &#8220;&#8221;;<br />
foreach (TwitterStatus thisStatus in thisCollection)<br />
{</p>
<p>TimeSpan thisSpan = new TimeSpan();<br />
thisSpan = DateTime.Now.Subtract(thisStatus.Created);</p>
<p>string TimeBetween = &#8220;&#8221;;<br />
if (thisSpan.Days &gt; 0) { TimeBetween = thisSpan.Days.ToString() + &#8221; days ago&#8221;; }<br />
else if (thisSpan.Hours &gt; 0) { TimeBetween = thisSpan.Days.ToString() + &#8221; hours ago&#8221;;}<br />
else if (thisSpan.Minutes &gt; 0) { TimeBetween = thisSpan.Days.ToString() + &#8221; minutes ago&#8221;;}<br />
else if (thisSpan.Seconds &gt; 0) { TimeBetween = thisSpan.Days.ToString() + &#8221; seconds ago&#8221;;}</p>
<p>TwitterCode += &#8220;&lt;div class=&#8217;TwitterStatus&#8217;&gt;&#8221; + thisStatus.Text + &#8221; &lt;a href=&#8217;http://twitter.com/&#8221; + thisStatus.TwitterUser.UserName + &#8220;/status/&#8221; + thisStatus.ID + &#8220;&#8216;&gt;&#8221; + TimeBetween + &#8220;&lt;/a&gt;&lt;/div&gt;&#8221;;<br />
}<br />
<strong>(4) Display Your Tweets </strong></p>
<p>You now have a string with your most recent twitter status updates that you can display on the page using a simple Response.Write() or you can display it in a label. You can see a variation of this code running on the <a href="http://www.360webcms.com/addons/twitter/">&#8220;Twitter&#8221; page for the 360 Web Content Management System</a>.</p>
<p>You can also download a copy of my <a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/06/twitter.zip">sample code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/06/21/how-to-display-your-twitter-feed-using-aspnet/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>How to Implement an ASP.NET Color Picker</title>
		<link>http://www.adventuresindevelopment.com/2009/06/12/how-to-implement-an-aspnet-color-picker/</link>
		<comments>http://www.adventuresindevelopment.com/2009/06/12/how-to-implement-an-aspnet-color-picker/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 20:28:18 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[360 WebCMS]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=139</guid>
		<description><![CDATA[One of the components of the 360 Web Content Management System (website in progress) that I wanted to develop was an events calendar that allowed you to post events into color-coded categories. You can see a demo of it here. At first, I had it so that users would manually enter in a 6-character HTML [...]]]></description>
			<content:encoded><![CDATA[<p>One of the components of the <a href="http://www.360webcms.com/">360 Web Content Management System</a> (website in progress) that I wanted to develop was an events calendar that allowed you to post events into color-coded categories. You can see a demo of it <a href="http://cmsdemo.factor360.com/events.aspx">here</a>. At first, I had it so that users would manually enter in a 6-character HTML color code, but it was very non-intuitive for anyone who&#8217;s never worked with HTML before. Eventually I stumbled upon the <a href="http://www.karpach.com/ColorPickerDemo.aspx">ASP.NET Color Picker control</a>. It&#8217;s a custom ASP.NET control that you can add to a page much in the way that you can add a text box, radio buttons, or a drop down list.</p>
<p><span style="text-decoration: underline;"><strong>Here&#8217;s how to implement the ASP.NET Color Picker Control</strong></span></p>
<p><strong>(1) Download the library and add it to your project<br />
</strong></p>
<p>First, download the library from the ASP.NET Color Picker Control website. Make sure to download the latest binary release from the website. Currently that version is <a href="http://www.karpach.com/files/WebControls.v.1.4.10423.1-bin.zip">ASP.NET Color Picker v.1.4.10423.1 Binary</a>. Once you get the zip file, it will contain a library that you should extract to the /bin/ folder of your website.</p>
<p><strong>(2) Register the library on your page</strong></p>
<p>ASP.NET provides a set of standard controls that you can add to a page that start with the &#8220;ASP&#8221; prefix, such as &#8220;&lt;ASP:TextBox runat=&#8221;server&#8221; id=&#8221;txtBox&#8221; /&gt;. Any custom controls will have their own prefix that you specify by registering the library on the page. It&#8217;s another line of code that you add to the top of the page next to your page definition. It should look something like this:</p>
<p>&lt;%@ Register Assembly=&#8221;Karpach.WebControls&#8221; Namespace=&#8221;Karpach.WebControls&#8221; TagPrefix=&#8221;cc1&#8243; %&gt;</p>
<p><strong>(3) Add the control to your page</strong></p>
<p>Now that you have the library referenced, you can add the control to your page and make use of it.  For the purpose of this demo, I&#8217;m going to set the AutoPostBack property to true and run a function whenever the color is changed. This will show us the color that we picked inside of a label (also shown below) after we select a new color.</p>
<p>&lt;cc1:ColorPicker ID=&#8221;colorBackgroundColor&#8221; runat=&#8221;server&#8221; AutoPostBack=&#8221;true&#8221; OnColorChanged=&#8221;chngColor&#8221; /&gt;<br />
&lt;br /&gt;&lt;br /&gt;<br />
&lt;asp:Label ID=&#8221;lblResults&#8221; runat=&#8221;server&#8221; Text=&#8221;"&gt;&lt;/asp:Label&gt;</p>
<p><strong>(4) Create Your C# Function</strong></p>
<p>After we choose a color, we have to do something with it. With the ColorPicker control above, I&#8217;m using the OnColorChanged property to call the &#8220;chngColor&#8221; function, which in C# will look something like this. This will also demonstrate how to programmatically read the color chosen with the .Color property of the ASP.NET Color Picker Control</p>
<p>protected void chngColor(object sender, EventArgs e)<br />
{<br />
lblResults.Text = &#8220;&lt;div style=&#8217;background-color:#&#8221; + colorBackgroundColor.Color.Replace(&#8220;#&#8221;, &#8220;&#8221;) + &#8220;;height:50px;width:80px;text-align:center;padding-top:35px;&#8217;&gt;Sample Text&lt;/div&gt;&#8221;;<br />
}</p>
<p><strong>(5) Success</strong></p>
<p>So far, we&#8217;ve added the library to our project, registered the library on the page, added the control to the page, and done something with the color chosen by the user. Your page should look something like this:</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/06/color-picker.jpg"><img class="alignnone size-full wp-image-140" title="color-picker" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/06/color-picker.jpg" alt="color-picker" width="567" height="398" /></a></p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/06/colorpickerdemo.zip">You can download my sample program here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/06/12/how-to-implement-an-aspnet-color-picker/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Make A Quick &amp; Easy Testing Environment for Joomla, Magento, WordPress and Other Open Source Web-Applications</title>
		<link>http://www.adventuresindevelopment.com/2009/05/28/make-a-quick-easy-testing-environment-for-joomla-magento-wordpress-and-other-open-source-web-applications/</link>
		<comments>http://www.adventuresindevelopment.com/2009/05/28/make-a-quick-easy-testing-environment-for-joomla-magento-wordpress-and-other-open-source-web-applications/#comments</comments>
		<pubDate>Thu, 28 May 2009 15:52:03 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=116</guid>
		<description><![CDATA[Earlier this week, I wrote up a tutorial about how to make a testing environment for Joomla on the windows platform. I went through the instructions of setting up WAMP, making the database, and installing and configuring Joomla. It turns out there&#8217;s a much easier way to create a testing environment for Joomla, Magento, MySQL, [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week, I wrote up a tutorial about <a href="http://www.adventuresindevelopment.com/2009/05/25/how-to-build-a-joomla-testing-environment-on-windows/">how to make a testing environment for Joomla on the windows platform</a>. I went through the instructions of setting up WAMP, making the database, and installing and configuring Joomla. It turns out there&#8217;s a much easier way to create a testing environment for Joomla, Magento, MySQL, Lamp, Moodle, WordPress, and all sorts of other open source software from a company called <a href="http://www.jumpbox.com">JumpBox</a>.</p>
<p>Essentially, they&#8217;ll give you an image of a virtual machine that contains the web-server software, as well as the server-side software you are testing. Everything will be pre-configured and ready to go. You&#8217;ll download a copy of the virtual machine, get it running with <a href="http://www.virtualbox.org/wiki/Downloads">VirtualBox</a>, and you&#8217;re good to go. Some of the virtual machines do cost money, but fortunately for us, the image for Joomla is <a href="http://demo.joomla.org/jumpbox.html">free for download from Joomla.org</a>.</p>
<p>Normally, I&#8217;d post a walk through of going through the process of installing the software and getting it up and going, but the folks at Joomla.org have already done that for us:</p>
<p><object width="400" height="225" data="http://vimeo.com/moogaloop.swf?clip_id=3385061&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"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3385061&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /></object></p>
<p><a href="http://vimeo.com/3385061">Run Joomla in 5 min with JumpBox and VirtualBox</a> from <a href="http://vimeo.com/user1058430">Sean Tierney</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/05/28/make-a-quick-easy-testing-environment-for-joomla-magento-wordpress-and-other-open-source-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search Engine Optimization (SEO) Your WordPress Blog or Website</title>
		<link>http://www.adventuresindevelopment.com/2009/05/26/search-engine-optimization-seo-your-wordpress-blog-or-website/</link>
		<comments>http://www.adventuresindevelopment.com/2009/05/26/search-engine-optimization-seo-your-wordpress-blog-or-website/#comments</comments>
		<pubDate>Tue, 26 May 2009 18:22:46 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=100</guid>
		<description><![CDATA[WordPress is without a doubt the most popular blogging platform on the web. It&#8217;s easy to use, relatively secure, very extensible and best of all free. Unfortunately, it&#8217;s not optimized for search engines terribly well out of the box. The URLs that it generates don&#8217;t have any keywords in them. There&#8217;s no way to customize [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress is without a doubt the most popular blogging platform on the web. It&#8217;s easy to use, relatively secure, very extensible and best of all free. Unfortunately, it&#8217;s not optimized for search engines terribly well out of the box. The URLs that it generates don&#8217;t have any keywords in them. There&#8217;s no way to customize titles and meta-data on a page-by-page basis by default. Duplicate content in archives and category listings are all set to be indexable. By default, it doesn&#8217;t generate a Google site map, and the list goes on.</p>
<p>Fortunately, there are a number of things you can do to your WordPress installation to make it much friendlier to search-engines, resulting in more traffic to your website.</p>
<p>Here&#8217;s the list of search-engine optimization techniques that I frequently use on WordPress websites:</p>
<p><strong>(1) Create a site map and submit it to Google&#8217;s Webmaster Tools</strong></p>
<p>A sitemap is nothing more than a list of pages that are on your website and how frequently they are updated. This will help Google and other search engines know which pages they should index and which ones likely haven&#8217;t been updated and they don&#8217;t need to check. It&#8217;s difficult to measure how much of a benefit creating a site map actually has for your site because Google doesn&#8217;t publish their algorithms, but it definitely helps.</p>
<p>To create an automatically generating site map in WordPress, download and install the <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Google (XML) Sitemaps Generator for WordPress</a>. After installing the plug-in and getting your site map built, make sure to add your website to <a href="https://www.google.com/webmasters/tools/dashboard?pli=1">Google&#8217;s Webmaster Tools</a> and submit the sitemap to there.</p>
<p><strong>(2) Create Better Permalink URLs</strong></p>
<p>By default, WordPress will use URLs such as http://www.example.org/?p=23. Typically, URLS that have keywords related to what the users are searching for have a better chance of ranking high than those that don&#8217;t. By changing your WordPress settings, you can create keyword rich URLs such as &#8220;http://www.adventuresindevelopment.com/2009/05/26/how-to-generate-random-passwords-in-c/.</p>
<p>To do this, go to the &#8220;Settings&#8221; tab under your WordPress back-end then go to &#8220;Permalinks.&#8221; I typically recommend the &#8220;Day and Name&#8221; setting</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/permalink.jpg"><img class="alignnone size-full wp-image-101" title="permalink" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/permalink.jpg" border="1" alt="permalink" width="431" height="230" /></a></p>
<p><strong>(3) Get the &#8220;All In One&#8221; SEO Plugin</strong></p>
<p>A key aspect of doing search engine optimization well on any site is making sure that the right pages are indexed and that &#8220;clickable&#8221; page titles are selected. By default, WordPress will generate page titles such as &#8220;AdventuresInDevelopment.com &#8211; The Name of the Article Here&#8221;, but most web-browsers are concerned about the article it self and not your specific website, so it&#8217;s generally agreed that having the title of the article should come before having the title of your website. That&#8217;s why we use titles like &#8220;Article Name | Adventures In Development.&#8221;</p>
<p>You also want to avoid having duplicated content on your website. Generally, that&#8217;s something that you want to avoid. If the amount of duplicate content that you have is excessive, Google could punish your rankings as a result. For this reason, it&#8217;s a good idea to add &#8220;noindex&#8221; meta-tags to your category pages, tag pages, and monthly archives. This way, only your homepage, your individual posts, and your about pages are indexed.</p>
<p>There&#8217;s a plug-in called &#8220;All in One SEO&#8221; that accomplishes these two tasks for WordPress. <a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">&#8220;All In One SEO&#8221; can be downloaded from the WordPress plug-ins section.</a> You can also use it to set custom meta-data for your homepages if you&#8217;d like, which certainly won&#8217;t hurt.</p>
<p><strong>(4) Get the Word Press &#8220;Related Sites&#8221; plug-in</strong></p>
<p>To rank well in search engines, you need to get people to link back to your website, and unless you are promoting a very authoritative website, that is not an easy task. Some people try to generate free links by participating in blog-carnivals and others even go as far as purchasing links from other websites. <a href="http://wordpress.org/extend/plugins/related-sites/">Related Sites</a> is a way for you to generate free in-bound links from websites in your niche without the risk of any sort of Google penalties. Basically, it looks at the keywords in your post and provides links to related posts on other participants websites that use similar keywords. It does the same thing on their articles and generates additional links back to your website.</p>
<p>Here&#8217;s what the &#8220;Related Sites&#8221; module looks like on an article on one of our other sites (<a title="Permanent Link to Interest Rate Hikes And What You Can Do About Them" href="http://www.americanconsumernews.com/2009/05/interest-rate-hikes-and-what-you-can-do-about-them.html">Interest Rate Hikes And What You Can Do About Them @ American Consumer News)</a></p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/related-sitse.jpg"><img class="alignnone size-full wp-image-104" title="related-sitse" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/related-sitse.jpg" alt="related-sitse" width="393" height="133" /></a></p>
<p><span style="text-decoration: underline;"><strong>Here are some other WordPress SEO articles you might be interested in:</strong></span></p>
<ul>
<li><a href="http://www.jimwestergren.com/seo-for-wordpress-blogs/">SEO for WordPress &#8211; The Complete Guide &#8211; Jim Westergren</a></li>
<li><a href="http://codex.wordpress.org/Search_Engine_Optimization_for_Wordpress">Search Engine Optimization for WordPress &#8211; WordPress Codex</a></li>
<li><a href="http://yoast.com/articles/wordpress-seo/">WordPress SEO &#8211; Yoast</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/05/26/search-engine-optimization-seo-your-wordpress-blog-or-website/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>How to Build a Joomla Testing Environment on Windows</title>
		<link>http://www.adventuresindevelopment.com/2009/05/25/how-to-build-a-joomla-testing-environment-on-windows/</link>
		<comments>http://www.adventuresindevelopment.com/2009/05/25/how-to-build-a-joomla-testing-environment-on-windows/#comments</comments>
		<pubDate>Mon, 25 May 2009 23:18:58 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=85</guid>
		<description><![CDATA[In the next couple of weeks, I&#8217;m planning on developing a Joomla 1.5 module so that I can flex my PHP muscles and get some more experience developing for Joomla. As part of this, It will be very helpful to have a local environment where I can test out the component that I&#8217;m plan on [...]]]></description>
			<content:encoded><![CDATA[<p>In the next couple of weeks, I&#8217;m planning on developing a <a href="http://www.joomla.org/">Joomla</a> 1.5 module so that I can flex my PHP muscles and get some more experience developing for Joomla. As part of this, It will be very helpful to have a local environment where I can test out the component that I&#8217;m plan on making. The process of setting up a Joomla testbed isn&#8217;t that terrible. It basically involves setting up a copy of Apache and MySQL on your local machine then installing Joomla on top of that. Most of the server-setup can be streamlined by using a copy of <a href="http://www.wampserver.com">WAMP</a>.</p>
<p><span style="text-decoration: underline;"><strong>Here&#8217;s how to build a Joomla testing environment on Windows:</strong></span></p>
<p><strong>(1) Download a copy of WAMP</strong></p>
<p>The first thing you&#8217;ll need to do is get a copy of WAMP. This stands for &#8220;Windows Apache MySQL and PHP&#8221;. It essentially provides a set of web-development framework that combines all of the tools that you need for creating a PHP test-bed in a Windows environment. Since Joomla is based on PHP, WAMP is a perfect solution to run Joomla on top of. You can download the installation files from <a href="http://www.wampserver.com/en/download.php">WampServer.com</a></p>
<p><strong>(2) Install WAMP</strong></p>
<p>You should have a copy of &#8220;WampServer2.0h.exe&#8221; on your system. Double click the file to open it. Work your way through the installation by clicking next and I agree as many times as you need. It&#8217;s okay to leave the installation directory to &#8220;C:\WAMP&#8221; unless you have a specific desire to move it anywhere else. If you have the Windows Firewall running on your system, you&#8217;ll receive a notice that it&#8217;s trying to access the web. You&#8217;ll want to make sure it&#8217;s &#8220;unblocked&#8221; otherwise it&#8217;s likely that your WAMP install will not function properly.</p>
<p>You will also be asked about SMTP information. Unless you have a specific need to do anything that involves sending emails from your web-server, it&#8217;s safe to leave those blank. If you are developing contact forms or somethign that would require credentials, you can get those from your internet service provider.</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/wamp-setup.jpg"><img class="alignnone size-full wp-image-86" title="wamp-setup" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/wamp-setup.jpg" alt="wamp-setup" width="513" height="396" /></a></p>
<p><strong>(3) Take WAMP for a Test Drive</strong></p>
<p>After installing WAMP, you have the option to start it up automatically. You can do this or launch WAMP from the start menu. You should be able to left-click on the WAMP icon in the system tray. You&#8217;ll get different options  to turn WAMP on and off as well as access various database and web-server management tools. For now, we just want to click on LocalHost to make sure the web-server is running properly. If all is well, you&#8217;ll see a page that says &#8220;WAMPServer&#8221; that has a white-background.</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/wamp-first-steps.jpg"><img class="alignnone size-full wp-image-88" title="wamp-first-steps" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/wamp-first-steps.jpg" alt="wamp-first-steps" width="233" height="293" /></a></p>
<p><strong>(4) Download Joomla</strong></p>
<p>To run a local copy of Joomla on our Windows/Joomla testbed, we&#8217;ll need to download the latest version from <a href="http://www.joomla.org/download.html">Joomla.org&#8217;s download page</a>. You&#8217;ll want to download version 1.5 unles you have a specific reason to run Joomla 1.0. Be sure to get the &#8220;1.5.x Full Package&#8221; file.</p>
<p><strong>(5) Extra Joomla to Your Website&#8217;s Root Directory</strong></p>
<p>If you haven&#8217;t done anything special with your WAMP server, the root directory of your web-server should be located at &#8220;C:\wamp\www&#8221; on your system. First, delete the existing &#8220;index.php&#8221; file that&#8217;s sitting there then extract all of the Joomla files there.</p>
<p><strong>(6) Setup a Database for Joomla to Run in</strong></p>
<p>Left click your WAMP icon in the system tray then choose the phpMyAdmin option. This is a piece of software that lets you manage the database component of the WAMP stack. We need to setup a database for our local copy of Joomla to use. On the first screen you see, you&#8217;ll have the option of creating a database.</p>
<p>This is a screenshot of me creating a database called &#8220;JoomlaDB&#8221;</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/mysql-joomla.jpg"><img class="alignnone size-full wp-image-89" title="mysql-joomla" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/mysql-joomla.jpg" alt="mysql-joomla" width="455" height="119" /></a></p>
<p>This is all you should need to do with phpMyAdmin for the setup process. Since it&#8217;s a local machine, we&#8217;ll just use the &#8220;root&#8221; login for our MySQL Server. If this was a production environment, you would want to create separate account to access your database.</p>
<p><strong>(7) Run the Joomla Setup</strong></p>
<p>After getting your files extracted, visit your local web-server by pointing your browser to http://localhost/ or by using the link in the WAMP  tray-icon and going to your &#8220;LocalHost&#8221; option. At this point, you&#8217;ll be at the standard Joomla setup process. The first three steps are straight forward, the only &#8220;hard&#8221; part is setting up the database. When you hit step three, use &#8220;Localhost&#8221; for the database server &#8220;root&#8221; for the mysql user, and leave the password blank. For the name of your database, enter in the name of the database you created in the previous step. In my example, I used &#8220;JoomlaDB&#8221; as my database name. You won&#8217;t need a database password since we&#8217;re developing locally.</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-database-settings.jpg"><img class="alignnone size-full wp-image-90" title="joomla-database-settings" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-database-settings.jpg" alt="joomla-database-settings" width="589" height="214" /></a></p>
<p>For step four of the installation, it&#8217;s okay to not enable the FTP layer since we are developing locally. On step five, you&#8217;ll need to pick out a name for your site, and create an administrative account. It&#8217;s probably a good idea to install the sample data package so that you have a base website to develop from.</p>
<p>If your install is successful, you should see a screen like this:</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-finish.jpg"><img class="alignnone size-full wp-image-91" title="joomla-finish" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-finish.jpg" alt="joomla-finish" width="496" height="379" /></a></p>
<p><strong>(8) Delete Joomla&#8217;s &#8220;Installation&#8221; Directory </strong></p>
<p>After finishing the Joomla install, you&#8217;ll need to go back to your &#8220;C:\WAMP\WWWROOT\&#8221; directory (or wherever you have it located) and delete the folder called &#8220;Installation&#8221; before using Joomla.</p>
<p><strong>(9) Pat Yourself on the Back</strong></p>
<p>After deleting the installation directory, browse to http://localhost/ again and if your install was successful, you should see a screen like this:</p>
<p><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-finish1.jpg"></a><a href="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-success.jpg"><img class="alignnone size-full wp-image-93" title="joomla-success" src="http://www.adventuresindevelopment.com/wp-content/uploads/2009/05/joomla-success.jpg" alt="joomla-success" width="469" height="359" /></a></p>
<p>You now have everything you need to do to begin playing around with Joomla on your local machine. You can browse to http://localhost/administrator/ and login with the credentials you made during setup to get into the back-end of Joomla.</p>
<p><strong>(10) Get Developing!</strong></p>
<p>Once you get your Windows Joomla testing environment setup, start developing some modules, components, mambots, and the like. Here are some resources to help you get started with Joomla Development</p>
<ul>
<li><a href="http://developer.joomla.org/">The Official Joomla Developer Site</a></li>
<li><a href="http://www.trash-factor.com/content/quick-joomla-component-development-introduction">A quick Joomla component development introduction</a> (Trashfactor)</li>
<li><a href="http://www.joomlatutorials.com/joomla-15x/joomla-developer-tutorials/creating-a-joomla-module.html">Creating a Custom Joomla Module</a> (JoomlaTutorials.com)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/05/25/how-to-build-a-joomla-testing-environment-on-windows/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>360 WebCMS Feature Look: Multisite Management</title>
		<link>http://www.adventuresindevelopment.com/2009/05/16/360-webcms-content-management-feature-look-multisite-management/</link>
		<comments>http://www.adventuresindevelopment.com/2009/05/16/360-webcms-content-management-feature-look-multisite-management/#comments</comments>
		<pubDate>Sat, 16 May 2009 21:44:45 +0000</pubDate>
		<dc:creator>Matthew Paulson</dc:creator>
				<category><![CDATA[360 WebCMS]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://www.adventuresindevelopment.com/?p=31</guid>
		<description><![CDATA[I&#8217;ve spent the better part of the last 3 months developing the new version of our company&#8217;s content management system that&#8217;s called &#8220;360 WebCMS&#8221;. It&#8217;s a product that Factor 360 has and is used to develop all of our client websites. One of the cool features that I built into it was multi-site management. Essentially, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the better part of the last 3 months developing the new version of our company&#8217;s content management system that&#8217;s called &#8220;360 WebCMS&#8221;. It&#8217;s a product that <a href="http://www.factor360.com/">Factor 360</a> has and is used to develop all of our client websites. One of the cool features that I built into it was multi-site management. Essentially, one copy of the CMS can power dozens of small websites. That way, when it&#8217;s time to update the software to add in new features or take care of a problem, there&#8217;s only one copy to update instead of 20. Each site has their own separate set of data that doesn&#8217;t cross paths with any other site on the system&#8217;s.</p>
<p>I thought I would give a shot at doing a screencast and demoing off the multi-site functionality of the system. I used <a href="http://www.screencast-o-matic.com/">Screencast-O-Matic</a> to make it (and I was very impressed with their solution).</p>
<p><iframe width=504 height=424 frameborder="0" scrolling="no" src="http://www.screencast-o-matic.com/embed?sc=cQhD2UeK2&#038;w=500&#038;np=0&#038;v=2"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adventuresindevelopment.com/2009/05/16/360-webcms-content-management-feature-look-multisite-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
