私は http://Twitter.github.com/bootstrap/base-css.html#forms から可能な限り多くをテーマに使用したいと思っています。これの一部として、本当に取得したいです各<div class="form-item">
要素にラップされている<input>
を削除します。
これを行う唯一の方法を私が知ることができる限り、全体をコピーすることです http://api.drupal.org/api/drupal/includes!form.inc/function/theme_form_element/7 theme_form_element ()関数を呼び出し、<div>
ラッパーを生成するコードを削除します。
これは本当に唯一の方法ですか?
はい。これらのクラスは、Drupalにハードコードされており、表示スタイル設定だけでなく、フォームを「アニメーション化」するjQueryコード(検証、自動入力、自動フォーカスなど)にも使用されます)
HTML要素は複数のクラスを持つことができます。クラスをDrupalフォームに追加してから、独自のテーマを作成することができます。独自のテーマを作成すると、デフォルトのDrupalクラスをテーマにできず、代わりにベースCSSのクラスにテーマを設定するだけです。
私はそれを追加するだけであることがわかりました:
'#theme_wrappers' => array(),
フォームアイテムにDIVを削除しました。
/**
* Implements hook_theme().
*/
function mytheme_theme($existing, $type, $theme, $path)
{
return array(
'mywrapper' => array(
'render element' => 'element',
),
);
}
/**
* Implements hook_form_FORMID_alter().
*/
function mytheme_form_formid_alter(&$form, &$form_state)
{
// You could wrap the element using this
$form['quantity']['#prefix'] = 'div class="custom_class_outer">';
$form['quantity']['#suffix'] = '/div>';
// And clear the other wrappers
$form['quantity']['#theme_wrappers'] = array();
// Or we could use wrapper
$form['quantity']['#theme_wrappers'] = array('mywrapper');
}
/**
* Theme wrapper
*/
function mytheme_mywrapper(&$vars)
{
return 'div class="custom_class_inner">' .
$vars['element']['#children'] . '/div>';
}