Whats the best method for displaying different page layouts for a node based on taxonomy? I am building a product site which should use a slightly different page layout for different types of products, depending on what product category they are.

All products are of the same node type. They are categorized based on selected taxonomy terms. The reason I did this instead of creating a different node type for each product category is because some products may exist in multiple categories.

My understanding is that panels relies on the URL structure for determining context. I'm listing all products under ../products/[title] so I dont think that will work. The only way to know the product category is to check the value of a CCK field on that product.

It seems there are many ways to skin a cat in Drupal but I'm unable to figure out what method will allow me to do what Im trying to do. 

Any advice/help would be appreciated.
In D6, if you are displaying a full node page, you can use the preprocess_page() hook to select a different page template based upon that CCK field.  For example,

function mythemeormodule_preprocess_page(&amp;$vars) {

  $node=$vars['node'];

  switch ($node-&gt;field_i_am_interested_in[0]['value']) {
    case 'something':
    case 'anotherthing':
      $vars['template_file']='page-bytax-' . $node-&gt;field_i_am_interested_in[0]['value'];
      break;
  }

}


and then create page-bytax-something.tpl.php page-bytax-anotherthing.tpl.php etc with whatever page layout you want.

If though, you are really talking about how the node itself is laid out in the $content area of the page, you could do the same thing inside preprocess_node() and create node-bytax-FOO.tpl.php templates instead.

Also, depending on what kind of cck field you are looking at, you might need to change up the [0]['value'] part.

If D7, subtle changes apply :)