<?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>Archetyped &#8250; Projects</title>
	<atom:link href="http://archetyped.com/tag/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://archetyped.com</link>
	<description>Explore, Experiment, Inspire</description>
	<lastBuildDate>Thu, 26 Aug 2010 23:55:06 +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>Lab &#8250; WordPress as CMS &#8211; Making the Connection</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-making-the-connection/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-making-the-connection/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 21:03:11 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/wordpress/wordpress-as-cms-making-the-connection/</guid>
		<description><![CDATA[One of the things that excited me (and scared me) about being able to create an unlimited number of content types was the connections that could be formed between items of different types. What excited me about this was the &#8220;automatic&#8221; nature of it&#8211; being able to define a connection between one content type and ...]]></description>
			<content:encoded><![CDATA[<p>One of the things that excited me (and scared me) about being able to create an unlimited number of content types was the connections that could be formed between items of different types.  What excited me about this was the &#8220;automatic&#8221; nature of it&#8211; being able to define a connection between one content type and another, and then everything else would take care of itself.  What scared me, was I wasn&#8217;t exactly sure <em>how</em> I was going to do this.</p>
<p>I spent some time yesterday working out the specifics of storing connections between content types and connections between different items (posts) and I&#8217;m pretty happy with the result.</p>
<h5>An example of how connections can be useful:</h5>
<p>Say you have 2 content types:</p>
<ol>
<li>Recipes</li>
<li>Ingredients</li>
</ol>
<p>Of course, all recipes must contain ingredients, so we need to tell the CMS that these two content types are connected.  We can also define the <em>type</em> of connection between these items (&#8220;One to One&#8221; or &#8220;One to Many&#8221;).</p>
<ul>
<li>One to One: One item of one content type can connect to one item of another content type</li>
<li>One to Many: One item of one content type can connect to several items of another content type</li>
</ul>
<p>Will a recipe need to connect to just one ingredient, or will it need to connect to several?  In this case, we would want to be able to connect a recipe to several ingredients, so we&#8217;re going to create a One to Many relationship between Recipes and Ingredients.</p>
<p>Now, when I&#8217;m adding a new recipe, thanks to the connection between these two content types, a list of ingredients will be displayed in the form to select ingredients that the recipe uses.  Since this is a One to Many relationship, each ingredient has a checkbox next to it so that I can select multiple ingredients from the list.  If it were a One to One relationship, the ingredients would be displayed as a drop-down list, which would only allow for one ingredient to be selected.</p>
<p>I really like the possibilities of this feature, but I think the goal now is to make it <em>usable</em>.  In my opinion, it&#8217;s quite powerful as a feature, but it&#8217;s also somewhat abstract.  So I&#8217;ve got to find a way to make it instantly clear how this feature could be useful to a user.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-making-the-connection/"> WordPress as CMS &#8211; Making the Connection</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on February 3, 2007 11:03am</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-making-the-connection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; Dynamic Forms</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-dynamic-forms/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-dynamic-forms/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 09:51:07 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/wordpress/wordpress-as-cms-dynamic-forms/</guid>
		<description><![CDATA[While I&#8217;m still working out the exact method to define a content type, I&#8217;m far enough along that I was able to start working on the code to display the extra forms for each content type. The idea is simple: Select a content type, and the additional form fields for that content type appear below ...]]></description>
			<content:encoded><![CDATA[<p>While I&#8217;m still working out the exact method to define a content type, I&#8217;m far enough along that I was able to start working on the code to display the extra forms for each content type.</p>
<p>The idea is simple: Select a content type, and the additional form fields for that content type appear below the main form.</p>
<p>Today, I built a working example of just that.  Most of the work now will go into making this functionality more robust and flexible.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-dynamic-forms/"> WordPress as CMS &#8211; Dynamic Forms</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on January 23, 2007 11:51pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-dynamic-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; Content Types</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-content-types/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-content-types/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 00:35:08 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-content-types/</guid>
		<description><![CDATA[I&#8217;m currently working on the Content Types feature of my CMS plugin for WordPress. As , I think this is an important feature for a CMS that is truly extensible and flexible enough to be used for any purpose. At the moment, I&#8217;m working on determining the best way to define a Content Type and ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on the Content Types feature of my CMS plugin for WordPress.  As <a href="http://archetyped.com/lab/wordpress-as-cms-new-features-part-1-content-types/" title="Wordpress as CMS - New Features Part 1: Content Types">previously discussed</a>, I think this is an important feature for a CMS that is truly extensible and flexible enough to be used for <em>any</em> purpose.</p>
<p>At the moment, I&#8217;m working on determining the best way to define a Content Type and its options in the database.  Some types of content will use data from <code>wp_posts</code> along with data from other tables (joins), while others will be totally separate, so it&#8217;s important that the definition format is robust enough to handle all sorts of types.  From there, the next step is to implement that format so that I can easily (and efficiently) pull all data (including custom metadata from other tables) for a post (or group of posts).</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-content-types/"> WordPress as CMS &#8211; Content Types</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on January 19, 2007 02:35pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-content-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog &#8250; Lists &#8211; So Close, Yet So Far</title>
		<link>http://archetyped.com/blog/lists-so-close-yet-so-far/</link>
		<comments>http://archetyped.com/blog/lists-so-close-yet-so-far/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 05:14:41 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/lists-so-close-yet-so-far/</guid>
		<description><![CDATA[Last night I reached a point where basically had all the core functionality I wanted for .  I uploaded it to the live server, and it worked equally well on my PC and my mobile phone. Awesome. When I started working on it today, I felt that it still wasn&#8217;t quite as &#8220;dynamic&#8221; as I ...]]></description>
			<content:encoded><![CDATA[<p>Last night I reached a point where basically had all the core functionality I wanted for <a href="http://archetyped.com/lab/mini-project-lists/" title="Lists">Lists</a>.   I uploaded it to the live server, and it worked equally well on my PC and my mobile phone.  Awesome.</p>
<p>When I started working on it today, I felt that it still wasn&#8217;t quite as &#8220;dynamic&#8221; as I would like.  I felt that I was doing too much configuration, and more of the inner workings should be automatic for me to really call this app &#8220;intelligent&#8221;.</p>
<p>The goal is to make a system where relationships are automatically determined and content is displayed based on these relationships.  I&#8217;m at the point in development where I&#8217;m starting to work on the layout and structuring of the content.  Things feel quite a bit less flexible.  I have no single-use functions (such as a function to display lists and another to display items in the current list), but rather all content display is handled by intelligent functions and variable values.</p>
<p>So now, I&#8217;m about to rewrite a large part of the code to make things even more automatic.  I&#8217;d like to get started on this as soon as possible, but I&#8217;m still working out some of the details:</p>
<ul>
<li>Just how object-oriented should it be?</li>
<li>Should configuration (parent/child relationships, etc.) be set in the objects or based on the DB structure (or both)?</li>
<li>What&#8217;s the most optimized way to fetch all the content while still retaining as much flexibility as possible?</li>
</ul>
<p>Trust me, there&#8217;s more.  I&#8217;m stopping for the evening in the hopes that some time away from the questions will help me to better find the answers.</p>
<p><a href="http://archetyped.com/blog/lists-so-close-yet-so-far/"> Lists &#8211; So Close, Yet So Far</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on November 30, 2006 07:14pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/blog/lists-so-close-yet-so-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; Mini Project: Lists</title>
		<link>http://archetyped.com/lab/mini-project-lists/</link>
		<comments>http://archetyped.com/lab/mini-project-lists/#comments</comments>
		<pubDate>Thu, 30 Nov 2006 04:38:13 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/mini-project-lists/</guid>
		<description><![CDATA[I've recently started working on a simple web-based application in the hopes of solving one of (my) life's little problems, which I am currently referring to simply as "Lists".]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started working on a simple web-based application in the hopes of solving one of (my) life&#8217;s little problems, which I am currently referring to simply as &#8220;Lists&#8221;.</p>
<h2>The Problem</h2>
<p><strong></strong>Whenever I talk to others, I&#8217;m always hearing about new things&#8211; restaurants I should try, movies I should see, books to read, etc.  If something something sounds interesting to me, I&#8217;d like to take note of it so that I can try it.  Now, since I first started using a PDA (starting with the stately, <a href="http://en.wikipedia.org/wiki/Palm_Vx">Palm Vx</a>, say, 7 years ago or so), I don&#8217;t really ever carry paper or (more importantly) a pen around with me anymore.  This was not really ever a problem with a PDA, as I could simply add a note to my PDA, which could later be synced to my PC, saving the item for future reference.  I&#8217;ve since given up the bulk of having to carry around a PDA and a cellphone in lieu of a smartphone (the svelte <a href="http://en.wikipedia.org/wiki/HTC_Typhoon">Audiovox SMT 5600/HTC Typhoon</a>).  While my smartphone satisfies 99% of my on-the-go needs, there is no built-in tool to easily manage my ever-growing list of interesting things to do/see/eat/etc. (though 3rd-party solutions may be available).  On occasion, I have carried around a pen and a bit of paper to write down anything that I may want to remember, but I wouldn&#8217;t consider this the ideal solution because it 1) adds the extra step of having to re-input anything I write down into my computer to add to my main list, and 2) having to carry more stuff in my pocket kind of invalidates my reasoning for giving up the utility of a full-fledged PDA for the pocketability of a smartphone.</p>
<h2>The Solution</h2>
<p><strong></strong>Manage lists of items anytime, anywhere using any web-enabled device.</p>
<h2>The Implementation</h2>
<p><strong></strong>Using a simple web-based interface, Lists enables me to do the following:</p>
<ul>
<li>Create lists to manage different groups of items</li>
<li>Add items to a list</li>
<li>Mark when an item has been done</li>
</ul>
<p>As this tool is meant to help me when I&#8217;m on the go, it needs to be easily accessible via my mobile phone.  In addition to the above-mentioned functionality, the following are also a priority for a good mobile experience:</p>
<ul>
<li>Speedy code</li>
<li>Optimized layout of content (i.e. nothing superfluous should take up space on the small screen of a mobile phone)</li>
<li>Full functionality without requiring fancy client-side stuff (i.e. no ajax, etc.)</li>
</ul>
<p>Admittedly, this is a very simple tool to create.  So to make this more of an exercise, I&#8217;m working on making the whole system as dynamic as possible.  The goal is to make it as intelligent as possible with as little manual code as possible.  All database queries, relationships (i.e. between lists and items), displaying of content, etc. should be automatically determined based on a minimum of configuration information (database info, etc.).</p>
<p>After a few days of planning and writing the code, I&#8217;ve currently got the basic functionality working (add/edit/delete lists, add items to lists, edit/delete items, etc.).  The next step is to further optimize the code so that it is even more intelligent.</p>
<h2>How would this be used?</h2>
<p>When I hear about a movie that sounds interesting, all I need to do is select my &#8220;Movies&#8221; list and add the movie to it (via my mobile phone or any other web-enabled device).  Then, the next time I&#8217;m in the video store looking for a movie to watch, all I need to do is check the list with my mobile phone and I can see a selection of movies that I know that I&#8217;d like to see.</p>
<p>The same goes for finding a place to eat when we&#8217;re driving around trying to decide where we should go to eat.  With a quick look at my &#8220;Restaurants&#8221; list, we&#8217;ve now got a list of potential places to check out.</p>
<p>Even simpler, Lists can be used to create a list of groceries to buy while I&#8217;m at home, and then use my phone to reference the list while I walk around the grocery store.  Saves time and paper.  Sounds good to me!</p>
<h2>Other Thoughts</h2>
<p>This is a simple project made mostly for me personally.  But I do plan on adding multi-user functionality so that others can use it too.  I also will most likely provide the source code for download on this site once I get to a point where I&#8217;d consider it fit for public consumption.</p>
<p><a href="http://archetyped.com/lab/mini-project-lists/"> Mini Project: Lists</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on November 29, 2006 06:38pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/mini-project-lists/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; New Features Part 2: Media Management</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-new-features-part-2-media-management/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-new-features-part-2-media-management/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 02:37:00 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-new-features-part-2-media-management/</guid>
		<description><![CDATA[Compared to other content types, media types (video, image, audio, etc.) are differentiated by certain characteristics: Media files generally need to be uploaded to the server They can be embedded in other content (posts) They require specific markup to be displayed It is because of these special characteristics that content types classified as media are ...]]></description>
			<content:encoded><![CDATA[<p>Compared to other content types, media types (video, image, audio, etc.) are differentiated by certain characteristics:</p>
<ul>
<li>Media files generally need to be uploaded to the server</li>
<li>They can be embedded in other content (posts)</li>
<li>They require specific markup to be displayed</li>
</ul>
<p>It is because of these special characteristics that content types classified as media are not treated the same as other content types.  For the most part, media will be added when adding another content type (an mp3 for a podcast, a thumbnail image for an article, etc.).  Nonetheless, they are still treated as a separate content item (which means that they may be selected and embedded in any other content item as well).</p>
<p>Some differences regarding how media items are handled:</p>
<ul>
<li>Upload Capability &#8211; Media files may be uploaded</li>
<li>File Organization &#8211; Media files are saved into directories based on file type</li>
<li>Embed Media in a Post &#8211; Media can be easily added to a post by clicking an &#8220;Insert Media&#8221; button, viewing a gallery of media items (sortable and filterable), and selecting the media item(s) to insert.</li>
<li>Automatic Media Viewers &#8211; When a media item is displayed, it is automatically wrapped in a the proper markup to allowing viewing.  For example:
<ul>
<li>Images (gif, jpg, png) are wrapped in <code>&lt;img&gt;</code> tags</li>
<li>Flash Videos (flv) are wrapped in a flash video player</li>
<li>Mp3 files are wrapped in a flash-based audio player</li>
</ul>
<p>The nice thing is that these viewers are simply the default templates defined for each of the content types.  This means that:</p>
<ol>
<li>Viewers can be easily modified</li>
<li>Default viewers can be easily overridden via a template for further customization</li>
</ol>
</li>
</ul>
<p>Adding new media types is as simple as adding any other content types (define the characteristics of the media type, create default viewer template, and you&#8217;re done).</p>
<p>Personally, I like the automatic viewers for displaying media the most.  This relieves template creators from having to do this task, and all they have to do is add a simple template tag (<code>show_media()</code>, for example).</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-new-features-part-2-media-management/"> WordPress as CMS &#8211; New Features Part 2: Media Management</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on November 26, 2006 04:37pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-new-features-part-2-media-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; New Features Part 1: Content Types</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-new-features-part-1-content-types/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-new-features-part-1-content-types/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 00:52:30 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-new-features-part-1-content-types/</guid>
		<description><![CDATA[One of the best things to come out of beta testing this plugin in a real-world situation is the advent of new features. Had I been developing the plugin in complete isolation, it&#8217;s quite likely these new features could have been implemented completely differently (or not at all). There are several little enhancements and optimizations ...]]></description>
			<content:encoded><![CDATA[<p>One of the best things to come out of beta testing this plugin in a real-world situation is the advent of new features.  Had I been developing the plugin in complete isolation, it&#8217;s quite likely these new features could have been implemented completely differently (or not at all).</p>
<p>There are several little enhancements and optimizations all over, but there are two new features that I believe have the most impact:</p>
<h3>Content Types</h3>
<p>Different types of content have different attributes.  While most content types share some attributes (i.e. title, main content text, categories, etc.), they often diverge from each other in their &#8220;supporting&#8221; attributes (aka metadata).  In the case of <a href="http://cinemaparadise.org">Cinema Paradise</a>, a film would have a certain set of metadata (director, length, country, etc.), while an event would have completely different set of metadata (time/date, location, etc.).</p>
<p>For a site needing to manage several different content types, there are two important questions:</p>
<ul>
<li>How is the metadata added to a post (and how is it stored)?</li>
<li>How is the metadata displayed?</li>
</ul>
<h4>Adding metadata to a post</h4>
<p>Generally, additional metadata is added to a post via custom fields and stored in the <code>wp_postmeta</code> table.  When you write a new post, simply fill in the appropriate custom fields (or add new ones), and you&#8217;re good to go.  This is fine for blog sites (where blog posts are the only content type), but for a content-heavy site where several different types of content are added regularly (articles, blog posts, etc.), this just isn&#8217;t acceptable.  Not only would a large list of custom fields be disorganized and hard to manage, but on a site with multiple users (each of whom may only need to work with certain content types), there is a good chance that mistakes will be made (e.g. typing metadata into the wrong custom field, etc.).</p>
<p>To make the creation and management of different content types simple and effective, the following functionality was (or will be) introduced into the plugin:</p>
<ul>
<li><strong>Add new content types</strong></li>
<p>Users are able to create new content types and define its attributes.  For each attribute, users may define the different characteristics such as data type, default values, etc.  Some examples of data type are:</p>
<ul>
<li>Date</li>
<li>Address</li>
<li>Phone Number</li>
<li>Database Lookup &#8211; (Creates a drop-down list of values fetched from the DB.  Used mostly to create relationships with other content types)</li>
<li>File Upload &#8211; (image/video uploads, etc.)</li>
</ul>
<p>The order and layout of the content type&#8217;s attributes can also be set.<br />
As an example, three content types from the Cinema Paradise site were &#8220;Director&#8221;, &#8220;Film&#8221;, and &#8220;Event&#8221;.  Here is a breakdown of each content type:</p>
<p><strong>Director</strong></p>
<ul>
<li>Name &#8211; Plain Text</li>
<li>Country &#8211; DB Lookup (List of Countries)</li>
</ul>
<p><strong>Film</strong></p>
<ul>
<li>Title &#8211; Post Title</li>
<li>Description &#8211; Post Content</li>
<li>Country &#8211; DB Lookup (List of Countries)</li>
<li>Director &#8211; DB Lookup (Items matching &#8220;Director&#8221; content type)</li>
<li>Genre(s) &#8211; Post Categories</li>
</ul>
<p><strong>Event</strong></p>
<ul>
<li>Event Title &#8211; Post Title</li>
<li>Event Description &#8211; Post Content</li>
<li>Start Time &#8211; Date</li>
<li>End Time &#8211; Date</li>
<li>Location &#8211; DB Lookup (Items matching &#8220;Location&#8221; content type)</li>
</ul>
<li><strong>Select content type for a post</strong></li>
<p>Once a content type has been created, it may be selected from a drop-down list in the Write Post form when creating or editing a post.  When a content type is selected, a form containing a field for each of the content type&#8217;s attributes will appear below the post content text box.  The user can then fill in this form with the appropriate metadata.</p>
<p>Each field in the form is not just a simple text box either.  A specially formatted form field will be displayed depending on the data type for each attribute.  For instance, a date field will have a field where a date (month/day/year) may be entered, along with a popup calendar for quick and easy date selection, and an address data type will have text fields for Street, City, State, Zipcode, and Country data to be entered.</p>
<p>This makes it simple to enter metadata for different content types, and because only the form fields necessary for that content type are displayed, the likelihood of user-error is greatly minimized.
</ul>
<h5>A note on metadata storage</h5>
<p>For the first implementation of this feature on Cinema Paradise&#8217;s site, a new table is created for each content type.  Since there were a finite amount of different content types to manage, I felt this was the best solution (faster/more specific queries, etc.).  However, I am currently reevaluating the implementation of how metadata is stored to best accommodate the creation of an unlimited number of different content types.  </p>
<h4>Displaying metadata for a post</h4>
<h5>Template Hierarchy</h5>
<p>Once a post has been assigned a content type, the focus now moves onto how to display this extra data.  First, when creating a new content type, a default template may be defined.  This template will be used if no templates have been set for a content type in the template directory.  If a template for a content type has been defined in the template directory, it will override the default template.  Currently, content type templates are defined by creating a file with the same name as the content type (this may change in the future to better differentiate content type template files from other template files).  Furthermore, content type templates may be defined on a per-section basis.  This means that content of a specific type (e.g. an article or an event) can be made to look different from one section to another.  Again, if a section-specific content type template is present, it will override both the global content type template file and the default content type template (only for posts in that section, of course).</p>
<h5>Custom Template Tags (Conceptual)</h5>
<p>Currently, metadata may be displayed simply by inserting <code>$post->attribute-name</code> into a template.  This works and is quite simple, but I would like to align the display of a post&#8217;s metadata with the main data of a post which can be displayed using template tags such as <code>the_title()</code>, <code>the_content()</code>, etc.  So for an event, a user could create template tags such as <code>event_location()</code>, <code>event_start()</code>, and <code>event_end()</code>.</p>
<p>Honestly, I don&#8217;t know whether this is practical to implement, or if it is even possible.  I need to look into this more.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-new-features-part-1-content-types/"> WordPress as CMS &#8211; New Features Part 1: Content Types</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on November 26, 2006 02:52pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-new-features-part-1-content-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; First Implementation</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-first-implementation-and-new-features/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-first-implementation-and-new-features/#comments</comments>
		<pubDate>Sun, 26 Nov 2006 23:09:30 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-first-implementation-and-new-features/</guid>
		<description><![CDATA[Development has continued steadily on the CMS plugin for WordPress. I am currently beta testing it on some projects to help me better develop this plugin for real-world use. The first of these projects is a site for an international film festival called Cinema Paradise. So what did the CMS plugin do for the site? ...]]></description>
			<content:encoded><![CDATA[<p>Development has continued steadily on the CMS plugin for WordPress.  I am currently beta testing it on some projects to help me better develop this plugin for real-world use.  The first of these projects is a site for an international film festival called <a href="http://cinemaparadise.org" title="External Link to http://cinemaparadise.org">Cinema Paradise</a>.</p>
<p>So what did the CMS plugin do for the site?</p>
<ul>
<li>Logical/Hackable Permalinks &#8211; <code><a href="http://cinemaparadise.org/films" title="External Link to http://cinemaparadise.org/films">http://cinemaparadise.org/films</a></code> lists all the films, while <code><a href="http://cinemaparadise.org/films/lady-vengence" title="External Link to http://cinemaparadise.org/films/lady-vengence">http://cinemaparadise.org/films/lady-vengence</a></code> displays the details of one of the films in the festival (Lady Vengeance)</li>
<li>Simple Section Creation &#8211; As easy as creating a page or a post in WordPress (Actually, there are two ways to do it, and one way is even <em>simpler</em> than adding a page or post)</li>
<li>Easily add content to sections &#8211; When writing a post, simply select the section the post should belong to via a drop-down menu (in the post form sidebar).</li>
</ul>
<p>Other features, such as Section-specific RSS feeds, tags, and categories are available, but the client chose not to use them.  But they are still there.  For example:<br />
<a href="http://cinemaparadise.org/films/feed" title="Sample RSS feed URL for Cinema Paradise">http://cinemaparadise.org/films/feed</a></p>
<p>Next Step: Roll the additions (i.e. new features) and optimizations gained from working on this site back into the plugin itself.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-first-implementation-and-new-features/"> WordPress as CMS &#8211; First Implementation</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on November 26, 2006 01:09pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-first-implementation-and-new-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; File Management</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-file-management/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-file-management/#comments</comments>
		<pubDate>Sat, 16 Sep 2006 03:50:10 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-file-management/</guid>
		<description><![CDATA[Things have gotten a bit busy around here as of late, but I&#8217;m still working on building a more efficient interface for managing content. I have eschewed WordPress&#8217; default single-column interface for a more &#8220;explorer-like&#8221; two-pane file manager. The left pane will list the hierarchy of Sections. When a section is selected in the left ...]]></description>
			<content:encoded><![CDATA[<p>Things have gotten a bit busy around here as of late, but I&#8217;m still working on building a more efficient interface for managing content.  I have eschewed WordPress&#8217; default single-column interface for a more &#8220;explorer-like&#8221; two-pane file manager.  The left pane will list the hierarchy of Sections.  When a section is selected in the left pane, the posts in that section will be displayed in the right pane.  I think this works much better than paginating the listing of posts independently for each section, as that can get quite messy real quick-like.</p>
<p>Ultimately, I would like to integrate drag/drop functionality to for moving files from one section to another.  However, to keep things simple initially, it&#8217;s simply going to be form-based </p>
<ol>
<li>select the posts</li>
<li>select the section to move the posts to</li>
<li>click submit</li>
</ol>
<p>I&#8217;ll post an screenshot of the interface once I get it working.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-file-management/"> WordPress as CMS &#8211; File Management</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on September 15, 2006 05:50pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-file-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lab &#8250; WordPress as CMS &#8211; Interface Design</title>
		<link>http://archetyped.com/lab/wordpress-as-cms-interface-design/</link>
		<comments>http://archetyped.com/lab/wordpress-as-cms-interface-design/#comments</comments>
		<pubDate>Sat, 02 Sep 2006 23:17:04 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http:/archetyped.com/blog/wordpress-as-cms-interface-design/</guid>
		<description><![CDATA[While the interface I&#8217;ve built may work fine for small sites, I realize that it would not work so well with sites that have a lot of content. For sites with large amounts of content, pagination would be pretty necessary, as would a way to filter what posts are displayed. I&#8217;ve started thinking about how ...]]></description>
			<content:encoded><![CDATA[<p>While the interface I&#8217;ve built may work fine for small sites, I realize that it would not work so well with sites that have a lot of content.  For sites with large amounts of content, pagination would be pretty necessary, as would a way to filter what posts are displayed.</p>
<p>I&#8217;ve started thinking about how to create an interface that will work equally well for small sites and content-heavy sites alike.<br />
Here&#8217;s a mockup of what I&#8217;ve got after working on it a bit this morning:<br />
<a class="imagelink" title="CMS Interface Mockup" href="http://www.archetyped.com/wp-content/uploads/2006/09/wp-cms_menu_test.gif"></a></p>
<div id="attachment_167" class="wp-caption alignnone" style="width: 160px"><a href="http://archetyped.com/wp-content/uploads/2006/09/wp-cms_menu_test.gif"><img class="size-thumbnail wp-image-167 " title="wp-cms_menu_test" src="http://archetyped.com/wp-content/uploads/2006/09/wp-cms_menu_test-150x150.gif" alt="Content Management UI" width="150" height="150" /></a><p class="wp-caption-text">Content Management UI</p></div>
<p>For comparison, the interface as it is now:</p>
<div id="attachment_169" class="wp-caption alignnone" style="width: 160px"><a href="http://archetyped.com/wp-content/uploads/2006/09/cms_site_content_2006-08-30.gif"><img class="size-thumbnail wp-image-169" title="cms_site_content_2006-08-30" src="http://archetyped.com/wp-content/uploads/2006/09/cms_site_content_2006-08-30-150x150.gif" alt="Current UI" width="150" height="150" /></a><p class="wp-caption-text">Current UI</p></div>
<p>Basically, I&#8217;ve added some filtering options at the top, as well as display options for each section.  I think it starts to look too busy when the options for each section are displayed, but I think it&#8217;s really important that the options are at a per-section level so that you can flip through the posts for a single section without affecting what the other sections are displaying.</p>
<p>Also, listing of the content is currently table-based (to keep in line with WordPress&#8217; default Page/Post listing interface), but think I might move to a <code>&lt;div&gt;</code>-based layout for more flexibility.</p>
<p><a href="http://archetyped.com/lab/wordpress-as-cms-interface-design/"> WordPress as CMS &#8211; Interface Design</a> was originally published on <a href="http://archetyped.com">Archetyped</a> on September 2, 2006 01:17pm</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/wordpress-as-cms-interface-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
