<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>GraffitiCMS Tips</title><link>http://graffiticmstips.com/</link><description>Learn how to use GraffitiCMS</description><generator>Graffiti CMS 1.0 (build 1.0.1.963)</generator><lastBuildDate>Wed, 29 Apr 2009 17:49:06 GMT</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/GraffitiCMSTips" type="application/rss+xml" /><item><title>Displaying a Featured Post on the Home Page</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/Y7B_UQTqVXE/</link><pubDate>Wed, 29 Apr 2009 17:49:06 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/displaying-a-featured-post-on-the-home-page/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;A common need when using Graffiti CMS is to display a single post on the home page.&amp;nbsp; Graffiti CMS provides has a featured post flag that can be set so that the Content Management System knows which post is the currently featured post.&amp;nbsp; This is a quick and easy way to display a single specific post on the home page.&amp;nbsp; Keeping in mind that only one post can be featured at a time.&lt;/p&gt;
&lt;p&gt;The following code demonstrates one method of displaying the featured post.&amp;nbsp; Disclaimer:&amp;nbsp; There might be a better way to handle this, but this is the method that I have used in the past and I haven't had a reason to search for a better method. &lt;br /&gt;
&lt;br /&gt;
Place the following code in the index.view file (or&amp;nbsp;any .view file&amp;nbsp;where&amp;nbsp;applicable)&lt;/p&gt;
&lt;p&gt;#set($post = $data.Featured())&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;ul class=&amp;quot;post-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class=&amp;quot;post-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2 class=&amp;quot;post-content-title&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$post.Url&amp;quot; title=&amp;quot;$post.Title&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;$post.Title&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;post-content-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if ($post.ImageUrl != &amp;quot;&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;img style=&amp;quot;float: left; padding: 0px 10px 2px 0px;&amp;quot; src='$macros.Link($post.ImageUrl)' /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;
#end&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/Y7B_UQTqVXE" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/displaying-a-featured-post-on-the-home-page/</feedburner:origLink></item><item><title>Displaying Search Results in a Theme</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/6O8SiMVpjf8/</link><pubDate>Wed, 20 Aug 2008 03:51:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/displaying-search-results-in-a-theme/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;When modifying a theme, one easy to overlook element is the search function.&amp;nbsp; The search function populates the $posts (list) &lt;a href="http://dev.graffiticms.com/designer/chalk-extensions/standard-chalk-items/"&gt;standard chalk item&lt;/a&gt; for the search page.&amp;nbsp; Thus, all that is needed is to simply loop through the $posts list using the foreach syntax to display each post.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, some themes may not want to display a list of all posts, on the home page, for example.&amp;nbsp;&amp;nbsp; The conditional logic for the search would then look something like the following:&lt;/p&gt;
&lt;p&gt;#if($where == &amp;quot;search&amp;quot;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($post in $posts)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$post.Url&amp;quot; title=&amp;quot;$post.Title&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;$post.Title&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;/p&gt;
&lt;p&gt;#else&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #set($post = $data.Featured())&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Title&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;#end&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/6O8SiMVpjf8" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/displaying-search-results-in-a-theme/</feedburner:origLink></item><item><title>Graffiti Client API - Category List</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/mznV6SiVdPw/</link><pubDate>Thu, 14 Aug 2008 13:16:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/graffiti-client-api-category-list/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>4</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Graffiti CMS includes a library in the Graffiti download called Client API, which can be found in the Utility directory.&amp;nbsp; The Client API can be used to send or retrieve data from a Graffiti installation.&amp;nbsp; This tip provides the code to download a list of categories from a Graffiti CMS site.&amp;nbsp; Note that the username/password and url will need to be modified.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
GraffitiService gs = new GraffitiService(&amp;quot;admin&amp;quot;, &amp;quot;password&amp;quot;, &amp;quot;http://localhost/api&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;
{&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PagedList&amp;lt;Category&amp;gt; plc = gs.Categories.Get(new NameValueCollection());&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(Category c in plc)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(c.Name);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;catch (GraffitiServiceException gse)&lt;br /&gt;
{ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(gse.Message);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/mznV6SiVdPw" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/graffiti-client-api-category-list/</feedburner:origLink></item><item><title>Chalk Plugin to Respond to a Form Post</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/lv6t_iSUK6E/</link><pubDate>Wed, 30 Jul 2008 20:35:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/chalk-plugin-to-respond-to-a-form-post/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>9</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;The previous tip demonstrated how to create a form in a Graffiti post.&amp;nbsp; The next step is to respond to that event in some way or another.&amp;nbsp; This post will demonstrate one way to handle an event from a form post using a Graffiti plugin.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class PostLinkButton : GraffitiEvent&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override string Name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;Form Post&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override string Description&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;This plug-in reacts to a Form Post Event.&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void Init(GraffitiApplication ga)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ga.RenderPostBody += new RenderPostBodyEventHandler(ga_RenderPostBody);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void ga_RenderPostBody(StringBuilder sb, PostEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (HttpContext.Current.Request.Form[&amp;quot;__HiddenVariable&amp;quot;] != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(&amp;quot;Form Value (First Name): &amp;quot; + HttpContext.Current.Request.Form[&amp;quot;FirstName&amp;quot;]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/lv6t_iSUK6E" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/chalk-plugin-to-respond-to-a-form-post/</feedburner:origLink></item><item><title>Chalk Extension to Create a Form</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/YRYZl0v8c4A/</link><pubDate>Mon, 21 Jul 2008 14:57:09 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/chalk-extension-to-create-a-form/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>4</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;If you want to display a form element inside of a Graffiti CMS page, you can render it using an extension, widget, or plugin.&amp;nbsp; This tip will demonstrate how to utilize an extension to display a form.&lt;/p&gt;
&lt;p&gt;[Chalk(&amp;quot;customForm&amp;quot;)]&lt;br /&gt;
public class CustomForm&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public string Write()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var sb = new StringBuilder();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.AppendFormat(&amp;quot;&amp;lt;form method='post' name='form' action='{0}'&amp;gt;&amp;quot;, HttpContext.Current.Request.Url);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.AppendLine(&amp;quot;&amp;lt;input type='text' name='textbox1' /&amp;gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.AppendLine(&amp;quot;&amp;lt;/form&amp;gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return sb.ToString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;Build the above code into a .dll and copy it into your Graffiti CMS bin directory.&amp;nbsp; Then call the code in a .view file (index,layout,post) as customForm.Write().&amp;nbsp; If you have done everything correctly you will now see a form on your page(s).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/YRYZl0v8c4A" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/chalk-extension-to-create-a-form/</feedburner:origLink></item><item><title>Filter Content Using Roles</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/HIe7VR0xoXQ/</link><pubDate>Fri, 27 Jun 2008 17:22:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/filter-content-using-roles/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;If you want to display content only to users in a certain role (i.e. Contributors, Editors, Managers) you can add the following code to the appropriate view file.&lt;/p&gt;
&lt;p&gt;#if( $user.Roles.Contains(&amp;quot;gManager&amp;quot;) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Manager&lt;br /&gt;
#else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Someone Else&lt;br /&gt;
#end&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/HIe7VR0xoXQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/filter-content-using-roles/</feedburner:origLink></item><item><title>Display a List of Posts From a Category</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/k8jSY06Lji4/</link><pubDate>Tue, 17 Jun 2008 17:40:26 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/display-a-list-of-posts-from-a-category/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;This has been posted several times on the support forums but I want to reproduce it here since it seems to be a common need when building a new site using Graffiti CMS.&amp;nbsp; At least one page will probably need to display a list of posts from an arbitrary category.&amp;nbsp; The chalk code that you need to insert into the appropriate view file is as follows:&lt;/p&gt;
&lt;p&gt;#set($categoryposts = $data.PostsByCategory(&amp;quot;Arbitrary Category&amp;quot;, 10))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($categorypost in $categoryposts)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $categorypost.Title :: $categorypost.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;/p&gt;
&lt;p&gt;Also, if you want to use the category for the current category page being displayed you can use the category name from the provided $category variable as follows:&lt;br /&gt;
&lt;br /&gt;
#set($categoryposts = $data.PostsByCategory($category.Name, 10))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($categorypost in $categoryposts)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $categorypost.Title :: $categorypost.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/k8jSY06Lji4" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/display-a-list-of-posts-from-a-category/</feedburner:origLink></item><item><title>Creating Packages in Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/lUCHeFyZ8S8/</link><pubDate>Mon, 19 May 2008 16:43:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/creating-packages-in-graffiti-cms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;In the upcoming release of Graffiti CMS you can create packages that will allow you to distribute your widgets/plugins/extensions in a much easier way.&amp;nbsp; Currently, if you create a widget that uses external files you must create a script that your end users can run to copy the files, or you have to ask them to manually copy files to specified folders.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That has changed.&amp;nbsp; Now you can create a new type of distributable code called a package.&amp;nbsp; The rest of the details can be found on &lt;a href="http://dev.graffiticms.com/developer/core/creating-your-own-package/"&gt;dev.graffiticms.com&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/lUCHeFyZ8S8" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/creating-packages-in-graffiti-cms/</feedburner:origLink></item><item><title>List All Categories on the Home Page</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/MH13W5XsZq8/</link><pubDate>Fri, 09 May 2008 18:10:37 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/list-all-categories-on-the-home-page/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;If you would like to list each category on your home page this can be done very easily with the code below.&amp;nbsp; One important note about this code is that it will not list sub-categories, you'll&amp;nbsp; have to write a few extra lines of Chalk to get the sub-categories.&lt;/p&gt;
&lt;p&gt;#set($allCategories = $data.Categories())&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; #foreach($category in $allCategories)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $category.Name :: $category.Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If some of your categories do not have a Body you will want to use $!category.Body to keep &amp;quot;category.Body&amp;quot; from printing on the page.&amp;nbsp; Additionally, to include this on the home page and no other page, this code needs to be added to your index.view file.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/MH13W5XsZq8" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/list-all-categories-on-the-home-page/</feedburner:origLink></item><item><title>Free Graffiti CMS Themes</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/zpPYMja2zKM/</link><pubDate>Wed, 30 Apr 2008 18:24:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/free-graffiti-cms-themes/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;One of &lt;a href="http://graffiticmstips.com/tips/graffiticms/creating-a-theme-for-graffiti-cms/"&gt;the first tips on creating themes&lt;/a&gt; referenced &lt;a href="http://devcowsoftware.com"&gt;devcowsoftware.com&lt;/a&gt;, however they have since added a theme site which implements the &lt;a href="http://codeplex.com/GraffitiExtras"&gt;GraffitiExtras&lt;/a&gt; Theme Explorer widget/plugin.&amp;nbsp; This allows you to preview the theme before you download it.&amp;nbsp; They are also accepting theme designs to add to their growing list of free themes.&lt;/p&gt;
&lt;p&gt;Their new Graffiti Theme site is located at &lt;a href="http://themes.devcowsoftware.com/"&gt;http://themes.devcowsoftware.com/&lt;/a&gt;.&amp;nbsp; Check it out, and if you have developed a theme and would like to share it, email support@devcow.com.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/zpPYMja2zKM" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/free-graffiti-cms-themes/</feedburner:origLink></item><item><title>Creating an Event Calender in Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/uGFDynrJT88/</link><pubDate>Fri, 25 Apr 2008 04:16:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/creating-an-event-calender-in-graffiti-cms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;So you're happy with Graffiti CMS but now you want to create a pseudo event calender using a Graffiti post to hold the event details.&amp;nbsp; This particular task is demonstrated very well in the training theme that can be downloaded for free through the Graffiti CMS control panel.&amp;nbsp; The setup requires the use of custom fields and some custom chalk code in your theme.&amp;nbsp; Following these steps will get you started:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Add two custom fields (&lt;a href="http://graffiticms.com/support/advanced-options/custom-fields/"&gt;more info&lt;/a&gt;) and assigning them to the events category (&lt;a href="http://graffiticms.com/support/advanced-options/assigning-a-custom-field-to-a-category/"&gt;more info&lt;/a&gt;).&amp;nbsp; The custom fields are named Location and Date&lt;/li&gt;
    &lt;li&gt;Add something like the following code to your layout.view, in the training theme this is home.layout.view&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach ($post in $data.PostsByCategory(&amp;quot;Upcoming Events&amp;quot;, 3))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$post.Url&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;img src=&amp;quot;$post.ResolvedImageUrl&amp;quot; width=&amp;quot;280&amp;quot; height=&amp;quot;110&amp;quot; class=&amp;quot;attach&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Title&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Custom(&amp;quot;Location&amp;quot;) | $post.Custom(&amp;quot;Date&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.PostBody&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/uGFDynrJT88" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/creating-an-event-calender-in-graffiti-cms/</feedburner:origLink></item><item><title>Graffiti CMS IRC Room</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/YLvY42mPBrU/</link><pubDate>Mon, 21 Apr 2008 19:16:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/graffiti-cms-irc-room/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;If you've searched high and low for the answer to a problem and you've been through every Graffiti CMS tip on the Internet, there is one more place you can look.&amp;nbsp; The Graffiti CMS IRC channel.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Host: irc.freenode.net&lt;/li&gt;
    &lt;li&gt;Room: #graffiticms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As mentioned &lt;a href="http://graffiticms.com/blog/irc/"&gt;here&lt;/a&gt;, it is better to use the support forum for general questions but if you're really stuck it's an option.&amp;nbsp; Here are some helpful tips if you do decide to join the channel:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Don't Be Demanding:&amp;nbsp; No one is being paid to answer your questions in the IRC channel, it's a volunteer effort&lt;/li&gt;
    &lt;li&gt;Just Ask: Don't ask if you can ask the question, just ask the question&lt;/li&gt;
    &lt;li&gt;Do Be Patient:&amp;nbsp; Don't expect an immediate response.&amp;nbsp; Everyone in the channel is working (as opposed to simply watching the IRC chat window all day), ask a question and wait for it... wait for it...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you follow those rules your certain to get an answer to your question, and probably a pretty good one.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/YLvY42mPBrU" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/graffiti-cms-irc-room/</feedburner:origLink></item><item><title>Drop Down Menu Navigation in Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/6UDeCUmguGk/</link><pubDate>Sat, 19 Apr 2008 23:23:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/drop-down-menu-navigation-in-graffiti-cms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;There have been several requests for a drop down menu navigation implemented in Graffiti CMS.&amp;nbsp; Thankfully the developers at Telligent created a very nice theme that included code for a drop down menu navigation.&amp;nbsp; The navigation code included in the Training theme (a free download) is the focus of this tip.&lt;/p&gt;
&lt;p&gt;To get started, download the training theme by going to your control panel -&amp;gt; presentation -&amp;gt; themes -&amp;gt; search online themes -&amp;gt; training.&amp;nbsp; This will prompt you to download a the training theme as a .zip file. We need to first download the theme because we will be utilizing the css and javascript provided in the theme to implement the drop down menu.&lt;/p&gt;
&lt;p&gt;Now, create a new theme and use the following code as your layout.view (please note, this code is for demonstration purposes and only generates navigation code, it does not display any other content):&lt;/p&gt;
&lt;p&gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
$macros.Head()&lt;br /&gt;
$macros.Style(&amp;quot;screen.css&amp;quot;,&amp;quot;screen&amp;quot;)&lt;br /&gt;
$macros.JavaScript(&amp;quot;utils/navigation.js&amp;quot;);&lt;br /&gt;
&amp;lt;/head&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;navigation&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($link in $macros.NavigationLinks())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #set($cat = $data.GetCategory($link.CategoryId))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #if ($count == 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$link.Url&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span&amp;gt;$link.Text&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$link.Url&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span&amp;gt;$link.Text&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #if ($cat.HasChildren)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach ($child in $cat.Children)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$child.Url&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span&amp;gt;$child.Name&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #end&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- / navigation --&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/p&gt;
&lt;p&gt;You'll notice the code uses two files, screen.css and utils/navigation.js.&amp;nbsp; Copy those files into your theme via ftp and you will have a fully functional drop down navigation / sub-navigation menu system.&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/6UDeCUmguGk" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/drop-down-menu-navigation-in-graffiti-cms/</feedburner:origLink></item><item><title>Using Custom Fields in Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/inme8tGn9-g/</link><pubDate>Fri, 18 Apr 2008 12:48:27 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/using-custom-fields-in-graffiti-cms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>3</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;In this tip you will learn about custom fields in Graffiti CMS. Custom fields can be used in many ways, but in this tip, you will learn how to set a custom title for your pages.&amp;nbsp; To create a custom field, in the admin panel, go to Site Options -&amp;gt; Custom Fields, let's name it SEO-Title.&lt;/p&gt;
&lt;p&gt;Once you have created the custom field, it will be available for each of your posts. Notice the screen captures below. There is a new tab, Custom Fields, click on that tab and you will see how you can specify a unique title for each post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://img81.imageshack.us/img81/9825/postes9.jpg"&gt;&lt;img width="300" height="256" border="0" src="http://img81.imageshack.us/img81/9825/postes9.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://img213.imageshack.us/img213/4673/customfieldxk1.jpg"&gt;&lt;img width="300" height="287" border="0" src="http://img213.imageshack.us/img213/4673/customfieldxk1.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After you have setup a custom title add this code in your layout.view:&lt;/p&gt;
&lt;p&gt;&amp;lt;title&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #if($macros.IsNotNull($post.Custom(&amp;quot;SEO-Title&amp;quot;)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $post.Custom(&amp;quot;SEO-Title&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $title&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;lt;/title&amp;gt;&lt;/p&gt;
&lt;p&gt;A slightly different way to accomplish the task is to make the change in post.view as follows:&lt;/p&gt;
&lt;p&gt;#if($macros.IsNotNull($post.Custom(&amp;quot;SEO-Title&amp;quot;)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; #set($title = $post.Custom(&amp;quot;SEO-Title&amp;quot;))&lt;br /&gt;
#end &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/inme8tGn9-g" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/using-custom-fields-in-graffiti-cms/</feedburner:origLink></item><item><title>Graffiti Extras - Theme Explorer</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/urE46IBZ8Ok/</link><pubDate>Thu, 17 Apr 2008 18:13:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/graffiti-extras-theme-explorer/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;&lt;a href="http://nayyeri.net/"&gt;Keyvan&lt;/a&gt; has done a great amount of work contributing very helpful plugins and widgets for Graffiti CMS.&amp;nbsp; The latest version of &lt;a href="http://www.codeplex.com/GraffitiExtras/"&gt;Graffiti Extras&lt;/a&gt;, released today , includes the Theme Explorer plugin/widget.&amp;nbsp; This tip will help you understand how you can utilize this new package that has been added to the Graffiti Extras project.&lt;/p&gt;
&lt;p&gt;First, download the latest release of Graffiti Extras from &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=GraffitiExtras&amp;amp;ReleaseId=9989"&gt;here&lt;/a&gt; (download the binary version). Next, extract the zip file and copy the GraffitiExtras.dll file from the uncompressed folder to the bin directory of your website.&lt;/p&gt;
&lt;p&gt;Now you need to enable the Theme Explorer plugin by going to Site Options -&amp;gt; Plugins -&amp;gt; Find Theme Explorer and click &amp;quot;Enable&amp;quot; in the admin menu.&amp;nbsp; The final step is to add the Theme Explorer widget to your sidebar, again via the admin menu Presentation -&amp;gt; Widgets -&amp;gt; Find Theme Explorer and add it to the left or right sidebar (Don't forget to add a title to the widget).&lt;/p&gt;
&lt;p&gt;Once the plugin is enabled and the widget is configured, all of your installed themes will now be displayed as links in your sidebar.&amp;nbsp; When a user clicks on a link the displayed theme will change and they can view your site in any of the themes you have installed or created.&lt;/p&gt;
&lt;p&gt;This is particularly useful for theme designers that wish to give users a live preview of a theme without installing multiple instances of Graffiti CMS.&amp;nbsp; Please give this package an evaluation and leave me your feedback and a link if you install this on your Graffiti website.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&amp;nbsp; &lt;a href="http://themes.devcowsoftware.com/"&gt;http://themes.devcowsoftware.com/&lt;/a&gt; is using the Theme Explorer plugin/widget to display some very nice themes that have been converted to Graffiti CMS&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/urE46IBZ8Ok" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/graffiti-extras-theme-explorer/</feedburner:origLink></item><item><title>Searching Uncategorized Posts</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/gW05R4PDa3g/</link><pubDate>Mon, 14 Apr 2008 15:33:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/searching-uncategorized-posts/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;In Graffiti's default installation settings, uncategorized posts are filtered from the home page.&amp;nbsp; This also has the affect of excluding these items from the search engine.&amp;nbsp;&amp;nbsp; Generally speaking, this probably won't be an issue since most posts will be categorized for navigational purposes.&amp;nbsp; However, you may have a post that you want users to be able to find via search, but you also would like the post to remain uncategorized.&lt;/p&gt;
&lt;p&gt;In your web.config, you can modify the following value from &amp;quot;true&amp;quot; to &amp;quot;false&amp;quot; in order to allow your uncategorized posts to be searched:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Cateogry Filter--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add key=&amp;quot;Graffiti:Data:FilterUncategorizedPostsFromLists&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The side affect of changing this key value is that your uncategorized posts will now show on your home page list. However, this can be easily resolved with a few lines of chalk code to re-filter the posts.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/gW05R4PDa3g" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/searching-uncategorized-posts/</feedburner:origLink></item><item><title>Creating a Two Level Tab Navigation</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/w0gobNSezk4/</link><pubDate>Fri, 11 Apr 2008 18:35:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/creating-a-two-level-tab-navigation/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>3</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Building a two level tab navigation system, like the one that can be found on &lt;a href="http://graffiticms.com"&gt;GraffitiCMS.com&lt;/a&gt; (Click Support-&amp;gt;Forums) is a common request on the Graffiti support forums.&amp;nbsp; The tab navigation relies heavily on css styles, but that is not my focus in this tip and I will not be providing any of the style sheet code.&amp;nbsp;&amp;nbsp; However, there is a bit of custom chalk code needed to build in the second level of navigation and that code is the focus of this tip&lt;/p&gt;
&lt;p&gt;&amp;lt;div id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; #foreach($link in $macros.NavigationLinks())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if($category.HasChildren || $category.Parent.HasChildren)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li #if($link.text == $category.Name || $link.text == $category.Parent.Name ) class=&amp;quot;selectedli_parent&amp;quot; #end&amp;gt;&amp;lt;a href=&amp;quot;$link.Url&amp;quot;&amp;gt;$link.Text&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li #if($link.text == $category.Name || $link.text == $category.Parent.Name ) class=&amp;quot;selectedli&amp;quot; #else #if ($link.IsSelected) class=&amp;quot;selectedli&amp;quot; #end #end&amp;gt;&amp;lt;a href=&amp;quot;$link.Url&amp;quot;&amp;gt;$link.Text&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#if($category.HasChildren || $category.Parent.HasChildren)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;div id=&amp;quot;subnav&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($cat in $category.Children)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;$cat.Url&amp;quot;&amp;gt;$cat.Name&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #foreach($cat in $category.Parent.Children)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li #if($category.LinkName == $cat.LinkName) class =&amp;quot;selectedli&amp;quot; #end&amp;gt;&amp;lt;a href=&amp;quot;$cat.Url&amp;quot;&amp;gt;$cat.Name&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;bottom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;
#end&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In a future tip, I will be posting the entire GraffitiCMS.com theme which you will be able to download and customize.&amp;nbsp; The theme file will include the .css file for the two level navigation chalk code posted above.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/w0gobNSezk4" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/creating-a-two-level-tab-navigation/</feedburner:origLink></item><item><title>Looping Through a Widget Collection</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/t3eKw_soP6Y/</link><pubDate>Wed, 09 Apr 2008 05:25:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/looping-through-a-widget-collection/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Suppose that you have created three widgets in Graffiti CMS that you wish to display on all of your pages, with one exception.&amp;nbsp; On the home page you wish to only display two of the three widgets.&amp;nbsp; In order to accomplish this task you can get a list of the current widgets and display only two of them rather than all three.&lt;/p&gt;
&lt;p&gt;This would look something like the following snippet of Chalk code:&lt;/p&gt;
&lt;p&gt;#foreach($rw in $data.RightWidgets())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if($rw.Title != &amp;quot;Site Options&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $rw.Render(&amp;quot;&amp;lt;li class='widget'&amp;gt;&amp;quot;, &amp;quot;&amp;lt;h2&amp;gt;&amp;quot;, &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot;, &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #end&lt;br /&gt;
#end&lt;/p&gt;
&lt;p&gt;Here we are saying loop through all of the widgets in the right sidebar, but do not render the sidebar item which has a title of &amp;quot;Site Options&amp;quot;.&amp;nbsp; That's all there is to it!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/t3eKw_soP6Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/looping-through-a-widget-collection/</feedburner:origLink></item><item><title>Setting a Custom Favicon </title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/G5Lq274lfuM/</link><pubDate>Mon, 07 Apr 2008 16:48:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/setting-a-custom-favicon/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>1</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Once you have &lt;a href="http://jeftek.com/web/graffiticms/graffiti-tip-set-your-favicon/"&gt;created a favicon&lt;/a&gt;, you will need to upload the favicon.ico to your Graffiti CMS installation and place file in two locations to ensure that it is displayed properly throughout your site.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1. The Root folder of your website&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2. The \__utility\img folder off of your root site&lt;br /&gt;
&lt;br /&gt;
The 2nd place is used for the dynamically built pages of your posts since they do not use the root image.&lt;br /&gt;
&lt;br /&gt;
If after your replace the image, and you still see the original image, please be sure to clear your browsers cache as it might not pull the updated file right away.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/G5Lq274lfuM" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/setting-a-custom-favicon/</feedburner:origLink></item><item><title>Using the Advanced Editor</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/l-iIJa0zM_o/</link><pubDate>Mon, 07 Apr 2008 16:41:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/using-the-advanced-editor/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;There are two versions of the editor (advanced/basic) that can be used to create posts in Graffiti CMS.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Using a text editor (like notepad) find the file /graffiti-admin/posts/write/default.aspx and find the element called &amp;lt;GlowEditor:Editor and change the attribute toolbarset from simple to &amp;ldquo;Default&amp;rdquo;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img width="373" height="260" alt="" src="http://graffiticmstips.com/files/media/image/GCMS_DefaultEditor_2.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/l-iIJa0zM_o" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/using-the-advanced-editor/</feedburner:origLink></item><item><title>Storing Your Data in Graffiti CMS the Easy Way</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/4IA1wOMzlmI/</link><pubDate>Tue, 25 Mar 2008 20:27:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/storing-your-data-in-graffiti-cms-the-easy-way/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Customizing the basic installation of Graffiti CMS will probably require the use of additional database fields.&amp;nbsp; Using the Object Store is the easiest way to acomplish this task. To make use of the object store, follow the instructions in this tip:&lt;/p&gt;
&lt;p&gt;Add a reference to Graffiti.Core, make an object, mark the object serializable&lt;br /&gt;
&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyObject&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; private string _name;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; private string _description;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public string Name&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return _name; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _name = value; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public string Description&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return _description; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _description = value; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
instantiate and call Save..&lt;br /&gt;
&lt;br /&gt;
MyObject obj = new MyObject();&lt;br /&gt;
&lt;br /&gt;
ObjectManager.Save(obj, &amp;quot;MyObjectSettings&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
retrieve it later..&lt;br /&gt;
&lt;br /&gt;
ObjectManager.Get&amp;lt;MyObject&amp;gt;(&amp;quot;MyObjectSettings&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/4IA1wOMzlmI" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/storing-your-data-in-graffiti-cms-the-easy-way/</feedburner:origLink></item><item><title>Using www for Your Graffiti CMS Domain Name</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/NL3O6iU-zGI/</link><pubDate>Tue, 25 Mar 2008 19:54:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/using-www-for-your-graffiti-cms-domain-name/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;New installations of Graffiti CMS default to using just the domain name (&lt;a href="http://graffiticmstips.com/"&gt;http://graffiticmstips.com&lt;/a&gt;) for your site.&amp;nbsp; All requests to the domain as &lt;a href="http://www.graffiticmstips.com/"&gt;www.graffiticmstips.com&lt;/a&gt; will be redirected to the graffiticmstips.com site via a 301 redirect which is search engine friendly.&amp;nbsp;&amp;nbsp; There was a discussion on the GCMS forums as to whether it was a good/bad to have the www in the domain name which you can read &lt;a target="_blank" href="http://support.graffiticms.com/t/286.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But what if you want to use &lt;a href="http://www.graffiticmstips.com/"&gt;www.graffiticmstips.com&lt;/a&gt; because you feel it is the best possible address for your site?&amp;nbsp; It's a simple edit to the web.config file in your site:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--&lt;font size="2" color="#008000"&gt;Helps ensure good SEO and stops duplicate content. Many search engines treat www. and no www. as two seperate links. &lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;--&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;&lt;font size="2" color="#a31515"&gt;add&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt; &lt;/font&gt;&lt;font size="2" color="#ff0000"&gt;key&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Graffiti::RequireWWW&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt; &lt;/font&gt;&lt;font size="2" color="#ff0000"&gt;value&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;false&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#0000ff"&gt;&lt;strong&gt;to&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" color="#0000ff"&gt;&lt;font size="2" color="#0000ff"&gt;&lt;font color="#000000"&gt;&amp;lt;&lt;/font&gt;&lt;font size="2" color="#a31515"&gt;add&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt; &lt;/font&gt;&lt;font size="2" color="#ff0000"&gt;key&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;=&lt;/font&gt;&lt;font size="2" color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;Graffiti::RequireWWW&lt;/font&gt;&lt;font size="2" color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt; &lt;/font&gt;&lt;font size="2" color="#ff0000"&gt;value&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;=&amp;quot;true&lt;/font&gt;&lt;font size="2" color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;font size="2" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Now all requests to the short name will be re-directed to the www name for all of of your Graflinks.&amp;nbsp; Expect search engines to re-classify them as they are discovered as well.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/NL3O6iU-zGI" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/using-www-for-your-graffiti-cms-domain-name/</feedburner:origLink></item><item><title>Graffiti CMS Powered Blogs</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/fH_9JLIGEYQ/</link><pubDate>Mon, 24 Mar 2008 21:13:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/graffiti-cms-powered-blogs/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;So your interested in Graffiti CMS, but your not quite sure if it is for you.&amp;nbsp; This tip is to give you an idea of who is using Graffiti CMS and what kind of sites they have created.&amp;nbsp; This is not a comprehensive list, rather I tried to look for blogs and sites that used custom developed themes and a few of the standard themes as well.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jeftek.com/"&gt;http://jeftek.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://texasviking.com/"&gt; http://texasviking.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://trefry.net/"&gt; http://trefry.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://richmercer.com/"&gt; http://richmercer.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://simpable.com/"&gt; http://simpable.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://jasona.net/"&gt; http://jasona.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://scottdock.com/"&gt; http://scottdock.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://randomtweets.com/blog/"&gt; http://randomtweets.com/blog/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ndepth.net/ "&gt; http://ndepth.net/ &lt;/a&gt;&lt;br /&gt;
&lt;a href="http://evolvingwe.com/"&gt; http://evolvingwe.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://evolvingwe.com/"&gt; http://graffiti.captaingeek.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://kevintunis.com/"&gt; http://kevintunis.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://healafrica.org/"&gt; http://healafrica.org/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://qgyen.net/"&gt; http://qgyen.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://mandown.co.nz/"&gt; http://mandown.co.nz/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://grrargh.com/"&gt; http://grrargh.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://nayyeri.net/"&gt; http://nayyeri.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogml.org/"&gt; http://blogml.org/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://subsonicproject.com/"&gt; http://subsonicproject.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://rick.reszler.org/graffiticms/"&gt; http://rick.reszler.org/graffiticms/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.jeffsandquist.com/"&gt; http://www.jeffsandquist.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://da-crystal.net/GCMS/"&gt; http://da-crystal.net/GCMS/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ryhoward.com/"&gt;http://ryhoward.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://myqly.com/"&gt; http://myqly.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://trustygamer.com/tg/home/"&gt; http://trustygamer.com/tg/home/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://microsoftmanager.com/"&gt; http://microsoftmanager.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://serkan.varoglu.net/"&gt; http://serkan.varoglu.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://kevinharder.com/"&gt; http://kevinharder.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.devcowsoftware.com/"&gt; http://www.devcowsoftware.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://terrimorton.com/"&gt; http://terrimorton.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.posterboys.org/"&gt; http://blog.posterboys.org/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://webgambit.com/blog/"&gt; http://webgambit.com/blog/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://graffitidev.com/"&gt; http://graffitidev.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://jkipk.com/graffiti/"&gt; http://jkipk.com/graffiti/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://beta.brandonleblanc.com/"&gt; http://beta.brandonleblanc.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://nicholasrayner.com/blog/"&gt; http://nicholasrayner.com/blog/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://graffiti.davestokes.net/"&gt; http://graffiti.davestokes.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://scottdock.com/"&gt; http://scottdock.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://joselema.com/"&gt; http://joselema.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.vistadb.net/blog/"&gt; http://www.vistadb.net/blog/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://brianreisman.com/"&gt; http://brianreisman.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://backtothewind.com/"&gt; http://backtothewind.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://mild.net/"&gt; http://mild.net/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://playingkeys.com/"&gt; http://playingkeys.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ianfnelson.com/"&gt; http://ianfnelson.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coders4charities.org/"&gt; http://coders4charities.org/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://baumannphoto.com/"&gt; http://baumannphoto.com/&lt;br /&gt;
&lt;/a&gt; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is also a good testimony of just how stable the Graffiti CMS version 1.0 release is for being such a new platform.&amp;nbsp; I'm also very sorry if I overlooked your site, but feel free to post a link in the comments if you have a Graffiti CMS powered site you would like to share with the community.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/fH_9JLIGEYQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/graffiti-cms-powered-blogs/</feedburner:origLink></item><item><title>Graffiti CMS Chalk Extension for Beginners</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/vKAzctyjamY/</link><pubDate>Fri, 21 Mar 2008 18:02:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/graffiti-cms-chalk-extension-for-beginners/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Writing Chalk Extensions is very simple.&amp;nbsp; As mentioned &lt;a href="http://graffiticms.com/support/advanced-options/extending-chalk/"&gt;here&lt;/a&gt;, to extend the functionality of Graffiti CMS you simply need to add a reference to Graffiti.Core.dll, add the Chalk Attribute to the class that you will be extending and put the compiled .dll in the bin directory of your web directory.&amp;nbsp; It is important to note that creating extensions implies that you are using Visual Studio or some other .net code compiling tool.&amp;nbsp;&amp;nbsp; A couple of other notes are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Only public methods are exposed.&lt;/li&gt;
    &lt;li&gt;Only public properties are exposed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a copy of a C# class file (ChalkExtensionBeta.cs) that I created.&amp;nbsp; This is a complete code sample that you can copy, paste, compile and test on your installation.&amp;nbsp; Before I paste the code sample I want to highlight some important aspects of the sample:&lt;/p&gt;
&lt;p&gt;First, notice the class attribute [Chalk(&amp;quot;ChalkExtensionsBeta&amp;quot;)].&amp;nbsp; Since I declared my attribute as ChalkExtensionsBeta when I want to use this code in layout.view, or any other .view file, I will access the functions enclosed by $ChalkExtensionsBeta.&amp;nbsp; Looking at the code below I have one function exposed in the chalk extension $ChalkExtensionsBeta.&amp;nbsp; Namely, AddCookie() which will add a cookie with the name and value that you specify.&amp;nbsp; Putting it all together, once you have compiled this code and copied the .dll file to your website's bin directory, you could use this in your layout.view file as follows:&lt;/p&gt;
&lt;p&gt;$ChalkExtensionsBeta.AddCookie(&amp;quot;CookieName&amp;quot;,&amp;quot;CookieValue&amp;quot;)&lt;/p&gt;
&lt;p&gt;That's all there is to it.&amp;nbsp; This is a very simple extension to get you started, but these extensions can be very complex when needed.&amp;nbsp; My final tip for creating Chalk Extensions is to be sure that someone else hasn't already developed the extensions you want to write.&amp;nbsp; There are two fantastic libraries on CodePlex, &lt;a href="http://www.codeplex.com/ChalkExtensions"&gt;ChalkExtensions&lt;/a&gt; and &lt;a href="http://www.codeplex.com/GraffitiExtras"&gt;GraffitiExtras&lt;/a&gt;, that have already started to build a collection of highly useful extensions.&amp;nbsp; Check these out first and search for other already developed extensions before you start writing your own.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;using Graffiti.Core;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Web;&lt;br /&gt;
&lt;br /&gt;
namespace Chalk.Extension&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [Chalk(&amp;quot;ChalkExtensionsBeta&amp;quot;)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; class ChalkExtensionsBeta&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void AddCookie(string cookieName, string cookieValue)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext context = HttpContext.Current;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.Response.Cookies.Add(new HttpCookie(cookieName, cookieValue));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/vKAzctyjamY" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/graffiti-cms-chalk-extension-for-beginners/</feedburner:origLink></item><item><title>Graffiti CMS Complete Macros List</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/AuKnNVW6XGU/</link><pubDate>Tue, 18 Mar 2008 14:38:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/reference/graffiti-cms-complete-macros-list/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/reference/">Reference</category><description>&lt;p&gt;&lt;strong&gt;Update:&amp;nbsp; Please see &lt;a href="http://dev.graffiticms.com/developer/chalk-extensions/chalk-extension-urls/"&gt;this link&lt;/a&gt; for the macro list and descriptions from Telligent.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a complete list of Macros from the $macros class for version 1.01:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;CategoryLink&lt;/li&gt;
    &lt;li&gt;CommentButton&lt;/li&gt;
    &lt;li&gt;CommentForm&lt;/li&gt;
    &lt;li&gt;CommentLink&lt;/li&gt;
    &lt;li&gt;CommentUrl&lt;/li&gt;
    &lt;li&gt;ContactButton&lt;/li&gt;
    &lt;li&gt;ContactForm&lt;/li&gt;
    &lt;li&gt;EditLink&lt;/li&gt;
    &lt;li&gt;Favicon&lt;/li&gt;
    &lt;li&gt;FormattedDate&lt;/li&gt;
    &lt;li&gt;FormattedTime&lt;/li&gt;
    &lt;li&gt;FullUrl&lt;/li&gt;
    &lt;li&gt;Gravatar&lt;/li&gt;
    &lt;li&gt;GravatarImage&lt;/li&gt;
    &lt;li&gt;Head&lt;/li&gt;
    &lt;li&gt;Image&lt;/li&gt;
    &lt;li&gt;IsInNavigation&lt;/li&gt;
    &lt;li&gt;IsNotNull&lt;/li&gt;
    &lt;li&gt;IsNull&lt;/li&gt;
    &lt;li&gt;JavaScript&lt;/li&gt;
    &lt;li&gt;LeftSideBar&lt;/li&gt;
    &lt;li&gt;Link&lt;/li&gt;
    &lt;li&gt;LoadThemeView&lt;/li&gt;
    &lt;li&gt;MetaTags&lt;/li&gt;
    &lt;li&gt;NavBar&lt;/li&gt;
    &lt;li&gt;NavigationLinks&lt;/li&gt;
    &lt;li&gt;Pager&lt;/li&gt;
    &lt;li&gt;Parse&lt;/li&gt;
    &lt;li&gt;RandomImage&lt;/li&gt;
    &lt;li&gt;Reflect&lt;/li&gt;
    &lt;li&gt;RightSideBar&lt;/li&gt;
    &lt;li&gt;RSD&lt;/li&gt;
    &lt;li&gt;RssAutodiscovery&lt;/li&gt;
    &lt;li&gt;SearchForm&lt;/li&gt;
    &lt;li&gt;SearchUrl&lt;/li&gt;
    &lt;li&gt;Style&lt;/li&gt;
    &lt;li&gt;SubNavBar&lt;/li&gt;
    &lt;li&gt;TagCloud&lt;/li&gt;
    &lt;li&gt;TagCloudUL&lt;/li&gt;
    &lt;li&gt;TagList&lt;/li&gt;
    &lt;li&gt;ThemeFile&lt;/li&gt;
    &lt;li&gt;TruncateHTML&lt;/li&gt;
    &lt;li&gt;ULCategories&lt;/li&gt;
    &lt;li&gt;ULPostsInCategory&lt;/li&gt;
    &lt;li&gt;ULRecentComments&lt;/li&gt;
    &lt;li&gt;ULRecentPosts&lt;/li&gt;
    &lt;li&gt;Variable&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/AuKnNVW6XGU" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/reference/graffiti-cms-complete-macros-list/</feedburner:origLink></item><item><title>Using Graffiti CMS Macros</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/lTq1loOX3u4/</link><pubDate>Tue, 18 Mar 2008 14:36:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/using-graffiti-cms-macros/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;Generally speaking, macros are a short piece of code that help you to easily change the appearance and layout of your site.&amp;nbsp; Technically speaking, macros are Chalk Extensions exposed in the Graffiti core that you can use to build or customize a theme.&amp;nbsp; While it is true that any of the &lt;a href="http://graffiticms.com/support/advanced-options/standard-chalk-items/"&gt;standard public Chalk items&lt;/a&gt;&amp;nbsp; (ie. $post.Body) can be considered &amp;quot;macros&amp;quot;, the tips discussed below are focused specifically on the functionality provided by the $macros class.&amp;nbsp; The $macros class contains helper methods and properties that are available on every page request.&amp;nbsp; Here are a few of the most common $macros that you will want to get familiar with:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;$macros.NavigationLinks() - This macro will return a list of navigation items that can be used to display parent and sub category navigation links.&amp;nbsp; (usage: #foreach($link in $macros.NavigationLinks()) ... #end)&lt;/li&gt;
    &lt;li&gt;$macros.IsNull() and $macros.IsNotNull() - These macros allow you to determine if an exposed Chalk variable is null or not null respectively.&amp;nbsp; These two functions are very handy for displaying content that is only displayed if a specific condition is met. (usage:&amp;nbsp; #if($macros.IsNotNull($post)) ... #end)&lt;/li&gt;
    &lt;li&gt;$macros.LeftSideBar() and $macros.RightSideBar() - These macros are used to render left and right sidebar widgets.&amp;nbsp; If your theme is going to support widgets from the control panel you will need to include one or both of these macros in your theme (usage: $macros.RightSideBar(&amp;quot;%{beforeWidget='&amp;lt;li class=\&amp;quot;widget\&amp;quot;&amp;gt;', afterWidget='&amp;lt;/li&amp;gt;', beforeTitle='&amp;lt;h2&amp;gt;', afterTitle='&amp;lt;/h2&amp;gt;'}&amp;quot;))&lt;/li&gt;
    &lt;li&gt;$macros.ThemeFile() - The ThemeFile macro allows you to reference the directory of your theme.&amp;nbsp; This is extremely helpful when you need to reference files or images that support your theme through a view. (usage: $macros.ThemeFile(&amp;quot;images/email.png&amp;quot;))&lt;/li&gt;
    &lt;li&gt;$macros.Style() - This macro like the ThemeFile macro allows you to reference the directory of your theme.&amp;nbsp; However, this macro is used specifically to reference the css file(s) that are used in the theme.&amp;nbsp; (usage: $macros.Style(&amp;quot;style.css&amp;quot;,&amp;quot;screen&amp;quot;)) &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learning and using these macros will give you the tools you need to quickly develop new themes.&amp;nbsp; The most common question that is asked regarding macros is, &amp;quot;How do you know what macros are available?&amp;quot;.&amp;nbsp;&amp;nbsp; Many of the macros can be found from the &lt;a href="http://graffiticms.com/support/advanced-options/macros-overview/"&gt;Macros Overview page&lt;/a&gt; with descriptions and &lt;a href="http://graffiticmstips.com/reference/graffiti-cms-complete-macros-list/"&gt;here is a full list (without descriptions)&lt;/a&gt; from version 1.0.1.&lt;/p&gt;
&lt;p&gt;If you commonly use a macro that isn't listed here, feel free to leave a comment and be sure to include an example of how it can be used.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/lTq1loOX3u4" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/using-graffiti-cms-macros/</feedburner:origLink></item><item><title>Creating a Theme for Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/VOSmuRcmSNo/</link><pubDate>Mon, 17 Mar 2008 21:05:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/creating-a-theme-for-graffiti-cms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>2</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;One you have successfully installed the latest version of Graffiti CMS, your next task will be to modify the default theme, or create a new one.&amp;nbsp; Initially, creating or modifying a theme can be tricky because of the proprietary template system Graffiti CMS is built upon.&amp;nbsp;&amp;nbsp; The template system is relatively easy to use once you have spent enough time to overcome the initial learning curve.&lt;/p&gt;
&lt;p&gt;Here are a few tips that can help you quickly enhance the &amp;quot;look and feel&amp;quot; of your site:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Learn the fundamentals.&amp;nbsp; Views are the building blocks that are used to create a theme.&amp;nbsp; It is important to understand the view file structure before trying to create a new theme.&amp;nbsp; The &lt;a href="http://dev.graffiticms.com/designer/views/view-overrides/"&gt;View Overrides&lt;/a&gt; article on the Graffiti CMS website should be your first priority.&lt;/li&gt;
    &lt;li&gt;Don't get a headache debugging cached pages.&amp;nbsp; Once you learn how to use views and begin to make some changes you will quickly run into a caching problem.&amp;nbsp; Namely, you will make a change to your theme file that will not show up when you refresh the page.&amp;nbsp;&amp;nbsp; To get around this, you can turn off View caching by changing the&amp;nbsp; web.config setting &amp;quot;Graffiti:Views:Cache&amp;quot; from true to false.&amp;nbsp; &lt;em&gt;In production sites, you will want to make sure that Caching is always on as it provides a significant performance boost, but while developing a new theme you will want to ensure that you have view caching turned off.&amp;nbsp; &lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Use the default theme as a guide.&amp;nbsp; When creating a theme from scratch, I always reference snippets of code from previous themes that I have developed, or from the default installation theme.&amp;nbsp; (i.e. $macros.Style(&amp;quot;style.css&amp;quot;,&amp;quot;screen&amp;quot;) and $macros.JavaScript(&amp;quot;utils/pngfix.js&amp;quot;))&lt;/li&gt;
    &lt;li&gt;Practice with an already developed design.&amp;nbsp; &lt;a href="http://FreeCSSTemplates.com"&gt;FreeCSSTemplates.com&lt;/a&gt; is a great site with a ton of CSS templates that you can use to practice buidling a theme.&amp;nbsp; These designs have open licenses so try using one of these designs to build your first template and then offer it back to the community to download.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you aren't sure about getting under the hood of the Graffiti CMS theming engine, their are plenty of folks who have been working hard to develop free themes that you can quickly install and customize.&amp;nbsp; Check out &lt;a href="http://richmercer.com/graffiti-themes/"&gt;Rich Mercer's Graffiti Themes page&lt;/a&gt; or the &lt;a href="http://www.devcow.com/blogs/adnrg/archive/2008/02/22/10-new-graffiti-cms-themes.aspx"&gt;Atlanta .Net Regular Guys&lt;/a&gt; who have 10 additional themes free for download (preview them &lt;a href="http://www.devcowsoftware.com/graffiticmsthemes/"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;If you have additional tips that will help folks quickly create new themes in Graffiti CMS please post them in the comments below.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/VOSmuRcmSNo" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/creating-a-theme-for-graffiti-cms/</feedburner:origLink></item><item><title>Getting Started with Graffiti CMS</title><link>http://feedproxy.google.com/~r/GraffitiCMSTips/~3/YNYD4DOQTo8/</link><pubDate>Mon, 17 Mar 2008 05:40:00 GMT</pubDate><guid isPermaLink="false">http://graffiticmstips.com/tips/graffiticms/getting-started-with-graffiticms/</guid><dc:creator>GraffitiCMSTips</dc:creator><slash:comments>0</slash:comments><category domain="http://graffiticmstips.com/tips/graffiticms/">Graffiti CMS</category><description>&lt;p&gt;If you are just getting started with Graffiti CMS here are a few tips:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The official getting started post from Telligent can be found &lt;a href="http://graffiticms.com/support/getting-started/"&gt;here&lt;/a&gt;.&amp;nbsp; Make sure to read this page before you get going.&lt;/li&gt;
    &lt;li&gt;Another key to getting started quikcly with Graffiti CMS quickly is to watch the &lt;a href="http://graffiticms.com/support/graffiti-basics/quickstart-videos/"&gt;quickstart video tutorials&lt;/a&gt; provided by Telligent.&lt;/li&gt;
    &lt;li&gt;Struggling to find an answer to a question or problem while working with Graffiti CMS?&amp;nbsp; Try joining the #GraffitiCMS channel on the freenode IRC server where a number of very helpful people (including Telligent employees) chat frequently.&lt;/li&gt;
    &lt;li&gt;The default installation includes several directories in the web folder that are not needed.&amp;nbsp; These folders are included to support the sample vistadb Graffiti CMS demo.&amp;nbsp; Consequently, you can safely delete the about, blog, contact-us and sample-content&amp;nbsp; directories&lt;/li&gt;
    &lt;li&gt;If you prefer to use MySQL or MSSQL over default VistaDB, you will need to run the respective data schema and default data scripts in addition to modifying your web.config settings as described &lt;a href="http://graffiticms.com/support/advanced-options/configuring-database-providers/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are a few tips that should help you get started with Graffiti CMS.&amp;nbsp; There are quite a few articles posted on &lt;a href="http://GraffitiCMS.com"&gt;GraffitiCMS.com&lt;/a&gt; in addition to the support forums, but some of the articles can be hard to find. The best way to find answers quickly from the Graffiti CMS website is by using the search feature.&lt;/p&gt;
&lt;p&gt;If you have any suggestions or tips that might help other users getting started with Graffiti CMS, feel free to leave a comment below.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GraffitiCMSTips/~4/YNYD4DOQTo8" height="1" width="1"/&gt;</description><feedburner:origLink>http://graffiticmstips.com/tips/graffiticms/getting-started-with-graffiticms/</feedburner:origLink></item></channel></rss>
