#prefix 付きの HTML タグを使用する場合は、#suffix で閉じる必要があります。#prefix でコンテンツを閉じるのを忘れていませんか?
そのようです:
$data = array(
'#type' => 'markup',
'#prefix' => '<div>',
'#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
'#suffix' => '</div>',
);
編集
出力をレンダー配列ではなく HTML として制御するには、hook_block_view() フックを使用して、レンダー配列ではなく純粋な HTML を $block['content'] にフィードします。
ドキュメントによると、 $block['content'] は両方のタイプの入力を処理できます。
function modulename_block_view($delta='') {
$block = array();
switch($delta) {
case 'block_name' :
$block['content'] = '<div>Content before</div>';
$block['content'] .= theme('table', array('header' => $header, 'rows' => $rows));
$block['content'] .= '<div>Content after</div>';
break;
}
return $block;
}
ブロック ビュー フックを使用したくない場合は、代わりに次の方法でレンダー配列をレンダリングできると思います。
$render_array = array(
'#type' => 'markup',
'#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
);
$before = '<div>Content before</div>';
$after = '<div>Content after</div>';
$data = $before.render($render_array).$after;
return $data;
参照についてはrender()を参照してください。また、この回答に記載されているようにキャッシュをクリアすることを忘れないでください。