1

だから、配列の特定の要素を次のようにレンダリングできると収集$page['content']します...

<?php print render(field_view_field('node', $node, 'field_image')); ?>

すぐに使用できる場合、これにより、標準のデフォルトで期待どおりに要素がレンダリングされます。では、手で摘み取った要素が<?php print render($page['content']) ?>後で呼び出しでレンダリングされないようにするにはどうすればよいでしょうか?

なぜ私はこのようなばかげたものが欲しいのですか?すべてのページには、オーバーレイ、デザインなどのためのいくつかの css トリックを含むヘッダー画像があるためです。しかし、すべてのページに添付ファイルやリンクなどがあるわけではありません... ページの追加フィールドです。そのため、フィールドの数や他に何があるか分からないため、各フィールドを手動で印刷することはできません。私が確かに知っているのは、上で印刷している field_image がスタイリング用の大量のマークアップにラップされており、この方法で行う必要があるということだけです。他のいくつかのフィールドについても同じです。

基本的に、使用直後にフィールドの設定を解除する方法を探しています。

これを達成する方法を知っている人はいますか?特定のページに表示されるビューやカスタム ブロックを作成したくありません。私は最終的にこれを、CMS の多くの場所で管理されている 1 つのページに頭を悩ませることができないクライアントに引き渡さなければなりません。

4

2 に答える 2

3

実際、Drupal では、使用した機能に頼ることなく、コンテンツ タイプの個々のフィールドの表示を制御できます。

非表示にするフィールドが事前にわかっているため、コンテンツ タイプの設定でその表示をオフにすることができます。

Drupal 7 では、以下を参照してください:
管理者 >> 構造 >> コンテンツ タイプ >> コンテンツ タイプ >>ディスプレイの管理
「フォーマット」の下で、省略したいフィールドに対して < 非表示 > を選択します。

これにより、フィールドの内容が通常のノードの内容内に表示されなくなりますが、field_view_field は当然機能します。

また、さまざまなビュー モードに基づいてフィールド フォーマットを微調整することもできます。たとえば、完全なコンテンツではなくティーザー内にフィールドを表示するように選択します。

于 2013-04-01T05:54:48.117 に答える
0

これはうまくいくように見えます:

<?php
print render(field_view_field('node', $node, 'field_image'));
MYTHEME_remove_item($page['content'], 'field_image');
?>

そして、template.php ファイルで、この関数を作成しました。

function MYTHEME_remove_item(&$content, $field)
{
    foreach($content['system_main']['nodes'] AS $key => $val){
        unset($content['system_main']['nodes'][$key][$field]);
    }
}

私の意見では、これはばかげています。drupal のように堅牢なシステムには、このような問題に対する解決策があると思います。誰かがこれを行う適切な方法を知っていれば、喜んで正しいとマークします. その間、同様の状況に直面している他の人にとって、これはうまくいきました。

于 2012-10-16T20:41:59.713 に答える