私はこれを試していませんが、うまくいくに違いありません: hook_form_alter() を使用して、ブロック構成フォームにアクセスします。そこに &$form_state があり、高度な AJAX を実行できるようになります (これを参照してください)。難しいのは、オルターフックでフォームのみを変更することです。可能な方法:
これが機能するかどうかはわかりません(最もエレガントな方法):
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' ) {
// Find the delta in the $form variable
if ($form['delta'] == 'the_delta_you_are_looking_for') {
//do fancy ajax stuff
}
}
}
醜いが間違いなく可能:
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' && arg(4) == 'mymodule') {
//do fancy ajax stuff
}
}
}
さらに醜いですが、可能性もあります:
function mymodule_block_configure($delta = '') {
$form = array();
if ($delta == 'my_block') {
$form["my_block_change_this"] = array(
"#type" => "hidden",
"#value" => "lalala",
)
}
}
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' ) {
if (!empty($form['my_block_change_this'])) {
//do fancy ajax stuff
}
}
}
ヒント: form_state-array を (alter フックで) 印刷して、そこにあるものを確認します (これは、FAPI の問題に遭遇したときに常に最初に行うことです)。お役に立てれば。