O:9:"magpierss":23:{s:6:"parser";N;s:12:"current_item";a:0:{}s:5:"items";a:15:{i:0;a:9:{s:5:"title";s:35:"Welcome Sue Crocker to the TSS Team";s:4:"link";s:75:"http://expressionengine.com/blog/entry/welcome_sue_crocker_to_the_tss_team/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1801";s:9:"published";s:20:"2007-05-07T17:38:00Z";s:7:"updated";s:20:"2007-05-07T16:53:58Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:630:"
        <p>Please welcome Sue Crocker to the EllisLab team. <a href="http://expressionengine.com/forums/member/1846/">Sue</a> has 5000+ posts in the forums, has been a <a href="http://expressionengine.com/professionals/info/shecodescom_sue_crocker/">member of the Professionals Network</a> for quite some time, and runs the frequented <a href="http://www.eehowto.com/">EE How To</a> site so she really doesn&#8217;t need much of an introduction. Chances are you&#8217;ve received help from her already and we&#8217;re pleased to make that help &#8220;official&#8221; as part of our Technical Support Specialist team. 
</p>
      ";}i:1;a:9:{s:5:"title";s:15:"Thank You John!";s:4:"link";s:54:"http://expressionengine.com/blog/entry/thank_you_john/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1796";s:9:"published";s:20:"2007-05-05T13:26:00Z";s:7:"updated";s:20:"2007-05-05T12:35:52Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:584:"
        <p>This is a big public thank you to John Fuller for all the official help and assistance he&#8217;s provided to the ExpressionEngine and CodeIgniter communities as part of our Technical Support Specialist team. 
</p>
<p>
Unfortunately the &#8220;College Beast&#8221; has reared its head to battle John and he must return his attention to that particular adventure. Fortunately John&#8217;s promised to continue his enthusiastic support for the EllisLab Communities and be his usual helpful self here when he can. Drop him a note of thanks when you get a chance. 
</p>
      ";}i:2;a:9:{s:5:"title";s:39:"Danger! Danger! Danger! Three warnings!";s:4:"link";s:75:"http://expressionengine.com/blog/entry/danger_danger_danger_three_warnings/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1777";s:9:"published";s:20:"2007-05-02T15:22:00Z";s:7:"updated";s:20:"2007-05-16T20:42:04Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:4239:"
        <p>Someone&#8217;s been on a rampage going through Wordpress plugins this week.&nbsp; Yesterday there was <a href="http://secunia.com/advisories/25042/">[4/5] WordPress myGallery Plugin &#8220;myPath&#8221; File Inclusion</a>, a highly critical security hole in the myGallery plugin.&nbsp; Today there are two more, in the wordTube plugin and wp-Table plugin:
</p>
<p>
<a href="http://secunia.com/advisories/25074/">[4/5] WordPress wordTube Plugin &#8220;wpPATH&#8221; File Inclusion</a>
<br />
<a href="http://secunia.com/advisories/25063/">[4/5] WordPress wp-Table Plugin &#8220;wpPATH&#8221; File Inclusion</a>
</p>
<p>
Now before you jump to the conclusion that I&#8217;m knocking Wordpress&#8217;s security, well, just don&#8217;t jump to that conclusion.&nbsp; Because I&#8217;m not.&nbsp; In all three cases, the security flaw came not from Wordpress, but from third-party plugins.&nbsp; The myGallery plugin isn&#8217;t even listed or available for download on Wordpress&#8217;s official plugin repository.&nbsp; The author of the other two, not surprisingly, gives thanks to the creator of myGallery for giving him &#8220;a lot of education.&#8221;  Since he based his code on the former, it&#8217;s not a shock that his two plugins share the same security flaw.
</p>
<p>
I have empathy for the crew of Wordpress, I really do.&nbsp; This is bad <i>[go for the pun, Derek...]</i> press <i>[yes, you nailed it!]</i> for them, and most of their users will not really understand that the flaw was in the third party plugin and not the application.&nbsp; We repeatedly see people experiencing general problems in the support forums, thinking that it is ExpressionEngine, and it turns out to be plugins, modules, extensions, or other customization causing the trouble.&nbsp; It&#8217;s very difficult as a user to make that distinction between where the application stops and their modifications begin.&nbsp; We have been fortunate thus far to not have had any reports such as these, where a third party add-on led to a critical security hole.&nbsp; But it&#8217;s going to happen.&nbsp; It&#8217;s inevitable as the ExpressionEngine community of developers grows.&nbsp; This is one reason we have such a time consuming and rigorous process of add-on approval.&nbsp; We certainly don&#8217;t want an add-on that&#8217;s available for download on our site to be the source of potential problems.&nbsp; But we are not the only place one can go for ExpressionEngine add-ons, and we do not &#8220;police&#8221; the add-on forums where people post code, plugins, and extensions for one another.&nbsp; So to think it won&#8217;t happen would be foolish.
</p>
<p>
The <b>three warnings</b> mentioned in the title of this post are not referring to the three security advisories linked above, nay.&nbsp; I leave you with these:
</p>
<p>
<b>Users:</b>
<br />
Be wary of using third-party add-ons, especially if you get them off-site.&nbsp; Popularity does not mean safety.&nbsp; Take the time to seek advice of an experienced developer to examine add-ons before using them on a production site.&nbsp; Commercial third-party add-ons are <i>generally</i> safer bets.&nbsp; At the very least, a business selling add-ons has a vested interest in their product not causing problems for you, and when issues do arise, you can typically expect prompt response and support.
</p>
<p>
<b>Tinkerers:</b>
<br />
Be wary of copying code from third-party developers.&nbsp; Be aware that by doing so, you are sharing any problems and vulnerabilities their code may have.&nbsp; See the Users&#8217; warning.
</p>
<p>
<b>Developers:</b>
<br />
Be doubly sure that you are not doing silly things like including files based on unsanitized and unvalidated variables, using unvalidated and unescaped strings in queries, and so on.&nbsp; And never use an implementation that does an end-run around ExpressionEngine.&nbsp; Our code can protect you and your users from many types of attacks and flaws, but you cannot bypass portions of the system and still have that protection.
</p>
<p>
If everyone follows these three warnings, we can continue to enjoy relative freedom from these obnoxious and serious problems, and that&#8217;s good for everyone.
</p>      ";}i:3;a:9:{s:5:"title";s:28:"Introducing HelpSpot Hosting";s:4:"link";s:68:"http://expressionengine.com/blog/entry/introducing_helpspot_hosting/";s:2:"id";s:34:"tag:ellislab.com,2007:news/17.1766";s:9:"published";s:20:"2007-04-30T19:38:00Z";s:7:"updated";s:20:"2007-04-30T18:44:00Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:6874:"
        <p>Ever since we rebranded as EllisLab we&#8217;ve been looking for people with products, services, and a business mindset that fit with our community. We&#8217;re happy to introduce Ian Landsman, the owner of <a href="http://userscape.com">UserScape</a> and its chief product, HelpSpot, &#8220;A help desk software solution, built for ease of use.&#8221; 
</p>
<p>
We&#8217;ve known about Ian through his blog (powered by ExpressionEngine), where he writes intelligent things about doing business on the web, and through his use of CodeIgniter. When Nevin (CTO of EngineHosting) pointed out that Ian needed a new hosting solution for HelpSpot, we contacted him right away. Ian turns out to be as cool as we hoped and we quickly worked out a <a href="http://www.enginehosting.com/web_hosting/solutions/helpspot/">solution for his HelpSpot customers</a>. 
</p>
<p>
We think that working with Ian will lead to good things for the UserScape and EllisLab communities and hope that offering hosting is just a first step in this relationship. You can read <a href="http://www.userscape.com/blog/index.php/site/comments/helpspot_hosting_goes_to_a_new_level/">Ian&#8217;s thoughts about it on his blog</a>. 
</p>
<p>
The interview below details Ian&#8217;s adventure from accountancy to web application development. 
</p>
<p>
<b>EllisLab:</b> Hi Ian, thanks for doing an interview. What&#8217;s your background and how did you get started in application development?
</p>
<p>
<b>Ian Landsman:</b> I actually have a pretty varied background from Office Depot store manager to Academic Technology Director for a small NY college. My college degree is in Accounting, which has actually served me really well. Accounting is surprisingly like programming in terms of mindset. It&#8217;s also been very handy to have that background when starting UserScape. When you&#8217;re bootstrapping a company you need to wear every hat so I think having a background that&#8217;s exposed you to many different types of businesses is a huge help.
</p>
<p>
In terms of application development I really got started with that in earnest during my time with Pearson Education, a large textbook publisher. There I worked on many large scale systems serving hundreds of thousands of customers. From there I ended up doing a lot of consulting and freelance application development while working my day jobs until taking the plunge with UserScape two years ago.
</p>
<p>
<b>EllisLab:</b> Why did you start UserScape? What makes HelpSpot different?
</p>
<p>
<b>Ian Landsman:</b> I&#8217;ve always wanted to start a business. I&#8217;ve probably started developing 5-6 products over the years, but I would abandon them part way through development for one reason or another. I think it was mostly because I started developing without really understanding the industries I was developing for. Since I didn&#8217;t have a full understanding I would get scared part way through and abandon ship. With UserScape I really researched the help desk software industry thoroughly before I wrote one line of code. That deep understanding really allowed me to push through knowing I was going in the right direction. There was a real market need for a help desk software package priced between $99 unlimited user scripts and $100,000 enterprise software.
</p>
<p>
HelpSpot has a lot of unique features, the ones I&#8217;m most proud of though are it&#8217;s simplicity and it&#8217;s filtering power. I really wanted HelpSpot to be very easy to start using without any formal training. Most help desk packages really need training to use right and often training is a required part of the purchase by the vendor. I wanted most help desk users to be able to jump in and at least be able to create and manage requests without a big learning curve and I think we&#8217;ve been successful in that. There&#8217;s a lot of power in there, but it&#8217;s below the surface and unfolds as you delve deeper into it.
</p>
<p>
The filtering is a unique feature that is really key in most HelpSpot installations. Request filters allow staff to create filters or queues on the fly that enable them to see the requests in the system in nearly unlimited ways. There&#8217;s literally millions of possible combinations which you can use to pull out just the requests you need to see and you can save those filters for quick access in the future.
</p>
<p>
<b>EllisLab:</b> What HelpSpot feature makes you most happy?
</p>
<p>
<b>Ian Landsman:</b> Possible the most innovative feature in HelpSpot is the Live Lookup API, I really love this feature. Almost all help desk packages require you to upload your customer data into them if you want to be able to access that data while working on a request. This creates a lot of headaches trying to keep this data up to date and you inevitably can&#8217;t get all the data you need into the software. Live Lookup is a very simple XML API that allows HelpSpot to query your customer data system (any customer data system) in real time. So HelpSpot can display customer details on any data your staff needs without any data syncing or any worries about data being outdated.
</p>
<p>
<b>EllisLab:</b> Is there a HelpSpot feature that nobody seems to use but really should?
</p>
<p>
<b>Ian Landsman:</b> One that I think doesn&#8217;t get enough use is reminders. HelpSpot can send reminders to you for things you need to follow up on with a request or check on, perhaps a note on when to contact someone back, things like that. I really blame myself for this though as the interface isn&#8217;t that great for reminders. Version 2 of HelpSpot addresses this issue and makes reminders much easier to use.
</p>
<p>
<b>EllisLab:</b> What&#8217;s been the biggest surprise since getting into the Help desk business?
</p>
<p>
<b>Ian Landsman:</b> The biggest surprise to me has really been that the research I did initially was actually correct! There really was a need for a solid middle tier product. Sales have progressed much faster than I expected, especially considering HelpSpot doesn&#8217;t do any real advertising. It&#8217;s all been people discussing it on their blogs or traditional word of mouth.
</p>
<p>
<b>EllisLab:</b> We are certainly familiar with that advertising model! What&#8217;s next for HelpSpot?
</p>
<p>
<b>Ian Landsman:</b> Right now production is full speed ahead on version 2. I don&#8217;t like to give a lot of details on specific features, I&#8217;d rather under promise and over deliver. A few key features though are support for displaying and sending HTML emails and a full API for accessing HelpSpot programatically.
</p>
<p>
<b>EllisLab:</b> Thanks for the interview Ian. You can find more information on HelpSpot at <a href="http://userscape.com">UserScape</a> and keep track of Ian on his <a href="http://www.userscape.com/blog/">blog</a>.
</p>      ";}i:4;a:9:{s:5:"title";s:39:"Important ExpressionEngine Forum Update";s:4:"link";s:79:"http://expressionengine.com/blog/entry/important_expressionengine_forum_update/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1745";s:9:"published";s:20:"2007-04-26T20:27:00Z";s:7:"updated";s:20:"2007-04-26T19:29:00Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:1401:"
        <p>In order to better serve our rapidly growing community we&#8217;ve restructured our forums. 
</p>
<p>
<b>The Technical Support Forums</b> - This is the official (and best) place to post support issues for Personal and Commercial licenses. Technical issues with ExpressionEngine, installation help, bug reports, and feature requests all belong in these forums. Our Technical Support Specialists and the EE community will help resolve posts as quickly as possible. Questions regarding best practices or &#8220;how do I...&#8221; with ExpressionEngine should be posted to the new ExpressionEngine Community Forums.
</p>
<p>
<b>ExpressionEngine Community Forums</b> - These forums are for the entire ExpressionEngine Community (Core, Personal, and Commercial users). This is your place to help each other out with HTML, CSS, design, tips, resources, and best practices that may or may not be related to ExpressionEngine. Its also where EllisLab staff will invite community discussion about any ExpressionEngine Blog posts. <i>While the EllisLab staff frequent these forums and provide moderation duties on a regular basis, no official technical support is provided here</i>. 
</p>
<p>
<b>Please do not post technical support requests here. Personal and Commercial license holders should post in the Technical Support Forums and Core users should post to the Core Support Forums</b>.
</p>      ";}i:5;a:9:{s:5:"title";s:46:"The A List Apart 2007 Annual Web Design Survey";s:4:"link";s:86:"http://expressionengine.com/blog/entry/the_a_list_apart_2007_annual_web_design_survey/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1711";s:9:"published";s:20:"2007-04-25T00:59:00Z";s:7:"updated";s:20:"2007-04-25T00:05:02Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:12:"Paul Burdick";s:10:"author_uri";s:25:"http://www.reedmaniac.com";s:12:"atom_content";s:4863:"
        <p>A List Apart, that zany online magazine that has more star power underneath its hood than Wesley Crusher, is performing its first annual <a href="http://alistapart.com/articles/webdesignsurvey">Web Design Survey</a>.&nbsp; In their own words they want to learn&#8230;
</p>
<blockquote><p>Who are we? Where do we live? What are our titles, our skills, our educational backgrounds? Where and with whom do we work? What do we earn? What do we value?</p></blockquote>
<p>
I suggest all of you interested in such information go take the survey yourself as there really is not enough information out there about us.&nbsp; No really.&nbsp; I want to know about you!&nbsp; You!&nbsp;  To make sure that the road goes both ways, I thought I would give you a few of my own answers.
</p>
<p>
1. Tell us about yourself. What is your age?
</p>
<blockquote><p>It&#8217;s not the age, it&#8217;s the mileage.&nbsp; So I put 51-60.</p></blockquote>
<p>
4. What is your job title?
</p>
<blockquote><p>Chief Technology Officer, but I am sure everyone calls me something else when I am not paying attention.</p></blockquote>
<p>
5. Regardless of your job title, in which of these areas are you competent?
</p>
<blockquote><p>I am competent in everything I touch except pie crusts, which mysteriously elude me.</p></blockquote>
<p>
6. Regardless of how competent you believe yourself to be, in which of these areas does your employer expect you to be proficient?
</p>
<blockquote><p>Other.&nbsp; Rick expects nothing from me and is thus pleasantly surprised when I am productive every few weeks.</p></blockquote>
<p>
7. Have you got a blog or other personal website?
</p>
<blockquote><p>Yes, I have much angst.</p></blockquote>
<p>
8. How long have you published your blog/website?
</p>
<blockquote><p>Over 10 years.&nbsp; I started posting daily updates to my personal website back during my freshman year of college.&nbsp; I should have a party.</p></blockquote>
<p>
11. How do you stay current with your craft?
</p>
<blockquote><p>Not a single option for a Feed Reader or Searching on Google, which are the ones I use primarily.</p></blockquote>
<p>
15. How many people does your company or organization employ?
</p>
<blockquote><p>I think, 11-25 employees now.&nbsp; Kind of crazy as it was only Rick full time less than four years ago.&nbsp; Does this company make me look fat?</p></blockquote>
<p>
16. For how many years have you been working as a web professional?
</p>
<blockquote><p>1 year or less.&nbsp; I only started acting like a professional in the last year or so.&nbsp;  As you may notice, this entry is not entirely professional so I am still working on it.</p></blockquote>
<p>
17. On average, how many hours per week do you work?
</p>
<blockquote><p>Realistically?&nbsp; Um, er...eight, maybe ten hours?&nbsp; So under 20 hours, I guess.&nbsp;  Flickr is mostly at fault.</p></blockquote>
<p>
18. How much of your work revolves around web design?
</p>
<blockquote><p>Web design is a rather small part of what I do.&nbsp;  I would like to keep my remaining hair, thank you very much.</p></blockquote>
<p>
21. How long is your annual paid vacation?
</p>
<blockquote><p>EllisLab has no official policy on vacation as of this exact moment, so anywhere from one day to unlimited.&nbsp;  We believe in getting our work done and leave it up to each worker bee to decided when to break and taste the honey.&nbsp; A few members of the team are rather inept on that front.&nbsp; ::raises hand::&nbsp; I left my last job with 28 vacation days left.</p></blockquote>
<p>
23. Let&#8217;s talk perks. Get any?
</p>
<blockquote><p>Saddens me that Health Insurance is being listed as a perk.&nbsp; <a href="http://flickr.com/photos/7314536@N02/419963118/">Free T-Shirts</a>, <a href="http://flickr.com/photos/reedmaniac/421384730/">Free Drinks</a>, <a href="http://flickr.com/photos/reedmaniac/421427729/">Free Food</a>, and I get to <a href="http://flickr.com/photos/davidhemphill/418177006/">Fight Crime</a>.&nbsp; Rick treats us well, but anything in this area is private.</p></blockquote>
<p>
27. Do you find web design to be an exciting profession?
</p>
<blockquote><p>Gee golly!</p></blockquote>
<p>
28. Professionally speaking, what do you see yourself doing five years 
<br />
from now?
</p>
<blockquote><p>Getting lost in the woods.</p></blockquote>
<p>
33. What was the last job opportunity that you turned down?
</p>
<blockquote><p>Leading Outdoor Trips in the Pacific Northwest.</p></blockquote>
<p>
34. Why did you turn it down?
</p>
<blockquote><p>No a rational choice considering my current state of employment.</p></blockquote>
<p>
35. What is your next career move?
</p>
<blockquote><p>Coup d&#8217;état.</p></blockquote>
<p>
36. Any other comments?
</p>
<blockquote><p>My nose itches. I blame your software, my webhost agrees.</p></blockquote>      ";}i:6;a:9:{s:5:"title";s:27:"Behind the Curtain Part III";s:4:"link";s:69:"http://expressionengine.com/blog/entry/behind_the_curtain_part_three/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1709";s:9:"published";s:20:"2007-04-24T20:19:00Z";s:7:"updated";s:20:"2007-04-24T19:20:52Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:35947:"
        <p>I promised more meat in the next installment of entries peeking behind the curtain of the ExpressionEngine.com redesign, and I shall deliver.&nbsp; Meatier, but still lean: this design decision was low fat.&nbsp; If you subscribe to our feeds, you&#8217;ll notice that the URLs all begin as http://expressionengine.com/feeds/atom/ and http://expressionengine.com/feeds/rss/.&nbsp; The reason quite simply is that we have only two templates for feeds, which saved us quite a bit of template creation and cut and pasting.
</p>
<p>
We could have used <a href="http://expressionengine.com/blog/entry/behind_the_curtain_part_two/">Part II&#8217;s method</a> of globals and embeds, and <a href="http://expressionengine.com/blog/entry/behind_the_curtain_part_one/">Part I&#8217;s embed variables</a> to limit the amount of work required, but we offer a lot of different feeds on this site, and I just didn&#8217;t like the idea of having to have feed templates in each template group--even if they were just holding embed tags and global variables.&nbsp; So I decided that we would have two feed templates: one Atom, and one RSS, and just use URL segments to determine the content.&nbsp; The stickler in this approach is that different weblogs may have different categories, different statuses, custom fields, etc.&nbsp; So the template needs to be able to handle that.&nbsp; I decided to use PHP on Input to handle it.&nbsp; Here&#8217;s our Atom template (PHP required on Input parsing):
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">global </span><span style="color: #0000BB">$IN</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$seg3 </span><span style="color: #007700">= (isset(</span><span style="color: #0000BB">$IN</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">SEGS&#91;</span><span style="color: #DD0000">'3'</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">)) ? </span><span style="color: #0000BB">$IN</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">SEGS&#91;</span><span style="color: #DD0000">'3'</span><span style="color: #0000BB">&#93; </span><span style="color: #007700">: </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$weblog &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$entry_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$category_path&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$use_entry_id&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">;<br /><br />if (</span><span style="color: #0000BB">$seg3 </span><span style="color: #007700">== </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$seg3 </span><span style="color: #007700">= </span><span style="color: #DD0000">'full'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />switch (</span><span style="color: #0000BB">$seg3</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">case </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base/article'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;summary&#125;&#123;body&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'addons'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'add_ons'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'downloads/details'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'downloads/addons'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;description&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open|featured|popular'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'eeblog'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'ee_blog'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/entry'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/index'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;body&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'devblog'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'devblog'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/entry'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/index'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;body&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'network'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'network_announcements'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/entry'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/index'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;network_content&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'full'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'devblog|ee_blog|network_announcements'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/entry'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'blog/index'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;body&#125;&#123;network_content&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case </span><span style="color: #DD0000">'bug_tracker'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'bug_tracker'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'bug_tracker/bug'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'bug_tracker/list'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;bug_details&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'not Hidden'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$use_entry_id&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000BB">&#125;<br />?&gt;<br /><br />&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">rss</span><span style="color: #007700">:</span><span style="color: #0000BB">feed weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$weblog?&gt;" </span><span style="color: #0000BB">status</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?php echo $statuses;?&gt;"</span><span style="color: #0000BB">&#125;<br /><br />&lt;?xml version</span><span style="color: #007700">=</span><span style="color: #DD0000">"1.0" </span><span style="color: #0000BB">encoding</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;encoding&#125;"</span><span style="color: #0000BB">?&gt;<br /></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">feed xmlns</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://www.w3.org/2005/Atom" </span><span style="color: #0000BB">xml</span><span style="color: #007700">:</span><span style="color: #0000BB">lang</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;weblog_language&#125;"</span><span style="color: #007700">&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">title type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;&#123;weblog_name&#125;&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">subtitle type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;&#123;weblog_name&#125;</span><span style="color: #007700">:</span><span style="color: #0000BB">&#123;weblog_description&#125;&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">subtitle</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"alternate" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/html" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;weblog_url&#125;" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"self" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"application/atom+xml" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;path=xml/atom/&#123;segment_3&#125;&#125;" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">updated</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;gmt_edit_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">'%Y-%m-%dT%H:%i:%sZ'</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">updated</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">rights</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Copyright </span><span style="color: #007700">(</span><span style="color: #0000BB">c</span><span style="color: #007700">) </span><span style="color: #0000BB">&#123;gmt_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%Y"</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">, </span><span style="color: #0000BB">&#123;author&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">rights</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">generator uri</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/" </span><span style="color: #0000BB">version</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;version&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">ExpressionEngine</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">generator</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">tag</span><span style="color: #007700">:</span><span style="color: #0000BB">&#123;trimmed_url&#125;</span><span style="color: #007700">,</span><span style="color: #0000BB">&#123;gmt_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%Y:%m:%d"</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;<br /><br /></span><span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries site</span><span style="color: #007700">=</span><span style="color: #DD0000">"expressionengine|ellislab" </span><span style="color: #0000BB">weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$weblog?&gt;" </span><span style="color: #0000BB">limit</span><span style="color: #007700">=</span><span style="color: #DD0000">"15" </span><span style="color: #0000BB">rdf</span><span style="color: #007700">=</span><span style="color: #DD0000">"off" </span><span style="color: #0000BB">dynamic_start</span><span style="color: #007700">=</span><span style="color: #DD0000">"on" </span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"member_data|trackbacks" </span><span style="color: #0000BB">status</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$statuses?&gt;"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">entry</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;&#123;title&#125;&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">xml_encode&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"alternate" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/html" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?php if ($use_entry_id === TRUE): ?&gt;&#123;entry_id_path='&lt;?=$entry_path?&gt;'&#125;&lt;?php else: ?&gt;&#123;url_title_path='&lt;?=$entry_path?&gt;'&#125;&lt;?php endif; ?&gt;" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">tag</span><span style="color: #007700">:</span><span style="color: #0000BB">&#123;trimmed_url&#125;</span><span style="color: #007700">,</span><span style="color: #0000BB">&#123;gmt_entry_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%Y"</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">:</span><span style="color: #0000BB">&#123;relative_url&#125;</span><span style="color: #007700">/</span><span style="color: #0000BB">&#123;weblog_id&#125;</span><span style="color: #007700">.</span><span style="color: #0000BB">&#123;entry_id&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">published</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;gmt_entry_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%Y-%m-%dT%H:%i:%sZ"</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">published</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">updated</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;gmt_edit_date format</span><span style="color: #007700">=</span><span style="color: #DD0000">'%Y-%m-%dT%H:%i:%sZ'</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">updated</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">author</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">name</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;author&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">name</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;if url&#125;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">uri</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;url&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">uri</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">if&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">author</span><span style="color: #007700">&gt;<br /></span><span style="color: #0000BB">&#123;categories&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">category term</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;exp:xml_encode&#125;&#123;category_name&#125;&#123;/exp:xml_encode&#125;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">scheme</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;path='&lt;?=$category_path?&gt;'&#125;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">label</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;exp:xml_encode&#125;&#123;category_name&#125;&#123;/exp:xml_encode&#125;" </span><span style="color: #007700">/&gt;</span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">categories&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">content type</span><span style="color: #007700">=</span><span style="color: #DD0000">"html"</span><span style="color: #007700">&gt;&lt;!</span><span style="color: #0000BB">&#91;CDATA&#91;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;?</span><span style="color: #007700">=</span><span style="color: #0000BB">$fields?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#93;&#93;</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">content</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">entry</span><span style="color: #007700">&gt;<br /></span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries&#125;<br /><br /></span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">feed</span><span style="color: #007700">&gt;<br /><br /></span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">rss</span><span style="color: #007700">:</span><span style="color: #0000BB">feed&#125;</span>
</code></div><p>
</p>
<p>
The key elements being:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">switch (</span><span style="color: #0000BB">$seg3</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">case </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$weblog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$entry_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base/article'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$category_path&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'knowledge_base'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'&#123;summary&#125;&#123;body&#125;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$statuses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #DD0000">'open'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />...<br /></span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
Here, depending on the third URL segment, we set the weblog parameter, the entry path, the category path, what custom fields we want used, and what statuses to display.&nbsp; Then we create the RSS and weblog entries tags with this information:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">rss</span><span style="color: #007700">:</span><span style="color: #0000BB">feed weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$weblog?&gt;" </span><span style="color: #0000BB">status</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?php echo $statuses;?&gt;"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">...<br /></span><span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">weblog</span><span style="color: #007700">:</span><span style="color: #0000BB">entries site</span><span style="color: #007700">=</span><span style="color: #DD0000">"expressionengine|ellislab" </span><span style="color: #0000BB">weblog</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$weblog?&gt;" </span><span style="color: #0000BB">limit</span><span style="color: #007700">=</span><span style="color: #DD0000">"15" </span><span style="color: #0000BB">rdf</span><span style="color: #007700">=</span><span style="color: #DD0000">"off" </span><span style="color: #0000BB">dynamic_start</span><span style="color: #007700">=</span><span style="color: #DD0000">"on" </span><span style="color: #0000BB">disable</span><span style="color: #007700">=</span><span style="color: #DD0000">"member_data|trackbacks" </span><span style="color: #0000BB">status</span><span style="color: #007700">=</span><span style="color: #DD0000">"&lt;?=$statuses?&gt;"</span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
The categories tag pair makes use of the category path variable:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;path</span><span style="color: #007700">=</span><span style="color: #DD0000">'&lt;?=$category_path?&gt;'</span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
And the content uses our assigned custom fields:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;</span><span style="color: #0000BB">content type</span><span style="color: #007700">=</span><span style="color: #DD0000">"html"</span><span style="color: #007700">&gt;&lt;!</span><span style="color: #0000BB">&#91;CDATA&#91;<br />&nbsp;&nbsp;&lt;?</span><span style="color: #007700">=</span><span style="color: #0000BB">$fields?&gt;<br />&#93;&#93;</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">content</span><span style="color: #007700">&gt;</span>
</code></div><p>
</p>
<p>
There is one special case for links to the entries that we made for the Bug Tracker, as it uses entry ids instead of URL titles.
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&lt;?php </span><span style="color: #007700">if (</span><span style="color: #0000BB">$use_entry_id </span><span style="color: #007700">=== </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">): </span><span style="color: #0000BB">?&gt;&#123;entry_id_path</span><span style="color: #007700">=</span><span style="color: #DD0000">'&lt;?=$entry_path?&gt;'</span><span style="color: #0000BB">&#125;&lt;?php </span><span style="color: #007700">else: </span><span style="color: #0000BB">?&gt;&#123;url_title_path</span><span style="color: #007700">=</span><span style="color: #DD0000">'&lt;?=$entry_path?&gt;'</span><span style="color: #0000BB">&#125;&lt;?php </span><span style="color: #007700">endif; </span><span style="color: #0000BB">?&gt;</span>
</code></div><p>
</p>
<p>
Not all of these things will be necessary on a site wishing to do something similar, so if all of your weblogs share custom fields, statuses, or paths, you can trim this up a bit.&nbsp; Still, if you have multiple weblogs that are each displayed apart from one another in separate template groups, this can save you from creating two extra templates per template group, and facilitate making global changes to your feed templates.&nbsp; Oh, and if you don&#8217;t like PHP, you could accomplish the same thing with cleverly named path.php global variables that would use {segment_3} to pull the correct path.php global.
</p>
<p>
Next time on BTC, less tags and how-to and more discussion on theory and organization, specifically with ::drum roll:: relationships!
</p>      ";}i:7;a:9:{s:5:"title";s:39:"Live Preview with Coda (and other IDEs)";s:4:"link";s:77:"http://expressionengine.com/blog/entry/live_preview_with_coda_and_other_ides/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1708";s:9:"published";s:20:"2007-04-24T19:21:00Z";s:7:"updated";s:20:"2007-04-29T14:58:46Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:2741:"
        <p>As happens most of the time when the internet is all abuzz with some new tool, the release of Panic software&#8217;s new web development IDE, <a href="http://www.panic.com/coda/">Coda</a> prompted most of us here at EllisLab to download it and try it out.&nbsp; Allow me to share with you a nifty gem that makes Coda and other applications like it (Dreamweaver, Freeway Pro, etc.) have a leg up on other workflows when working on ExpressionEngine based sites.
</p>
<p>
Les, the ever imaginative VeeP came to me with the suggestion yesterday, so credit goes to Mr. Camacho for the idea.&nbsp; Unlike BBEdit and TextMate (and most other text editors), in Coda the live preview is based not on the contents of the text editor window, but on the remote file you are working on.&nbsp; For those <a href="http://expressionengine.com/docs/templates/flat_file_templates.html">using templates saved as files</a>, this opens up a pleasant trick.
</p>
<p>
1. Save your templates as files
</p>
<p>
2. Setup your site in Coda, including setting the remote path to your document root (e.g. the public_html directory)
</p>
<p>
3. In whatever folder you have setup as the location to save your template files, add a .htaccess file, with the following contents:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">RewriteEngine On<br />RewriteRule </span><span style="color: #007700">^(.*)</span><span style="color: #0000BB">\</span><span style="color: #007700">.</span><span style="color: #0000BB">php</span><span style="color: #007700">$ /</span><span style="color: #0000BB">index</span><span style="color: #007700">.</span><span style="color: #0000BB">php</span><span style="color: #007700">/$</span><span style="color: #0000BB">1 &#91;L</span><span style="color: #007700">,</span><span style="color: #0000BB">R</span><span style="color: #007700">=</span><span style="color: #0000BB">301&#93;</span>
</code></div><p>
</p>
<p>
4. In Coda, navigate to the template you wish to edit, and open it.&nbsp; Click the Preview button and then split the window vertically.
</p>
<p>
5. Go back to Edit, which should now have the template file in one pane and the preview in the other.
</p>
<p>
6. Make your changes, including EE tags, save the file, and the preview updates immediately <em>with the live content</em>
</p>
<p>
The whole trick here is just the .htaccess.&nbsp; It takes the directory/file structure of your template folder and simply rewrites the URL to point to your ExpressionEngine site with the template group and template name.&nbsp; Remarkably simple, but something that makes modifying an ExpressionEngine site with these IDEs feel truly dynamic.&nbsp; As a diehard TextMate user, it makes me jealous.
</p>      ";}i:8;a:9:{s:5:"title";s:27:"ExpressionEngine Pros Forum";s:4:"link";s:67:"http://expressionengine.com/blog/entry/expressionengine_pros_forum/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1707";s:9:"published";s:20:"2007-04-24T17:43:00Z";s:7:"updated";s:20:"2007-04-24T16:52:13Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:1147:"
        <p>Greetings!&nbsp; We are happy to finally give our Pro Network members a place they can call their own, to speak freely about the aspects of running a business using ExpressionEngine, and to simply connect with one another.&nbsp; Consider it a small step toward what Rick referred to as “invest[ing] in our community and expand[ing] our network into a cohesive, connected, and capable ecosystem”.
</p>
<p>
We hope you find this private, Professionals Network members only, forum invaluable for sharing ideas, collaborating, offering work to one another when circumstances demand that you refuse a client, and just establishing relationships with one another. 
</p>
<p>
If you are part of the Professionals Network you should see the new forum nestled comfortably between The Lounge and the main EE forums. If you are on the Pro Network and can&#8217;t see the forums, please  and I&#8217;ll get things straightened out for you. 
</p>
<p>
If you are a freelancer or part of a professional web development team, consider joining the <a href="http://expressionengine.com/professionals/join/">Professionals Network</a>.&nbsp;
</p>      ";}i:9;a:9:{s:5:"title";s:28:"Dynamic Styles in JavaScript";s:4:"link";s:68:"http://expressionengine.com/blog/entry/dynamic_styles_in_javascript/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1705";s:9:"published";s:20:"2007-04-23T19:14:01Z";s:7:"updated";s:20:"2007-04-23T18:26:37Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:12:"Paul Burdick";s:10:"author_uri";s:25:"http://www.reedmaniac.com";s:12:"atom_content";s:18363:"
        <p><em>Apologies, this is a rather long one, but it is a bit juicy.</em>
</p>
<p>
Last Tuesday, I was having a bit of a slow work day.  You know how it is when the neurons are only firing at about 50% capacity and you start eyeing your DVD collection trying to decide if you should cut your losses by watching a movie.   Unfortunately, the cruel NetFlix gods had not delivered anything fresh and inviting, so I started playing around in JavaScript.   I lead a sad sad life, people.
</p>
<p>
What really sparked my playing was the fact that Twitter is rather popular with many developers and designers, and the Twitter site recently allowed you to update the appearance of your web-based profile.   While playing with this feature, I decided what it really lacked was a dynamic previewing of the changes.  For those of us who are permanently ingrained in the Impatient camp, we need to instantly see how things work right now and not after you submit a page (and wait for Twitter to eat a ten course meal of Scoble&#8217;s tweets before processing). 
</p>
<p>
There are a smattering of ways to simply do this in JavaScript.   Have an onchange="&#8221; that automatically updates the style="&#8221; attribute for a div seems like the most bare bones approach.  That seemed a bit clunky to me, since what I really wanted was to update the current page&#8217;s stylesheet rules and not just the styles applied to individual elements in the page.   Was this even possible?   At that point, I had no idea.  Derek did not know either and thus we turned to the internet to educate us.
</p>
<p>
My first Google search lead me straight to QuirksMode.org and this gem of a <a href="http://www.quirksmode.org/dom/changess.html">page</a>, which discusses precisely what I was hoping to do.
</p>
<blockquote><p>All linked and embedded style sheets are available through the document.styleSheets array.</p></blockquote>
<p>
Right, so now we know how to access the stylesheets, both linked and embedded.   What about the rules inside those?   Next paragraph!
</p>
<blockquote><p>A rule is one set of style declarations for one or more elements. There are two ways to access these rules. W3C insists on the cssRules array while Microsoft has decided on the rules array.</p></blockquote>
<p>
Oh, those two crazy kids!   Why should we have just <strong>one</strong> way to get the same information?  Let us have two!   Aw, shucks, what about <a href="http://www.whatwg.org/">WHATWG</a>?  Should they not get to suggest one too?  Three!  Three, wonderful ways to get the same information. <a href="http://en.wikipedia.org/wiki/The_Count">Ha ha ha</a>!&nbsp; Not really, but I would not put it past them.
</p>
<p>
Bother.   To solve that little problem, I wrote a nice generic function that will fetch the rules from whatever stylesheet you choose.
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">function </span><span style="color: #0000BB">cssRules</span><span style="color: #007700">(</span><span style="color: #0000BB">i</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if (</span><span style="color: #0000BB">document</span><span style="color: #007700">.</span><span style="color: #0000BB">styleSheets&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">cssRules</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return </span><span style="color: #0000BB">document</span><span style="color: #007700">.</span><span style="color: #0000BB">styleSheets&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">cssRules</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">else if (</span><span style="color: #0000BB">document</span><span style="color: #007700">.</span><span style="color: #0000BB">styleSheets&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">rules</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return </span><span style="color: #0000BB">document</span><span style="color: #007700">.</span><span style="color: #0000BB">styleSheets&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">rules</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return new Array();<br /></span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
Simple enough and easily extensible, if (when?) the time comes.  Now that we have the rules for a stylesheet, we need to cruise through them to see what they are and their properties.  Since it is just a simple array, we gotta get our loop on, yo. Before that though, something that was not obvious to me initially needs to be taken into account.  If you have a rule like this:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">.</span><span style="color: #0000BB">whiteBackground</span><span style="color: #007700">, .</span><span style="color: #0000BB">pastyBackground      &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;background</span><span style="color: #007700">-</span><span style="color: #0000BB">color</span><span style="color: #007700">: </span><span style="color: #FF8000">#ffffff;<br /></span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
The entire rule includes both classes, so the rule&#8217;s name would be &#8216;.whiteBackground, .pastyBackground&#8217;.   Seems to me like that should be two different rules to help promote matching and understanding.&nbsp; A simple .split() in javascript should take care of that nicely.&nbsp; So, here is a function that simply loops through all of the styles in the first stylesheet available and outputs those with a background color.               
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">function </span><span style="color: #0000BB">outputCssBackgroundList</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var </span><span style="color: #0000BB">theRules </span><span style="color: #007700">= </span><span style="color: #0000BB">cssRules</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;var </span><span style="color: #0000BB">str </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for ( </span><span style="color: #0000BB">i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">theRules</span><span style="color: #007700">.</span><span style="color: #0000BB">length</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">++ )<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var </span><span style="color: #0000BB">ruleParts&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">= </span><span style="color: #0000BB">theRules&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">selectorText</span><span style="color: #007700">.</span><span style="color: #0000BB">split</span><span style="color: #007700">(</span><span style="color: #DD0000">","</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var </span><span style="color: #0000BB">partsLength </span><span style="color: #007700">= </span><span style="color: #0000BB">ruleParts</span><span style="color: #007700">.</span><span style="color: #0000BB">length</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var </span><span style="color: #0000BB">j </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">j </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">partsLength</span><span style="color: #007700">; </span><span style="color: #0000BB">j</span><span style="color: #007700">++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if (</span><span style="color: #0000BB">theRules&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">style</span><span style="color: #007700">.</span><span style="color: #0000BB">backgroundColor </span><span style="color: #007700">&amp;&amp; </span><span style="color: #0000BB">theRules&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">style</span><span style="color: #007700">.</span><span style="color: #0000BB">backgroundColor</span><span style="color: #007700">.</span><span style="color: #0000BB">indexOf</span><span style="color: #007700">(</span><span style="color: #DD0000">"rgb"</span><span style="color: #007700">) != -</span><span style="color: #0000BB">1</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str </span><span style="color: #007700">+= </span><span style="color: #DD0000">"Style sheet " </span><span style="color: #007700">+ </span><span style="color: #0000BB">ruleParts&#91;j&#93; </span><span style="color: #007700">+ </span><span style="color: #DD0000">" is set to #" </span><span style="color: #007700">+ </span><span style="color: #0000BB">RGBToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">theRules&#91;i&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">style</span><span style="color: #007700">.</span><span style="color: #0000BB">backgroundColor</span><span style="color: #007700">) + </span><span style="color: #DD0000">"&lt;br /&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;document</span><span style="color: #007700">.</span><span style="color: #0000BB">getElementById</span><span style="color: #007700">(</span><span style="color: #DD0000">'content'</span><span style="color: #007700">).</span><span style="color: #0000BB">innerHTML </span><span style="color: #007700">= </span><span style="color: #0000BB">str</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
As you can see, to get the name of a rule, you use &#8216;selectorText&#8217;, and then to find the properties for the declared style, you use the typical CSS node &#8216;style&#8217; with the <a href="http://codepunk.hardwar.org.uk/css2js.htm">JavaScript name</a> of the property.&nbsp;  If you are curious about the search for &#8216;rgb&#8217;, that is because when you retrieve a color property the values are stored in the rgb(1,2,3) form instead of hex.&nbsp;  Here are two functions that help convert them back into hex for a more &#8220;standard&#8221; viewing:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">function </span><span style="color: #0000BB">RGBToHex</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var </span><span style="color: #0000BB">colors </span><span style="color: #007700">= (</span><span style="color: #0000BB">arguments</span><span style="color: #007700">.</span><span style="color: #0000BB">length </span><span style="color: #007700">== </span><span style="color: #0000BB">1</span><span style="color: #007700">) ? </span><span style="color: #0000BB">arguments&#91;0&#93;</span><span style="color: #007700">.</span><span style="color: #0000BB">replace</span><span style="color: #007700">(/</span><span style="color: #0000BB">rgb\</span><span style="color: #007700">(/, </span><span style="color: #DD0000">''</span><span style="color: #007700">).</span><span style="color: #0000BB">replace</span><span style="color: #007700">(/</span><span style="color: #0000BB">\</span><span style="color: #007700">)/, </span><span style="color: #DD0000">''</span><span style="color: #007700">).</span><span style="color: #0000BB">split</span><span style="color: #007700">(</span><span style="color: #DD0000">","</span><span style="color: #007700">) : </span><span style="color: #0000BB">arguments</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return (</span><span style="color: #0000BB">colorToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">colors&#91;0&#93;</span><span style="color: #007700">) + </span><span style="color: #0000BB">colorToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">colors&#91;1&#93;</span><span style="color: #007700">) + </span><span style="color: #0000BB">colorToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">colors&#91;2&#93;</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">&#125;<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">colorToHex</span><span style="color: #007700">(</span><span style="color: #0000BB">N</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;N </span><span style="color: #007700">= </span><span style="color: #0000BB">parseInt</span><span style="color: #007700">(</span><span style="color: #0000BB">N</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if (</span><span style="color: #0000BB">N </span><span style="color: #007700">== </span><span style="color: #0000BB">0 </span><span style="color: #007700">|| </span><span style="color: #0000BB">isNaN</span><span style="color: #007700">(</span><span style="color: #0000BB">N</span><span style="color: #007700">)) return </span><span style="color: #DD0000">"00"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">N </span><span style="color: #007700">= </span><span style="color: #0000BB">Math</span><span style="color: #007700">.</span><span style="color: #0000BB">round</span><span style="color: #007700">(</span><span style="color: #0000BB">Math</span><span style="color: #007700">.</span><span style="color: #0000BB">min</span><span style="color: #007700">(</span><span style="color: #0000BB">Math</span><span style="color: #007700">.</span><span style="color: #0000BB">max</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,</span><span style="color: #0000BB">N</span><span style="color: #007700">),</span><span style="color: #0000BB">255</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return </span><span style="color: #DD0000">"0123456789ABCDEF"</span><span style="color: #007700">.</span><span style="color: #0000BB">charAt</span><span style="color: #007700">((</span><span style="color: #0000BB">N </span><span style="color: #007700">- </span><span style="color: #0000BB">N </span><span style="color: #007700">% </span><span style="color: #0000BB">16</span><span style="color: #007700">)/</span><span style="color: #0000BB">16</span><span style="color: #007700">) + </span><span style="color: #DD0000">"0123456789ABCDEF"</span><span style="color: #007700">.</span><span style="color: #0000BB">charAt</span><span style="color: #007700">(</span><span style="color: #0000BB">N </span><span style="color: #007700">% </span><span style="color: #0000BB">16</span><span style="color: #007700">);&nbsp;&nbsp;</span><span style="color: #FF8000">// Rather clever, by Peter Bromberg<br /></span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
Oddly, if you set any of the myriad of color properties with a hex value, JavaScript will set them correctly and not even flinch.&nbsp;  Somewhat odd, but there you go.&nbsp; You learn to live with these eccentric behaviors.
</p>
<p>
Now, what could one potentially do with this?&nbsp; Theoretically, you could have a user change any style in your site&#8217;s stylesheet by simply having the name of the style and looping through until you have a match.&nbsp; If you were even cleverer, you could store these changes (in a cookie or database) so that the next time the user visited your site the stylesheet would be dynamically outputted with their changes from last time.&nbsp; To make it easy on the user on choosing colors, perhaps a lightweight <a href="http://www.nofunc.com/">JavaScript Color Picker</a> function could be used?&nbsp; Many, many possibilities.
</p>
<p>
<b>Resources:</b>
<br />
<a href="http://www.javascriptkit.com/domref/stylesheet.shtml">DOM Stylesheet Object</a> (Quick Reference)
<br />
<a href="http://www.quirksmode.org/dom/w3c_css.html">DOM Stylesheet Object Compatibility</a> (Detailed)
<br />
<a href="http://codepunk.hardwar.org.uk/css2js.htm">List of JavaScript Names for CSS Properties</a>
</p>      ";}i:10;a:9:{s:5:"title";s:11:"Tweet TwEEt";s:4:"link";s:51:"http://expressionengine.com/blog/entry/tweet_tweet/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1700";s:9:"published";s:20:"2007-04-13T23:13:00Z";s:7:"updated";s:20:"2007-04-13T22:27:05Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:4220:"
        <p>I&#8217;m sure if Mr. Wilson creates a Twitter ExpressionEngine add-on, he would name it TwEEt, so I will not step on his established naming convention.&nbsp; Some recent reactivity to <a href="http://expressionengine.com/forums/viewreply/244869/">a thread about Twitter</a> led me to go ahead and make a plugin for fetching and displaying  Twitter timelines today.&nbsp; I&#8217;m really rather surprised that no 3rd party developers had already done so.
</p>
<p>
<a href="http://expressionengine.com/downloads/details/twitter_timeline/">Twitter Timeline</a> displays Twitter status messages from either the public, a user&#8217;s, or a user&#8217;s &#8220;friends&#8221; timeline, and in a bit friendlier and more optimized way than you would do using Magpie or FeedGrabber.&nbsp; Here is a quick example of how I am using it on <a href="http://ee.koruproductions.com/">my personal site</a>:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;exp</span><span style="color: #007700">:</span><span style="color: #0000BB">twitter_timeline type</span><span style="color: #007700">=</span><span style="color: #DD0000">"user" </span><span style="color: #0000BB">user</span><span style="color: #007700">=</span><span style="color: #DD0000">"email@example.com" </span><span style="color: #0000BB">password</span><span style="color: #007700">=</span><span style="color: #DD0000">"password1" </span><span style="color: #0000BB">limit</span><span style="color: #007700">=</span><span style="color: #DD0000">"1"</span><span style="color: #0000BB">&#125;<br /></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">div </span><span style="color: #007700">class=</span><span style="color: #DD0000">"plugininfo"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">p</span><span style="color: #007700">&gt;&amp;</span><span style="color: #0000BB">ldquo</span><span style="color: #007700">;</span><span style="color: #0000BB">&#123;text&#125;</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">rdquo</span><span style="color: #007700">;&lt;/</span><span style="color: #0000BB">p</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">div </span><span style="color: #007700">class=</span><span style="color: #DD0000">"date"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&#123;created_at format</span><span style="color: #007700">=</span><span style="color: #DD0000">"%g:%i %M %d"</span><span style="color: #0000BB">&#125;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/downloads/details/twitter_timeline/"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Twitter Timeline Plugin</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;<br /></span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">exp</span><span style="color: #007700">:</span><span style="color: #0000BB">twitter_timeline&#125;</span>
</code></div><p>
</p>
<p>
Refer to the plugin information page for all of the parameters and variables available, which includes all of the user data (location, description, profile image, etc.).&nbsp; I tried my best to give you nifty tools for control of the display, including {count} and {switch} variables, as well as conditionals for all of the variables Twitter makes available.&nbsp; It caches the information from Twitter.com, which is handy since their service can tend to be, um...slow...at times.&nbsp; You can set the refresh rate of the Twitter cache, and do not forget that you can use regular Tag Caching as well so it doesn&#8217;t even have to parse the XML unless it needs to.
</p>
<p>
Enjoy!
</p>      ";}i:11;a:9:{s:5:"title";s:26:"Behind the Curtain Part II";s:4:"link";s:67:"http://expressionengine.com/blog/entry/behind_the_curtain_part_two/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1695";s:9:"published";s:20:"2007-04-12T19:54:00Z";s:7:"updated";s:20:"2007-04-12T19:03:06Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:18885:"
        <p>I have intimated before that from my time doing support for ExpressionEngine that I regularly noticed users not taking advantage of some of the simplest of features of ExpressionEngine.&nbsp; In the <a href="http://www.jambor-ee.com/features/entry/questions-for-pmachine/">Jambor-ee interview</a> for example, I said that my &#8220;favorite&#8221; feature is the oft-unused custom status feature.&nbsp; I find them to be simple and straightforward ways of adding metadata to an entry either for establishing a workflow, or as another efficient way for the weblog entries tag to control output.
</p>
<p>
But Part II of Behind the Curtain is going to go even more basic than that.
</p>
<p>
I like working smarter and not harder, and this is especially important when you have more than one person building a site.&nbsp; To that end, if you have not already made them so, <a href="http://expressionengine.com/docs/templates/globals/user_defined.html">Template Global Variables</a> should be your new best friend.&nbsp; Consider the base template we use for every page:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;html_head&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Page Title </span><span style="color: #007700">| </span><span style="color: #0000BB">ExpressionEngine</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;<br /></span><span style="color: #0000BB">&#123;favicon&#125;<br />&#123;stylesheets&#125;<br />&#123;js&#125;<br />&#123;metatags&#125;<br />&#123;reverse_links&#125;<br />&#123;html_head_end&#125;<br /><br />&#123;masthead&#125;<br /><br /></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">div id</span><span style="color: #007700">=</span><span style="color: #DD0000">"header"</span><span style="color: #007700">&gt;<br /></span><span style="color: #0000BB">&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/login"</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;header_logo&#125;<br /></span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;&lt;!-- </span><span style="color: #0000BB">end </span><span style="color: #FF8000">#header --&gt;<br /><br /></span><span style="color: #0000BB">&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/sitemap"</span><span style="color: #0000BB">&#125;<br />&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/simple_search"</span><span style="color: #0000BB">&#125;<br />&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/site_nav" </span><span style="color: #0000BB">loc</span><span style="color: #007700">=</span><span style="color: #DD0000">"location"</span><span style="color: #0000BB">&#125;<br /><br />&#123;wrapper_column_open&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed</span><span style="color: #007700">=</span><span style="color: #0000BB">templates</span><span style="color: #007700">/</span><span style="color: #0000BB">pageNav&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">div id</span><span style="color: #007700">=</span><span style="color: #DD0000">"content"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #0000BB">div</span><span style="color: #007700">&gt;&lt;!-- </span><span style="color: #0000BB">end </span><span style="color: #FF8000">#content --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000BB">&#123;wrapper_column_close&#125;<br /><br />&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/footer"</span><span style="color: #0000BB">&#125;<br /><br />&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"global/copyright"</span><span style="color: #0000BB">&#125;<br /><br />&#123;html_close&#125;</span>
</code></div><p>
</p>
<p>
The title, loc variable for the main navigation template which I described in <a href="http://expressionengine.com/blog/entry/behind_the_curtain_part_one/">Part 1</a>, and whatever goes in the &#8220;content&#8221; div are the only things one needs to worry about when adding a new page.
</p>
<p>
The embeds I hope you are already using for common content anyway.&nbsp; The choice of whether to use an embedded template or a Template Global Variable is rather easy: if you need to use ExpressionEngine tags or PHP, then you need an embedded template.&nbsp; But if not, Template Globals are incredibly efficient, and still let you affect site-wide changes by modifying things in one place.
</p>
<p>
If instead of Template Globals, we were cutting and pasting all of our markup to each template, the base template would be:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;!</span><span style="color: #0000BB">DOCTYPE html PUBLIC </span><span style="color: #DD0000">"-//W3C//DTD XHTML 1.0 Transitional//EN"<br />&nbsp;&nbsp;&nbsp;&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #007700">&gt;<br />&lt;</span><span style="color: #0000BB">html</span><span style="color: #007700">&gt;<br />&lt;</span><span style="color: #0000BB">head</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">meta http</span><span style="color: #007700">-</span><span style="color: #0000BB">equiv</span><span style="color: #007700">=</span><span style="color: #DD0000">"Content-type" </span><span style="color: #0000BB">content</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/html; charset=utf-8" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Page Title </span><span style="color: #007700">| </span><span style="color: #0000BB">ExpressionEngine</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">title</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"shortcut icon" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"/images/design/favicon.ico" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"image/x-icon" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"home" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/" </span><span style="color: #0000BB">title</span><span style="color: #007700">=</span><span style="color: #DD0000">"Home" </span><span style="color: #007700">/&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"stylesheet" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/index.php?css=global/global.css" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/css" </span><span style="color: #0000BB">media</span><span style="color: #007700">=</span><span style="color: #DD0000">"screen, projection" </span><span style="color: #0000BB">charset</span><span style="color: #007700">=</span><span style="color: #DD0000">"utf-8" </span><span style="color: #007700">/&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--</span><span style="color: #0000BB">&#91;if IE 7&#93;</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"stylesheet" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/index.php?css=global/ie7.css" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/css" </span><span style="color: #0000BB">media</span><span style="color: #007700">=</span><span style="color: #DD0000">"screen, projection" </span><span style="color: #0000BB">charset</span><span style="color: #007700">=</span><span style="color: #DD0000">"utf-8" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!</span><span style="color: #0000BB">&#91;endif&#93;</span><span style="color: #007700">--&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--</span><span style="color: #0000BB">&#91;if IE 6&#93;</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">link rel</span><span style="color: #007700">=</span><span style="color: #DD0000">"stylesheet" </span><span style="color: #0000BB">href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://expressionengine.com/index.php?css=global/ie6.css" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/css" </span><span style="color: #0000BB">media</span><span style="color: #007700">=</span><span style="color: #DD0000">"screen, projection" </span><span style="color: #0000BB">charset</span><span style="color: #007700">=</span><span style="color: #DD0000">"utf-8" </span><span style="color: #007700">/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!</span><span style="color: #0000BB">&#91;endif&#93;</span><span style="color: #007700">--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">script src</span><span style="color: #007700">=</span><span style="color: #DD0000">"/js/jquery.js" </span><span style="color: #0000BB">type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text/javascript" </span><span style="color: #0000BB">charset</span><span style="color: #007700">=</span><span style="color: #DD0000">"utf-8"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&lt;/script&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(document).ready(function() &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // toggles the slickbox on clicking the noted link <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('a#sm_toggle').click(function() &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#sm_outer').slideToggle(400);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;);<br /><br />&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&lt;!--&#91;if lt IE 7&#93;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script defer type="text/javascript" src="/js/pngfix_map.js"&gt;&lt;/script&gt;<br /> &lt;!&#91;endif&#93;--&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name="MSSmartTagsPreventParsing" content="true" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv='expires' content='-1' /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv='pragma' content='no-cache' /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name='robots' content='all' /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name='description' content='ExpressionEngine: Publish Your Universe' /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta name="keywords" content="EllisLab ExpressionEngine PHP CMS Content Management System plugins modules business forums gallery weblog blogging software" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Reverse Links from EllisLab network sites --&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rev="codeigniter" href="http://codeigniter.com/"<br />&nbsp;&nbsp;&nbsp;&nbsp;title="Code Igniter: Open Source Web Application Framework that makes writing kick-ass PHP programs simple as apple pie" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rev="pmachinepro" href="http://pmachinepro.com/"<br />&nbsp;&nbsp;&nbsp;&nbsp;title="Flexible and free blogging system that supports advanced features like multiple blogs, moblogging, and much more" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rev="ellislab" href="http://ellislab.com/"<br />&nbsp;&nbsp;&nbsp;&nbsp;title="Where Ideas Hatch" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link rev="enginehosting" href="http://enginehosting.com/"<br />&nbsp;&nbsp;&nbsp;&nbsp;title="High performance web hosting" /&gt;<br />&lt;link rel="alternate" type="application/atom+xml" title="Master Atom feed" href="http://expressionengine.com/feeds/atom/full/" /&gt;<br />&lt;link rel="alternate" type="application/rss+xml" title="Master RSS feed" href="http://expressionengine.com/feeds/rss/full/" /&gt;<br />&lt;/head&gt;<br /><br />&lt;body&gt;<br /><br />&lt;div id="masthead"&gt;<br />&lt;a href="http://ellislab.com/"&gt;&lt;img src="/images/design/ellislab_network.gif" width="293" height="23" alt="Part of the EllisLab Network" /&gt;&lt;/a&gt;<br />&lt;/div&gt;<br /><br /><br />&lt;div id="header"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed="global/login"&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;&lt;a href="http://expressionengine.com/" title="ExpressionEngine"&gt;&lt;img src="/images/design/ee_logo.gif" width="227" height="88" alt="ExpressionEngine Logo" /&gt;&lt;/a&gt;&lt;/h1&gt;<br />&lt;/div&gt;&lt;!-- end #header --&gt;<br /><br />&#123;embed="global/sitemap"&#125;<br />&#123;embed="global/simple_search"&#125;<br />&#123;embed="global/site_nav" loc="location"&#125;<br /><br />&lt;!-- Candy comes in a wrapper --&gt;<br />&lt;div id="wrapperWit"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Hard candy outer shell --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="shell"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Gooey center --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="gooey"&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;embed=templates/pageNav&#125;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="content"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&lt;!-- end #content --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&lt;!-- end #gooey --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&lt;!-- end #shell --&gt;<br />&lt;/div&gt;&lt;!-- end #wrapperWit --&gt;<br /><br />&#123;embed="global/footer"&#125;<br /><br />&#123;embed="global/copyright"&#125;<br /><br />&lt;/body&gt;<br />&lt;/html&gt;</span>
</code></div><p>
</p>
<p>
All of that HTML adds distraction to the task of creating a new page, and complicates things when minor changes need to be made.&nbsp; Don&#8217;t you like the clean and streamlined aesthetic of the code sample at the top much better as well?&nbsp; Plus on some variables like &#123;wrapper_column_open}, which contains:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;!-- </span><span style="color: #0000BB">Candy comes in a wrapper </span><span style="color: #007700">--&gt;<br />&lt;</span><span style="color: #0000BB">div id</span><span style="color: #007700">=</span><span style="color: #DD0000">"wrapperWit"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- </span><span style="color: #0000BB">Hard candy outer shell </span><span style="color: #007700">--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">div id</span><span style="color: #007700">=</span><span style="color: #DD0000">"shell"</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- </span><span style="color: #0000BB">Gooey center </span><span style="color: #007700">--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">div id</span><span style="color: #007700">=</span><span style="color: #DD0000">"gooey"</span><span style="color: #007700">&gt;</span>
</code></div><p>
</p>
<p>
The page author doesn&#8217;t have to remember any CSS id&#8217;s or classes, allowing a designer to control those elements and let the page author focus on content.&nbsp; In this case, he or she just knows to use &#123;wrapper_column_open} or &#123;wrapper_no_column_open} depending on whether the page needs a column or not.
</p>
<p>
Yes, embeds help immensely for shared content and markup, but when you do not need tags or PHP, Template Globals are much more efficient, and have a smaller footprint in the template markup itself.&nbsp; <a href="http://expressionengine.com/forums/member/25657/">Steve Sharpe</a> had the <a href="http://www.jambor-ee.com/features/entry/embeds-and-global-variables/">right idea</a> in his feature article on Jambor-ee about Embeds and Template Globals, but in my mind, still fell a bit short (no offense, Steve, it&#8217;s a great article).&nbsp; In that example, the sample usage for Template Globals doesn&#8217;t really show their strengths, but more importantly, the entirety of the header, sidebar, and footer embedded templates in that article could have all lived as Template Globals.
</p>
<p>
Make wise use of Template Globals and you&#8217;ll not only make your site&#8217;s development process feel easier (especially in team situations), but you will also benefit from the performance gains of using them instead of embeds wherever appropriate.
</p>
<p>
I promise Part III will be meatier and have a larger &#8220;coolness&#8221; factor than this article, but I really felt the need to advocate this feature because so few developers are using it to its full potential.
</p>      ";}i:12;a:9:{s:5:"title";s:30:"Recently Updated Sites Returns";s:4:"link";s:70:"http://expressionengine.com/blog/entry/recently_updated_sites_returns/";s:2:"id";s:38:"tag:expressionengine.com,2007:/12.1681";s:9:"published";s:20:"2007-04-05T17:28:00Z";s:7:"updated";s:20:"2007-04-05T16:48:55Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:14:"Leslie Camacho";s:10:"author_uri";s:23:"http://www.ellislab.com";s:12:"atom_content";s:1491:"
        <p>Just a quick note to let people know that we&#8217;ve implemented the <a href="http://expressionengine.com/showcase/updated/">Recently Updated Sites</a> in the Showcase section. This has been much requested since the redesign and we&#8217;re happy to bring it back. To have your site appear on the list, please follow the <a href="http://expressionengine.com/docs/general/ping_expressionengine.html">Pinging ExpressionEngine.com</a> instructions in the User Guide. Note that pinging ExpressionEngine.com requires a license number (sorry Core users). 
</p>
<p>
The Updated section uses <a href="http://snap.com">Snap.com&#8217;s</a> link preview service so you can see a screen cap of a site before clicking it. Using Snap is a somewhat tentative decision as its one of those love it or hate it services. We&#8217;ve set up the preview link to only appear when someone rolls over the icon and not the link. Given the purpose of the Updated sites section it seems appropriate and dare I say it, useful, to use Snap here. But, if people absolutely hate it we&#8217;ll remove it. 
</p>
<p>
When browsing the Updated sites you&#8217;ll notice that some links are broken. This is because some naughty EE users have not setup the <a href="http://expressionengine.com/docs/cp/admin/weblog_administration/weblog_edit_preferences.html">Weblog URL correctly</a> and the ping sends a bad link. For shame! Make sure you have the &#8220;http://&#8221; at the start of the URL.&nbsp;
</p>      ";}i:13;a:9:{s:5:"title";s:25:"ExpressionEngine Wookiees";s:4:"link";s:65:"http://expressionengine.com/blog/entry/expressionengine_wookiees/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1679";s:9:"published";s:20:"2007-03-29T21:06:00Z";s:7:"updated";s:20:"2007-03-29T20:36:09Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:12:"Paul Burdick";s:10:"author_uri";s:25:"http://www.reedmaniac.com";s:12:"atom_content";s:1698:"
        <p>While cruising around at the <a href="http://jambor-ee.com">Jambor-ee</a> site yesterday, I noticed that in the right column they had the text &#8220;Are you looking for an EE Jedi?&#8221; with an image linking to <a href="http://www.erskinedesign.com/">Erskine Design</a> beneath it.&nbsp;  So, I simply have to ask.&nbsp; If Simon &#8220;Colly&#8221; Collison is an EE Jedi, then what does that make me?&nbsp;  Surely not Yoda.&nbsp; A bit too young.&nbsp; A bit too tall.&nbsp;   Derek Jones commented that with certain grooming habits in my repertoire that perhaps I am an EE Wookiee?&nbsp;  Mull on that, my feisty silkworms.
</p>
<p>
On that same plane of thought, the best part of SXSW (besides developing a purely professional developer crush on <a href="http://veerle.duoh.com/">Veerle</a>) was going into the trade show area of SXSW and finding that some genius was going to be selling USB Flash drives with <a href="http://mimobot.com/swlanding.htm">StarWars characters</a> as their casing.&nbsp; Positively brilliant.&nbsp; I pre-ordered the Darth Vader one a few days ago.
</p>
<p>
Wish I had more things to talk with you, but I am in the unfortunate position of having tons of juicy information at my fingertips but it is all rated our top level clearance of &#8220;Hush!&#8221; so I cannot tell you about it.&nbsp;  I definitely am not ready to talk about my roll in The Great EllisLab Switchover of 2007.&nbsp;  I still wake up late in the afternoon (during my second nap) in a cold sweat cursing MySQL and the CEO who never updated his own sites to the current versions while having too many of his database table fields in odd places.&nbsp; Damn you, Ellis!
</p>      ";}i:14;a:9:{s:5:"title";s:29:"Behind the Curtain - Part One";s:4:"link";s:67:"http://expressionengine.com/blog/entry/behind_the_curtain_part_one/";s:2:"id";s:48:"tag:expressionengine.com,2007:blog/entry/14.1677";s:9:"published";s:20:"2007-03-26T17:20:00Z";s:7:"updated";s:20:"2007-03-26T16:25:05Z";s:6:"author";s:32:"
            
                  ";s:11:"author_name";s:11:"Derek Jones";s:10:"author_uri";s:20:"http://ellislab.com/";s:12:"atom_content";s:8553:"
        <p>Here is my first contribution to what will be a short series of entries revealing some of the inner workings of how we are using ExpressionEngine on the EllisLab family of sites.&nbsp; Today&#8217;s example wasn&#8217;t possible prior to 1.5 without the use of PHP or a plugin, and now in addition to being a standard feature, is also extremely efficient.&nbsp; If you haven&#8217;t guessed, I&#8217;m talking about <a href="http://expressionengine.com/docs/templates/embedding_templates.html">embed variables</a>.
</p>
<p>
The ExpressionEngine site has multiple navigation menus on a given page: the main tabs and sidebar navigation within a given section.&nbsp; So what&#8217;s the normal solution used for indicating &#8220;current&#8221; navigation on a given menu?&nbsp; CSS, with id&#8217;s on menu items, the &lt;body&gt; tag, etc.&nbsp; I cannot begin to tell you how tedious I find making all of those selectors in CSS.&nbsp; It really starts to feel obtuse to me when you have one selector for the &#8216;section&#8217; and then need another one for each &#8216;page&#8217; so that both main and submenus on each page highlight the proper menu item as being &#8216;current&#8217;.
</p>
<p>
My solution was to use embed variables to apply a <i>single class</i> to the actual current menu item, instead of using a maze of over 50 selectors in the CSS to determine the current page location.&nbsp; Every page already has an embed for each navigation menu, so it took very little work:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"template_group/page_nav_template"</span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
So, let&#8217;s add a location variable.
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&#123;embed</span><span style="color: #007700">=</span><span style="color: #DD0000">"template_group/page_nav_template" </span><span style="color: #0000BB">loc</span><span style="color: #007700">=</span><span style="color: #DD0000">"here"</span><span style="color: #0000BB">&#125;</span>
</code></div><p>
</p>
<p>
And in the embedded template:
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;</span><span style="color: #0000BB">ul</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li &#123;if </span><span style="color: #DD0000">'&#123;embed:loc&#125;' </span><span style="color: #007700">== </span><span style="color: #DD0000">'here'</span><span style="color: #0000BB">&#125;class</span><span style="color: #007700">=</span><span style="color: #DD0000">"current"</span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">if&#125;</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;path=template_group/here&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Here</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li &#123;if </span><span style="color: #DD0000">'&#123;embed:loc&#125;' </span><span style="color: #007700">== </span><span style="color: #DD0000">'there'</span><span style="color: #0000BB">&#125;class</span><span style="color: #007700">=</span><span style="color: #DD0000">"current"</span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">if&#125;</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;path=template_group/there&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">There</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li &#123;if </span><span style="color: #DD0000">'&#123;embed:loc&#125;' </span><span style="color: #007700">== </span><span style="color: #DD0000">'elsewhere'</span><span style="color: #0000BB">&#125;class</span><span style="color: #007700">=</span><span style="color: #DD0000">"current"</span><span style="color: #0000BB">&#123;</span><span style="color: #007700">/</span><span style="color: #0000BB">if&#125;</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"&#123;path=template_group/elsewhere&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Elsewhere</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">ul</span><span style="color: #007700">&gt;</span>
</code></div><p>
</p>
<p>
The resulting markup feels much cleaner to me than the alternative of giving each item an id, and styling based on parent container selectors, and it carries semantic information along with it that is relevant to the page content, which is a big bonus to me.
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;</span><span style="color: #0000BB">ul</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://example.com/template_group/here/"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Here</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li </span><span style="color: #007700">class=</span><span style="color: #DD0000">"current"</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://example.com/template_group/there/&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">There</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;&lt;</span><span style="color: #0000BB">a href</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://example.com/template_group/elsewhere/&#125;"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Elsewhere</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">a</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">li</span><span style="color: #007700">&gt;<br />&lt;/</span><span style="color: #0000BB">ul</span><span style="color: #007700">&gt;</span>
</code></div><p>
</p>
<p>
And when a code monkey is creating a new page from the stock page template, all they have to do is switch the loc= parameter to whatever the actual location is.&nbsp; The code monkey normally meant me, of course, and I do like when I can make things as easy on myself as possible.&nbsp; But during the last throes, it was an all-hands effort, and explaining this to the gang took only a few seconds, and it instantly clicked with everyone.&nbsp; And it prevents these individuals from ever having to step foot in the stylesheet to add menu items.
</p>
<p>
NOTE: See <a href="http://expressionengine.com/knowledge_base/article/troubleshooting_conditionals/">point number six</a> of this KB article for some security information regarding the use of quoted variables in conditionals that is applicable depending on the source of your value for the variable.
</p>      ";}}s:7:"channel";a:8:{s:5:"title";s:7:"EE Blog";s:8:"subtitle";s:29:"EE Blog:ExpressionEngine Blog";s:4:"link";s:28:"http://expressionengine.com/";s:9:"link_self";s:42:"http://expressionengine.com/xml/atom/full/";s:7:"updated";s:20:"2007-05-16T20:42:04Z";s:6:"rights";s:34:"Copyright (c) 2007, Leslie Camacho";s:9:"generator";s:16:"ExpressionEngine";s:2:"id";s:35:"tag:expressionengine.com,2007:05:07";}s:9:"textinput";a:0:{}s:5:"image";a:0:{}s:9:"feed_type";s:4:"Atom";s:12:"feed_version";N;s:8:"encoding";s:5:"utf-8";s:5:"stack";a:0:{}s:9:"inchannel";b:0;s:6:"initem";b:0;s:9:"incontent";b:0;s:11:"intextinput";b:0;s:7:"inimage";b:0;s:13:"current_field";s:0:"";s:17:"current_namespace";b:0;s:4:"etag";b:0;s:5:"ERROR";s:0:"";s:19:"_CONTENT_CONSTRUCTS";a:6:{i:0;s:7:"content";i:1;s:7:"summary";i:2;s:4:"info";i:3;s:5:"title";i:4;s:7:"tagline";i:5;s:9:"copyright";}s:16:"_KNOWN_ENCODINGS";a:3:{i:0;s:5:"UTF-8";i:1;s:8:"US-ASCII";i:2;s:10:"ISO-8859-1";}s:15:"source_encoding";s:5:"UTF-8";s:13:"last_modified";s:31:"Wed, 16 May 2007 19:42:04 GMT
";}