How can I display a block only when a node meets a particular condition?
I would use the PHP visibility settings to display the block on a node's page if a cck value in that node has some value, assuming that this cck field's value is an indication of that node containing calendar data. Once you've created the block that you want to display (or not display) add the following code to the "Page specific visibility settings" in the block configuration menu:

&lt;?php 
$node = node_load( arg(1) );

if ($node &amp;&amp; $node-&gt;type =="[your_content_type]" &amp;&amp; $node-&gt;field_has_cal_data[0]['value'] =='Yes'){
return TRUE;
}

return FALSE;

?&gt;


This is assuming that the url is built like "content/name-or-id-of-node".