2011-11-10 22 views
7

基本ページのコンテンツタイプに 'field_header'というカスタムフィールドを追加しました。 page.tpl.phpテンプレートのこのフィールドにアクセスするにはどうすればいいですか?理想的には$コンテンツからも削除したいと思います。ありがとう!Drupal 7カスタムフィールドのレンダリング方法

答えて

10

すべてのページが必ずしもノードページであるわけではないので、node.tpl.phpではなく、page.tpl.phpでこれにアクセスしようとするとよいでしょう。

node.tpl.phpでは、このように特定のフィールドをレンダリングすることができます

echo render($content['field_header']); 
hide($content['field_header']); // This line isn't necessary as the field has already been rendered, but I've left it here to show how to hide part of a render array in general. 

あなたは絶対にpage.tpl.phpに、あなたはあなたが必要な変数を得るためにあなたのテンプレートファイルに前処理機能を実装する、これを行う必要がある場合:

function mymodule_preproces_page(&$vars) { 
    if ($node = menu_get_object() && $node->type == 'page') { 
    $view = node_view($node); 
    $vars['my_header'] = render($view['field_header']); 
    } 
} 

はその後page.tpl.phpで、あなたの完全なレンダリングされたフィールドが含まれる変数$my_headerにアクセスすることができます。あなたは、例えば、フィールド名のために、次のコードを使用する必要があり、あなたのnode.tplで

+0

ありがとうございました!私はあなたの第二の選択肢を試したので、私は特定の場所に私のヘッダーを配置する必要があったが、私はそれを動作させることができませんでした。幸いにも、最初のオプション(そしていくつかのjQuery)を使用して、私は自分の問題を解決することができました。なぜecho $ vars ['my_header]が私のpage.tpl.phpで動作しなかったのだろうか – martincho

+0

その場合、page.tpl.phpに$ vars [' my_header ']は必要ありません。ちょうど$ my_headerで十分です。 – Jasmo

+0

このシンプルで効果的な答えをありがとう。 – Drake

1

<!-- For Showing only custom field's Value Use below code --> 
<h2 class="title"><?php print $node->field_header['und']['0']['value'];?></h2> 

<!-- ========================= OR ========================= --> 

<!-- For Showing custom field Use below code , which shows custom field's value and title--> 
<h2 class="title"><?php print render(field_view_field('node', $node, 'field_header')); ?></h2> 

<!-- ========================= OR ========================= --> 

<h2 class="title"><?php print render($content['field_header']); ?></h2> 
0

field_header page.tpl.phpからあなたは$ノードへのアクセス権を持っているし、$ノード

からそうすべてのフィールド
print ($node->body['und']['0']['value']); 
関連する問題