ブロックの表示設定のところにPHPコードを書くことで動的な条件を指定することができます。このblock visibilityはブロックの設定以外に、CSS InjecterやJS Injecterのような拡張モジュールでも使われています。詳しい使い方は http://drupal.org/node/64135 や http://drupal.org/node/60317 も参考にしてください。
ユーザ名が「aaa」か「admin」でないときに有効にする場合は以下のようにします。ユーザ名はグローバル変数の$userに入っています。
<?php global $user; if (!in_array($user->name, array('aaa', 'admin'))) { return true; } ?>
表示されているノードのタームによってブロックの表示を切り替えたい場合は以下のように書きます。表示しているノードやtaxonomyの情報はarg()で取得します。$nodeを取りたいなら自分でnode_load()する必要があります。
<?php $term_id = 1; // taxonomy/term/id のページで表示したいなら if ((arg(0) == 'taxonomy') && (arg(1) == 'term') && (arg(2) == $term_id)) { return true; } // ノードのページで表示したいなら if ((arg(0) == 'node') && is_numeric(arg(1))) { $terms = taxonomy_node_get_terms(arg(1)); foreach ($terms as $term) { if ($term->tid == $term_id) { return true; } } } return false; ?>