2011-12-15 4 views
0

内の既存のdivの周りのdivクラスをラップ/余分なdivのクラスを追加します。は、私がこのような何か持っている私のDrupalのウェブサイトでDrupalの

<div class="form-item form-type-textfield item-1"> 
<div class="form-item form-type-textfield item-2"> 
<div class="form-item form-type-textfield item-3"> 
<div class="form-item form-type-textfield item-4"> 
... 

をこの

<div class="form-item form-type-textfield item-1 added-class"> 
ようにそれを取得する方法はありますだから、

または

<div class="wrapped-class"> 
    <div class="form-item form-type-textfield item-1"> 
</div> 

、アイテムにクラスを追加したり、その周りのものをラップします。私はhook_preprocessで遊んだが、うまくいかなかった。

hook_form_alterは、フォームごとに行う必要があるため、解決策ではありません。divクラスは複数のページに表示されるため、1つのコードスニペットでステートメントをキャッチしたいと思います。
アイデア

答えて

1

私は驚いています。Drupalはこの機能を「栽培」していませんが、theme_form_element() functionを見ると、クラスが静的に設定されていることがわかります。あなたはtheme_form_element関数から全体のコードを配置する必要があります、その関数で

function mytheme_form_element($variables) { 

} 

:私はあなたがコードでやりたいと思うことができます

唯一の方法は、その関数のテーマオーバーライドを使用することです(私が知っている行き過ぎのように思えるが、私はより良い方法を考えることはできません)、および$attributes['class']配列に新しいクラスを追加します。

$attributes['class'] = array('form-item', 'my-other-class'); 
+0

ありがとう、ありがとう。私は試してみる – Michiel

+0

私のテーマが 'module'と呼ばれるならば、私はこの' module_form_element($ variable) 'をするだけでいいですか?それとも別のものを交換する必要がありますか? – Michiel

+0

それはテーマ名のための良い選択ではありません! Drupalの多くの関数は 'module_'で始まり、ネームスペースの問題を簡単に実行できます。しかし、はい、 'module_form_element'が正しい関数名になります。 – Clive

0

どこに配置するかによって、そのブロック/リージョン/ページのテンプレートファイルを見て、それを上書きするテンプレートを作成します。たとえば、そのノードをすべてのノードに追加する場合は、カスタムテーマ内にnode.tpl.phpを作成してそこに追加します。私が言うように、それはあなたがそれを置く場所に依存します。

+0

私はそのようなことを考えていたが、私はそれをしたいと思っコード...あなたの心に浮かぶ機能はありませんか? '私はすでに壊れているので: – Michiel

関連する問題