0

テーマでカスタマイズしようとしているマルチステップ フォーム内から厄介な div を削除しようとしています。問題は、それが私のcssを捨てていることです。このdivが存在する正当な理由を最初に知らずに、すべてのcssルールを変更したくありません。

私の他のすべてのテーマのフォームでは、奇妙なことに、この div は表示されません。唯一の大きな違いは、この形式が多段階であることです。ここの例に基づいたコードを使用しています。以下にコードの一部を掲載しました。

function theme_mymodule_add_child_wizard($variables)
{
    $form = $variables['form'];
    $output .= '<div class="_'.$form['fname']['#ui_size'].'">';
$output .= drupal_render($form['fname']);
$output .= '</div>';

    $output .= drupal_render_children($form);
    return $output;
}

function hook_theme()
{
return array
(
    'mymodule_add_child_wizard' => array
    (
        'render element' => 'form'
    ),
);
}

私の目標はこれを変換することです:

<form>//My Drupal 7 Form
    <div>//Pesky Div
        <input></input>//Form elements contained by Pesky Div
    </div>
</form>

これに:

<form>
        <input></input>//Form elements free from Pesky Div
</form>

テスト目的で、コアの form.inc ファイルの 3842 行を変更して div を強制的に削除しようとしましたが、そのようには機能しませんでした。実際にはコアファイルを変更したくありません。モジュール内でオーバーライドする方法を見つけたいと思っています。

#Tried removing the <div> tag seen here. 
return '<form' . drupal_attributes($element['#attributes']) . '><div>' . $element['#children'] . '</div></form>';
4

3 に答える 3

0

@SFox、template.php内のtheme_form関数をオーバーライドできます

APIを確認してください。

于 2014-12-16T11:17:28.423 に答える
0

私の知る限り、言及divされたものはカスタムフックまたはテーマでは削除できないと思います。これは、次のコードで確認できます。

function your_module_form($form, &$form_state) {
    $form['#theme_wrappers'] = array(); // remove both <form> and <div> inside
}

function your_module_form($form, &$form_state) {
    $form['#theme_wrappers'] = array('form'); // we want to render only <form> but <div> inside still there
}
于 2016-07-16T08:48:15.353 に答える
0

これを試して :

http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#prefix

要素のテキストまたはマークアップを設定できます。

「 #suffixも参照してください」に注意してください。要素の接尾辞。

于 2013-02-12T09:09:59.470 に答える