それが言うように-編集フォームをテーマにする必要があるD7コンテンツタイプを持っています。私はこれをいつもD6でtemplate.phpにテーマ関数を登録し、関連するテーマ関数を書くことで行いましたが、特にtemplate.phpに入るものに関して、またはD7が.tplを使用するようになった場合、D7では状況が変わったようですこのための.phpファイルなど。何かアドバイスはありますか?
それが言うように-編集フォームをテーマにする必要があるD7コンテンツタイプを持っています。私はこれをいつもD6でtemplate.phpにテーマ関数を登録し、関連するテーマ関数を書くことで行いましたが、特にtemplate.phpに入るものに関して、またはD7が.tplを使用するようになった場合、D7では状況が変わったようですこのための.phpファイルなど。何かアドバイスはありますか?
回答:
Drupal 7のテーマノードフォームに関するハンドブックページによると、実際に.tpl.phpテンプレートファイルに変更を加えることになります。
そうは言っても、通常はField GroupとDisplay Suiteを使用する方が簡単であることがわかりました。ノードフォーム列は別のオプションです。
2つのオプションがあります。
オプション1:管理テーマのtemplate.phpを使用する
(オプション)サブテーマを作成します。たとえば、管理テーマは7 つで、コンテンツの編集にも使用されている場合、sites / all / themesの下にmy_sevenというフォルダーを作成するだけです。次に、新しく作成したmy_sevenディレクトリの下に、次の内容でmy_seven.infoを追加します。
基本テーマ= 7つの名前= My Sevenの説明=私のシンプルな1列のテーブルレスで流動的な幅の管理テーマ(Sevenの子)。
次に、template.phpというファイルを同じフォルダーに追加し、次の内容を含めます。フォームIDはコンテンツタイプのマシン名から厳密に派生していることに注意してください。ただし、テンプレート名は任意の名前にすることができますが、-node-formは従うのに適した規則のように見えます。
<?php
function my_seven_theme() {
return array(
'<my_content_machinename>_node_form' => array(
'arguments' => array('form' => NULL),
'template' => '<my_content_machinename or anything else>-node-form',
'render element' => 'form',
),
);
}
次に、<content_type_machinename> -node-form.tpl.phpファイルを作成し、次の内容が機能するかどうかをテストします。カスタムフォームが表示されたら、tpl.phpを自分のコンテンツに変更します。タイトル以外のカスタムフィールドを選択して、正しく機能することを確認します。理想的には、単純なテキストフィールドではないものを選択します。用語参照フィールドタイプは、サブテーマが正常に機能していることを確認するのに適した候補です。
<div>
<?php print drupal_render($form['title']); ?>
</div>
<div>
<?php print drupal_render($form['field_<my_field1>']); ?>
</div>
テーマのレジストリキャッシュをクリアします(テーマが初めて使用される場合は実際には不要ですが、とにかくそれを行います)。
オプション2:独自のdrupalモジュールを使用してフォームをカスタマイズする
次の内容のcustom_content_forms.infoファイルを作成します
name = My Custom Content Forms
description = A trivial module to customize my content entry forms such as smartphone
core = 7.x
次の内容でcustom_content_forms.moduleを作成します
<?php
function custom_content_forms_theme() {
return array(
'<contenttype_machine_name>_node_form' => array(
'template' => '<contenttype_machine_name>-node-form',
'render element' => 'form',
),
);
}
次に、<content_type_machinename> -node-form.tpl.phpファイルを作成し、次の内容が機能するかどうかをテストします。カスタムフォームが表示されたら、tpl.phpを自分のコンテンツに変更します。タイトル以外のカスタムフィールドを選択して、正しく機能することを確認します。理想的には、単純なテキストフィールドではないものを選択します。用語参照フィールドタイプは、サブテーマが正常に機能していることを確認するのに適した候補です。
<div>
<?php print drupal_render($form['title']); ?>
</div>
<div>
<?php print drupal_render($form['field_<my_field1>']); ?>
</div>
注:両方のメカニズムを使用してカスタマイズする場合、drupalはモジュールよりもテーマを優先します。
編集:上記はフィールドのみを生成します。デフォルトでは、ノード設定メニューと送信ボタンとプレビューボタンは表示されません。あなただけを追加する場合
<?php print kpr($form); ?>
$ forms配列のダンプを生成するページ(kprが機能するには、develモジュールを有効にする必要があります)で。次のものをtpl.phpに追加することで、フォームページでこれらを簡単に取得できることがわかります。
<div><?php print drupal_render($form['additional_settings']); ?></div>
<div><?php print drupal_render($form['actions']); ?></div>
<?php print drupal_render($form['field_<my_field1>']); ?>
をさらに追加する機能です。「別のアイテムの追加」ボタンがあるフィールドに使用しましたが、ボタンをクリックしても新しいフィールドが表示されませんでした。
drupal_render_children($form);
に、コードの最後で必ず関数を呼び出す必要があります。themery.com
管理インターフェースからノードフォームを変更するには、以下を使用できます。
ディスプレイスイート-http://drupal.org/project/ds
フィールドグループ-http://drupal.org/project/field_group
レンダリング可能な要素-http : //drupal.org/project/rel
次のモジュールを有効にします:Display Suite、Display Suite Forms、Display Suite Extras、Field Group、Renderable Elements
admin / structure / rel / configの設定ページに移動し、「フォームの登録を有効にする」チェックボックスがオンになっていることを確認して、レンダリング可能な要素の設定を行います。
次に、いずれかのコンテンツタイプの[フィールドの管理]フォームに移動します。ページ上部の[フォーム表示の管理]をクリックして、レンダリング可能な要素にフォームを登録し、有効にするフィールドを選択します。このフォームを保存すると、標準のDisplay Suite UIを使用して、コンテンツタイプのすべてのフィールドの表示を管理できるようになります。
ソース:http : //getlevelten.com/blog/ian-whitcomb/drupal-form-layouts-renderable-elements