<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.waycoolwebdesign.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Way Cool Web Design Blog</title>
 <link>http://www.waycoolwebdesign.com/Blog/feed</link>
 <description>RSS feed for the main blog</description>
 <language>en</language>
<item>
 <title>Vertical Centering of Tableless HTML Using CSS and jQuery</title>
 <link>http://www.waycoolwebdesign.com/Blog/2010/02/17/Vertical-Centering-Tableless-HTML-Using-CSS-and-jQuery</link>
 <description>&lt;p&gt;I&#039;ve seen other &lt;a href=&quot;http://www.jakpsatweb.cz/css/css-vertical-center-solution.html&quot; target=&quot;_blank&quot;&gt;vertical text centering techniques&lt;/a&gt; and used them successfully in certain situations. There seemed to be other situations where I couldn&#039;t get the techniques to work. I figured I&#039;d give jQuery a try and see if I could work it out more easily for a group of objects. For my purposes, creating a list of links, I needed to use a fixed height for the &amp;lt;li&amp;gt;. &lt;/p&gt;
&lt;p&gt;Final should look something like this:&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;div class=&quot;vertical1&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Item 1&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Item 2 is a little bit longer&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Item 3 is ridiculously long. Hopefully it feels more important now that it has used so much space.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;So you&#039;ll need a list. I was making clickable buttons with backgrounds so my HTML/CSS may have more tags than you&#039;ll need. I ended up needing some &amp;lt;span&amp;gt; tags inside the &amp;lt;a&amp;gt; tags, such as:&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&amp;quot;vertical1&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Item 1&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Item 2 is a little bit longer&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Item 3 is ridiculously long. Hopefully it feels more important now that it has used so much space.&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;For CSS, use something like the below. I had needed:&lt;br /&gt;.vertical1 ul,&lt;br /&gt;.vertical1 li    {&lt;br /&gt;    margin: 0;&lt;br /&gt;    padding: 0;&lt;br /&gt;    }&lt;br /&gt;.vertical1 li    {&lt;br /&gt;    background: none;&lt;br /&gt;    height: 135px;&lt;br /&gt;    width: 224px;&lt;br /&gt;    position: relative;&lt;br /&gt;    margin-top: 9px;&lt;br /&gt;    }&lt;br /&gt;.vertical1 a    {&lt;br /&gt;    color: #000;&lt;br /&gt;    height: 135px;&lt;br /&gt;    width: 224px;&lt;br /&gt;    display: block;&lt;br /&gt;    background: none orange;&lt;br /&gt;    border: none;&lt;br /&gt;    }&lt;br /&gt;.vertical1 a:hover    {&lt;br /&gt;    background-position: 0 -135px;&lt;br /&gt;    }&lt;br /&gt;.vertical1 span    {&lt;br /&gt;    position: absolute;&lt;br /&gt;    display: block;&lt;br /&gt;    width: 140px;&lt;br /&gt;    margin-left: 15px;&lt;br /&gt;    line-height: 1.1111em;&lt;br /&gt;    font-size: 12px;&lt;br /&gt;    }&lt;/p&gt;
&lt;p&gt;You&#039;ll need &lt;a href=&quot;http://jquery.com/&quot; target=&quot;_blank&quot;&gt;jQuery&lt;/a&gt;. Use something like this:&lt;br /&gt;$(&amp;quot;.vertical1 li&amp;quot;).each(function () { &lt;br /&gt;       li_height = $(this).height();&lt;br /&gt;       span_height = $(this).find(&amp;quot;span&amp;quot;).height();&lt;br /&gt;       halfway = (li_height/2) - (span_height/2);&lt;br /&gt;       $(this).find(&amp;quot;span&amp;quot;).css(&amp;quot;top&amp;quot;, halfway);&lt;br /&gt;    });&lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2010/02/17/Vertical-Centering-Tableless-HTML-Using-CSS-and-jQuery#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/HTML-CSS">HTML &amp;amp; CSS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/jquery">jquery</category>
 <pubDate>Wed, 17 Feb 2010 10:31:35 -0500</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">250 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Drupal Jquery JCarousel Implementation</title>
 <link>http://www.waycoolwebdesign.com/Blog/2010/01/31/Drupal-Jquery-JCarousel-Implementation</link>
 <description>&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;A recent project put us in need of a carousel. Jcarousel provided the basics for what we needed however we had to add some additional love to get the carousel working the way the client envisioned.&lt;/p&gt;&lt;p&gt;We had to theme the block.tpl file for the carousel, using PHP to achieve our goal. The biggest issue we needed to address was that the carousel would need to start on the same thumbnail (depending on a page&#039;s parent) whether it was on a parent or child page. So even though jcarousel provides a way to start the carousel on a particular thumbnail, we needed a dynamic way to do that since the &amp;quot;home&amp;quot; thumbnail changes throughout the site depending on which project you are on. If you land on Parent A or on anyof Parent A&#039;s child pages, the carousel needed to start withProject A&#039;s thumbnail.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;First we needed to control project parents vs. project children. We used 2 content types for this, with a selector on the child type so we could choose which project parent it belonged to. We added a CCK field to project parents allowing them to choose a carousel ordering.&lt;/p&gt;
&lt;p&gt;Next we created a view that pulled the parents as a simple HTML list. Each parent also has a huge background photo, so we used imagecache to create a thumbnail from this for the carousel. The view was shown in a block, whose view-view-list--carousel--block.tpl.php file we themed. We loaded the node form the block:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;$nodeid = (arg(0) == &#039;node&#039; &amp;amp;&amp;amp; is_numeric(arg(1)))?arg(1):FALSE;&lt;br/ &gt; $node = node_load($nodeid); $nid = $node-&amp;gt;nid;&lt;/pre&gt;&lt;br /&gt;...and depending on the node type there was further code. If it was a child we looked for its parent.&lt;/p&gt;
&lt;p&gt;Once we determined the parent (or found out we were already on a parent), we could grab the carousel order from the CCK field of the project we were on so we could tell jcarousel to $start on that item. We also used jquery to provide an active class to the current list item since Drupal wouldn&#039;t necessarily do that if were on a child page.&lt;/p&gt;
&lt;p&gt;Using the technique above we were able to create a carousel that starts at an appropriate place even if we aren&#039;t specifically on that page. As long as we&#039;re on any of a project&#039;s pages, the carousel starts correctly and we can even style it as such with the addition of an appropriate active class. &lt;/p&gt;
&lt;p&gt;You may still be able to see the carousel at QuinnEvans.com in the project section.&lt;/p&gt;
</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2010/01/31/Drupal-Jquery-JCarousel-Implementation#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/Drupal">Drupal</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/jquery">jquery</category>
 <pubDate>Sun, 31 Jan 2010 17:59:39 -0500</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">234 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Customize the Ubercart Email Based on Product</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/09/23/Customize-Ubercart-Email-Based-Product</link>
 <description>&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Let&#039;s learn to customize the Ubercart 2 purchase confirmation email based on product. Modifying the message is fairly straightforward, though not the most user-friendly in a Drupally sense.&lt;/p&gt;
&lt;p&gt;What I needed was a way to customize text on the email based on what products had been purchased. I imagine this could be something added later to the node itself so that each product could have it&#039;s own text blurb added to the email when purchased, or if related to a purchased product, however I needed a quicker solution.&lt;/p&gt;
&lt;h2&gt;Find the Ubercart Email Template&lt;/h2&gt;
&lt;p&gt;In your file structure find modules/ubercart/uc_order/templates/customer.itpl.php for editing. At the top of the template add something like:&lt;br /&gt;&amp;lt;?php foreach ($order-&amp;gt;products as $product2) {&lt;br /&gt;    if ($product2-&amp;gt;nid == 52) { $flag1 = 1; }&lt;br /&gt;    if ($product2-&amp;gt;nid == 53) { $flag2 = 1; }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;You will of course need the &amp;quot;nid&amp;quot; of whatever your product nodes are. An example of this usage would be if you had a sporting goods store that sold products as well as training events like baseball camps. You could use something like this to check to see if the user had purchased a baseball glove and then insert a blurb into the email about upcoming baseball training camps.&lt;/p&gt;
&lt;p&gt;In my case I was selling events and wanted a way to remind the user of the directions to the event. Since the events could be held in different buildings and/or rooms we needed to provide text based on the event. &lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/09/23/Customize-Ubercart-Email-Based-Product#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CMS">CMS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Drupal">Drupal</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Ecommerce">Ecommerce</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Ubercart">Ubercart</category>
 <pubDate>Wed, 23 Sep 2009 10:19:51 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">218 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Multiple Event Registration Using Drupal &amp; Ubercart Attributes</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/09/23/Multiple-Event-Registration-Using-Drupal-Ubercart-Attributes</link>
 <description>&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Although not as flexible as Webform, we decided to use Ubercart Attributes to enable multiple event registration using Drupal. Here&#039;s a quick look into how to use it yourself. We use Drupal 6 the Ubercart 2 module.&lt;/p&gt;
&lt;p&gt;This solution may not be suitable if you have advanced needs for information gathering or special user tracking, however if your need is simply to gather some info and allow a user to pay in advance for an event registration, this does the trick.&lt;/p&gt;
&lt;p&gt;If you haven&#039;t yet, create an Event product class in Ubercart via the &amp;quot;Manage Classes&amp;quot; page (/admin/store/products/classes). Create a test event node we can play with.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;In /admin/store/attributes click &amp;quot;add an attribute&amp;quot;, for example, &amp;quot;Attendee Name&amp;quot;. Choose &amp;quot;text field&amp;quot;. Now let&#039;s edit your test event node. Near the top of the edit screen is the extra navigation Ubercart adds to product content types (&amp;quot;classes&amp;quot;). Choose &amp;quot;Attributes&amp;quot;. Click the &amp;quot;add attributes form&amp;quot; link. You will see a box containing all the Attributes you created earlier. If you only created the one &amp;quot;Attendee Name&amp;quot; attribute then there will only be one attribute in this box. Select it and click the &amp;quot;add attributes&amp;quot; button. This attribute will now show up in your &amp;quot;add to cart&amp;quot; area of the node.&lt;/p&gt;
&lt;p&gt;All that remains is some styling and you&#039;re all set!&lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/09/23/Multiple-Event-Registration-Using-Drupal-Ubercart-Attributes#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CMS">CMS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Drupal">Drupal</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Ecommerce">Ecommerce</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Ubercart">Ubercart</category>
 <pubDate>Wed, 23 Sep 2009 09:37:37 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">216 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Theming Drupal 5.x, or, How To Thumb-Wrestle Drupal 5 Into Submission and Lay It Low At Your Mighty Feet, Part 3</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/06/01/Theming-Drupal-5-Part-3</link>
 <description>&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Parts 1 and 2 revealed some wonderful theming advice however it is now time for the best piece of Drupal 5 theming advice I can give, summed up in a few small words:&lt;/p&gt;&lt;p&gt;Use Drupal 6&lt;/p&gt;&lt;p&gt;Yep, there it is. The best advice I can give is to use Drupal 6. Unfortunately Drupal 6 is no cake walk either, but it is a vast improvement over 5. I am envious of all my client&#039;s Drupal 6 sites, as this one os Drupal 5. As amazing as this site was to me when I created it, with all the glory Drupal provides, it&#039;s a dinosaur compared to 6. &lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/06/01/Theming-Drupal-5-Part-3#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CMS">CMS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Drupal">Drupal</category>
 <pubDate>Wed, 23 Sep 2009 09:55:27 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">217 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Style Unordered List of Links or Menu with CSS Divider</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/05/09/Style-Unordered-List-Links-or-Menu-with-CSS-Divider</link>
 <description>&lt;p&gt;In this article we&#039;ll discuss creating an unordered list of menu links with a pipe in between, which is an oft-used styling for navigation, particularly in the footer of a site. Of course, feel free to use whatever divider you&#039;d like instead of a pipe, however just know that if you want pure CSS with no image used for the divider, you can only use straight lines and dotted/dashed lines. So for example if you wanted to use the colon symbol (:) for your divider you&#039;d need an image unless you wanted to try the not-so-well-supported :after trick.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;I still often see folks coding lists of links with no ul/li structure. Usually they just do something like:&lt;br /&gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;link 1&amp;lt;/a&amp;gt; | &amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;link 2&amp;lt;/a&amp;gt; |&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;link 3&amp;lt;/a&amp;gt; &lt;/p&gt;
&lt;h2&gt;Proper Unordered List Styling&lt;/h2&gt;
&lt;p&gt;Lists of menu links should always be in list format, because its a list. So it should remain UL/LI format like so:&lt;/p&gt;&lt;p&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;item 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;item 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;item 3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;p&gt;In your CSS, apply a background &amp;quot;pipe&amp;quot; image to every LI at the far left and add left padding. Then try a declaration such as:
li:first-child {background:none; padding-left:0;}
(your real code may vary of course since if you want to target this specific list you will need other classes involved.) This should work in FireFox and IE7/8. Other browsers such as IE6 may require jQuery or other workarounds to listen to the &amp;quot;:first-child&amp;quot; part of the declaration. Your CSS would look something like this:&lt;/p&gt;
&lt;p&gt;ul, li { margin: 0; padding: 0; }&lt;br /&gt;li { padding: 0 5px 0 9px; background: url(pipe.gif) 0 .3em no-repeat; list-style-type: none; display: inline; }&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;h2&gt;UL/LI List CSS Styling Help&lt;/h2&gt;
&lt;p&gt;You can also do the border-left way suggested above. I offered the pipe option because from years of creating sites I know that often designers do not want the pipe to be the exact height of the list item. This would often lead to extraneous spans just to get the pipe to be the &amp;quot;right&amp;quot; height that the designer wanted (and the client approved). Although a background pipe doesn&#039;t scale if the font is resized, it will keep the designers and the clients happy that you &amp;quot;coded it right&amp;quot;. If you or your clients aren&#039;t picky, the border option is easier and scalable.&lt;/p&gt;
&lt;p&gt;On a final note: doing lists this way, as inline, can lead to spacing issues because not all of the space between to items is abolished in this situation. Notice the padding declaration above is uneven (padding: 0 5px 0 9px). To get rid of all the space you&#039;ll need to float the &amp;lt;li&amp;gt; instead of changing them to inline. Then you&#039;ll need to clear the containing &amp;lt;ul&amp;gt;. &lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/05/09/Style-Unordered-List-Links-or-Menu-with-CSS-Divider#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CSS-Tutorial">CSS Tutorial</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/HTML-CSS">HTML &amp;amp; CSS</category>
 <pubDate>Sat, 09 May 2009 11:34:15 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">212 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Theming the Date Module for Drupal 5</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/05/08/Theming-Date-Module-for-Drupal-5</link>
 <description>&lt;p&gt;WayCoolWebDesign recently had two Drupal web sites in production at the same time that had design goals of using combined event dates. While the default display for dates running more than one day is something like &amp;quot;07 Apr 2009 - 12 Apr 2009&amp;quot; we instead needed the dates to appear shortened as &amp;quot;7-12 APR 2009&amp;quot;. While the date module allows for many different lengths of dates I didn&#039;t see that this option was offered. It was time for more drastic measures.&lt;/p&gt;
&lt;h2&gt;Theming the Date Module&lt;/h2&gt;
&lt;p&gt;While I&#039;m not certain this exactly qualifies as theming since I am not changing display code but rather some functionality. Semantics aside, thank goodness the function used to display the dates is offered as a themable function.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;The function you&#039;d look for is the &amp;quot;date_display_combination&amp;quot; function inside &amp;quot;date.theme&amp;quot; file within the Date module. Before adding this function to my template.php file I had used the normal course of choosing pretty short dates within the Drupal functionality, so I knew that dates were set to show something like &amp;quot;07 Apr 2009&amp;quot; before fiddling with the function.&lt;/p&gt;&lt;p&gt;Next I copied the entire function to the template.php file. I then added this block of code right after the point in the function where $date1 and $date2 have been assigned the Drupal-formatted dates (@line 15 or so):&lt;/p&gt;&lt;p&gt;// START: &lt;br /&gt;  $jbyear1 = substr($dates[&#039;value&#039;][&#039;db&#039;][&#039;datetime&#039;],0,4);&lt;br /&gt;  $jbmonth1 = substr($dates[&#039;value&#039;][&#039;db&#039;][&#039;datetime&#039;],5,2);&lt;br /&gt;  $jbyear2 = substr($dates[&#039;value2&#039;][&#039;db&#039;][&#039;datetime&#039;],0,4);&lt;br /&gt;  $jbmonth2 = substr($dates[&#039;value2&#039;][&#039;db&#039;][&#039;datetime&#039;],5,2);&lt;br /&gt;  $jbday1 = substr($dates[&#039;value&#039;][&#039;db&#039;][&#039;datetime&#039;],8,2);&lt;br /&gt;  if (($jbyear1 == $jbyear2) &amp;amp;&amp;amp; ($jbmonth1 == $jbmonth2) &amp;amp;&amp;amp; ($date1 != $date2))    {&lt;br /&gt;      $date1 = $jbday1;&lt;br /&gt;    switch($date1)    {&lt;br /&gt;        case &#039;01&#039;: $date1=&#039;1&#039;; break;&lt;br /&gt;        case &#039;02&#039;: $date1=&#039;2&#039;; break;&lt;br /&gt;        case &#039;03&#039;: $date1=&#039;3&#039;; break;&lt;br /&gt;        case &#039;04&#039;: $date1=&#039;4&#039;; break;&lt;br /&gt;        case &#039;05&#039;: $date1=&#039;5&#039;; break;&lt;br /&gt;        case &#039;06&#039;: $date1=&#039;6&#039;; break;&lt;br /&gt;        case &#039;07&#039;: $date1=&#039;7&#039;; break;&lt;br /&gt;        case &#039;08&#039;: $date1=&#039;8&#039;; break;&lt;br /&gt;        case &#039;09&#039;: $date1=&#039;9&#039;; break;&lt;br /&gt;        default: $date1=$date1; break;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;// END: &lt;/p&gt;
&lt;h2&gt;More Customization of the Drupal Date Module&lt;/h2&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;I&#039;m not a heavy PHP guy so my code is never elegant. I was not hoping to solve every date issue that may come up, only this particular one. All I was hoping to achieve was that if an event date had more than one day, and the years of both dates were the same, plus the months of both dates were the same, I wanted to combine them. I could see that if Drupal wanted to output &amp;quot;07 Apr 2009&amp;quot; all I need to do was grab the first 2 digits and make that into $date1. Then I ran a switch to get rid of the annoying zero that appears when the date is a single digit 1-9.&lt;/p&gt;
&lt;p&gt;After adding this block of code Drupal would now have the first date as a one or two digit number and the second date would be kept as the unaltered second date. Then when combined as normal they&#039;d show the way we intended. The final piece to the puzzle was changing &amp;quot;5-7 Apr 2009&amp;quot; into &amp;quot;5-7 APR 2009&amp;quot; by using CSS text-transform: uppercase. &lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/05/08/Theming-Date-Module-for-Drupal-5#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CMS">CMS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Drupal">Drupal</category>
 <pubDate>Fri, 08 May 2009 18:58:14 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">211 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Nailing Down Drupal Requirements</title>
 <link>http://www.waycoolwebdesign.com/2009/03/21/Nailing-Down-Drupal-Requirements</link>
 <description>&lt;p&gt;Nailing down requirements is important for any web site project but it&#039;s something folks seem to forget about when building Drupal sites. Maybe it&#039;s because Drupal is so maleable, or maybe it&#039;s that people assume Drupal can do it so why bother really fleshing out the specs before building?&lt;/p&gt;&lt;p&gt;Not knowing the specs before building is a bad idea even if you &lt;i&gt;are&lt;/i&gt; using the world&#039;s greatest CMS.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;A simple example is quotes. Clients love quotes from people they&#039;ve worked with, don&#039;t they? Heck, I love quotes too, or at least I fell in love with them while building this site.&lt;/p&gt;&lt;p&gt;Quotes are a great example for why you should fully flesh out requirements because they can be handled in a couple different ways. I&#039;ve worked on projects where quotes were directly tied to a page, meaning when a certain page was called, the quote viewed on the page is always the same, whether it appears in the center or a column, or whatever. I&#039;ve also worked on sites where the quotes were totally random. Usually this means the quotes are in a particular column but any quote could show on any page for that theme/content type. There is also this site, where some quotes are totally random and some are drawn randomaly from a smaller group. For example, the quotes in the left column of this site can be any quote pulled from all my quotes, but the center quote on project pages are randomly drawn from ones that are related to the project.&lt;/p&gt;&lt;p&gt;That&#039;s three distinct ways to render quotes, and while similar, they all need to be handled in a different way by Drupal. I find quotes related to a page are best handled by creating a CCK field for a content type. Random quotes can be drawn from a pool of quotes via a view. The related views can also be a view but they require a CCK type for a content type so each can be chosen as being related to a certain node. &lt;/p&gt;</description>
 <pubDate>Sat, 21 Mar 2009 06:30:46 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">207 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Designing &amp; Coding CSS Special Effects</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/03/18/Designing-Coding-CSS-Special-Effects</link>
 <description>&lt;p&gt;Using CSS for special effects has gotten easier with better browser support for CSS and PNG graphics. Although still painful in IE6, these changes have made special effects more fun to use. Using them requires a little planning though.&lt;/p&gt;&lt;p&gt;If you&#039;re a true designer for the web you know that web design is not all about a pretty face for a web site. It&#039;s about planning. Planning for a user&#039;s reactions, planning for content to grow, and on it goes. So in this article we&#039;ll talk a bit about planning for and executing special effects. I&#039;ll use some real-life examples from sites I&#039;ve worked on.&lt;/p&gt;
&lt;h2&gt;Special CSS Effects Using PNGs For Transparency&lt;/h2&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;First up is the Reston Virginia &lt;a href=&quot;/Projects/Pet-Fiesta-2009&quot;&gt;Pet Fiesta&lt;/a&gt;. That&#039;s right, a party for your pets! In this design I was given a logo, so I based the design on some colours used in the logo, plus the whole fiesta vibe. The background is a sort of stucco feel but that&#039;s a fairly mundane repeating background. The special part is the jagged red line between the header and body content, echoing the jagged red line from the hat which the logo animals are wearing.&lt;/p&gt;&lt;p&gt;The first step here was knowing I needed something to dress up the design and to help marry the header with the body content area. Like The Dude&#039;s rug in The Big Lebowski, I needed something to tie the room together. I figured a big jagged line echoing the hat would be nice. The problems that went through my head were:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;do i want to have to cut all those images for where the jagged line overlaps the header and body and left/right columns&lt;/li&gt;&lt;li&gt;how will i be able to get this to work with the flash piece that is supposed to show at the top of the body area?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;What I decided was that I needed one graphic that had transparency. This way I would not have to cut a bunch of graphics but could instead cut one image that I could layer on top of the design. A GIF was ruled out because I didn&#039;t want to have to fuss with getting the jagged line placed EXACTLY right so the edges all matched the various colours it was overlapping, and additionally it probably wouldn&#039;t have looked good overlapping the Flash piece.  The answer was to use a PNG.&lt;/p&gt;
&lt;h2&gt;Using PNG and CSS to Achieve Special Effects &lt;/h2&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Using a PNG meant now I was opening another can of worms because IE6 doesn&#039;t support PNG. In order to use them you have to use something like JQuery with PNGFix. This was OK with me because from the beginning I was planning to use JQuery, knowing the shadowed edges of the design would need PNG-power as well.&lt;/p&gt;&lt;p&gt;I went into Illustrator and used a brush to create a fat, irregular-edged but straight line. I then used a filter to make the line jag up and down. I then pasted this as a smart object into Photoshop. Since it remained a vector shape I could resize it without loss of clarity until it looked right in the design. Then I saved out just this jagged line as a PNG.&lt;/p&gt;&lt;p&gt;I created a &amp;lt;div&amp;gt; at the bottom of the HTML template for this design, using CSS to size the div. I placed the jagged line PNG inside the div, then used CSS to position the jag up in the header, overlapping the other design elements including the flash piece. Once the flash was saved out with a transparent background and the wmode was set for its embedding, the jag appears to overlap the flash piece.&lt;/p&gt;</description>
 <comments>http://www.waycoolwebdesign.com/Blog/2009/03/18/Designing-Coding-CSS-Special-Effects#comments</comments>
 <category domain="http://www.waycoolwebdesign.com/Blog/CSS-Tutorial">CSS Tutorial</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/HTML-CSS">HTML &amp;amp; CSS</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/Web-Site-Design">Web Site Design</category>
 <pubDate>Wed, 18 Mar 2009 17:29:26 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">204 at http://www.waycoolwebdesign.com</guid>
</item>
<item>
 <title>Say &quot;No&quot; To Multiple Style Sheets</title>
 <link>http://www.waycoolwebdesign.com/Blog/2009/03/18/Say-No-Multiple-Style-Sheets</link>
 <description>&lt;div class=&quot;update1&quot;&gt;
&lt;p&gt;UPDATE: January 31, 2010...  This article makes reference to the fact I previously needed to use additional style sheets to target certain browsers such as Safari or IE6. I no longer use even these additional style sheets. Instead I use the &lt;a href=&quot;http://rafael.adm.br/css_browser_selector/&quot; target=&quot;_blank&quot; title=&quot;Opens a new window&quot;&gt;CSS Browser Selector&lt;/a&gt; javascript that allows me to target browsers inside my single CSS stylesheet.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;So, I&#039;ve had enough of the multiple style sheet thing. Actually, I had enough of it when I first heard of it, years ago when it was touted as &amp;quot;the right way&amp;quot; to go about setting up CSS. The premise is this: use one style sheet to set all elements of a browser back to ground zero, often called a &amp;quot;reset&amp;quot; style sheet; use one style sheet for fonts; use one style sheet for colors; use one for other stuff like layout.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Wow, what a pain in the ass. And I mean that from a couple viewpoints -- from having to set it up, to having to maintain it as the original coder, to having to update it as the non-original coder.&lt;/p&gt;
&lt;p&gt;When it comes to CSS I do try to do things &amp;quot;the right way&amp;quot; because I realize in the long run some extra work or setup, etc, pays off later. For example a web site doesn&#039;t have to be &amp;quot;valid HTML&amp;quot; to run just fine in browsers. Even cross-browser sites don&#039;t necessarily &amp;quot;need&amp;quot; to be valid. We do it because it helps down the line in other ways, and because we care about doing things well as an HTML professional.&lt;/p&gt;
&lt;p&gt;But this whole multiple style sheet issue is ridiculous. I&#039;ve worked on projects where &amp;quot;lead&amp;quot; coders have demanded I work a certain way, which I honor because I&#039;ve accepted the role as subordinate and its therefore a request of my client. I&#039;ve seen articles from highly respected sites in the industry about &lt;a href=&quot;http://www.alistapart.com/articles/progressiveenhancementwithcss&quot; title=&quot;Opens a new window&quot; target=&quot;_blank&quot;&gt;multiple style sheets&lt;/a&gt;. But I just don&#039;t buy it.&lt;/p&gt;
&lt;div class=&quot;google_ad1&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-2938344934790216&quot;;
/* 200x200 for Blog, created 3/11/09 */
google_ad_slot = &quot;6360764911&quot;;
google_ad_width = 200;
google_ad_height = 200;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;/div&gt;&lt;h2&gt;Why So Cranky About Multiple Style Sheets?&lt;/h2&gt;
&lt;p&gt;My reasons are pretty simple. I&#039;ve been on the side of the person creating those style sheets, and I&#039;ve been the person who had to edit those style sheets created by others (and even created by me), and I can&#039;t possibly fathom how all those style sheets add up to a savings in time. I see strong production value and savings in time and money in using as few style sheets as possible because very simply, it is easier to track down a style to make a change if its all in one style (or as much as possible in one sheet). Multiple style sheets means knowing or searching multiple files for what might be the style you&#039;re looking to update. Big waste of time.&lt;br /&gt;I&#039;ve heard some of the arguments and I just can&#039;t agree. It hasn&#039;t proven to be a production value to me.&lt;/p&gt;&lt;p&gt;There are times when I HAVE to use separate sheets because I know of no other way to acheive certain goals, such as targeting Safari. In those cases I do have to have separate style sheets.&lt;/p&gt;&lt;p&gt;For your info, although the Way Cool Web Design site does NOT support IE6, you can target certain version of IE by using IE conditional comment like this:&lt;br /&gt;&amp;lt;!--[if IE 6]&amp;gt; &amp;lt;link href=&amp;quot;ie6.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;/p&gt;&lt;p&gt;You can also target Safari by using a malformed style sheet call:&lt;br /&gt;
&amp;lt;link type=&amp;quot;text/nonsense&amp;quot; rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;safari.css&amp;quot; media=&amp;quot;all&amp;quot;&amp;gt;&lt;/p&gt;&lt;p&gt;The above situations are the some of the only times I use multiple style sheets. So, are you buying into the hype of using multiple style sheets?&lt;/p&gt;</description>
 <category domain="http://www.waycoolwebdesign.com/Blog/CSS-Tutorial">CSS Tutorial</category>
 <category domain="http://www.waycoolwebdesign.com/Blog/HTML-CSS">HTML &amp;amp; CSS</category>
 <pubDate>Wed, 18 Mar 2009 07:55:39 -0400</pubDate>
 <dc:creator>John</dc:creator>
 <guid isPermaLink="false">203 at http://www.waycoolwebdesign.com</guid>
</item>
</channel>
</rss>
