Drupal 7では、フィールドをtpl.php
このようなファイル:
しかし、それはラベルとHTMLでそれを印刷します。フィールドの生の値だけを取得する方法はありますか?.
私はあなたが次のことができることを知っています:
ただし、それらすべてに追加の手順が含まれます。 node.tpl.phpファイルで直接実行する方法があるかどうか疑問に思っていました。これにより、すべての変更が1つの場所に含まれます。 (さらに、ラベルが必要なテーマにテーマを変更した場合は、管理インターフェースに戻ってそれらを再びオンにする必要があります)。
wolffer-eastの回答は、元の質問の目標を満たします。
ただし、単純なPHPステートメントのみを含むことになっているnode.tpl.phpファイルのコードは非常に複雑です。
結局、次のように書き直しました。私のテンプレートPHPファイルに、私は以下を入れます:
function print_field($field_name) {
if (arg(0) == 'node' && is_numeric(arg(1))) {
// Get the nid
$nid = arg(1);
// Load the node if you need to
$node = node_load($nid);
}
$field= field_get_items('node', $node, $field_name);
print $field[0]['value'];
}
これは、ノードをロードすることを除いて、wolffer-eastと同じです。
私のノードファイルでは、以下を使用できます。
<?php print_field('field_body_text') ?>
これにより、ラベルやHTMLなしでフィールドがレンダリングされますが、まだクリーンです。
より高度なバージョンはこれです:
Template.php関数print_field($ field_name、$ format = 'safevalue'){
if (arg(0) == 'node' && is_numeric(arg(1))) {
// Get the nid
$nid = arg(1);
// Load the node if you need to
$node = node_load($nid);
}
$field= field_get_items('node', $node, $field_name);
if ($format = 'url') {
print file_create_url($field[0]['uri']);
} else {
print $field[0][$format];
}
}
Node.tpl.php
'filename'は、次のいずれかに置き換えることができます。
[*]ファイル/画像があるフィールドにのみ適用されます
唯一の欠点は、次のエラーメッセージが表示されることです。
通知:未定義のインデックス:print_field()のsafevalue(template.phpの16行目)
このエラーメッセージの修正方法はわかりませんが、別の質問だと思います。
特定のフィールドの値だけが必要な場合は、node.tpl.phpファイル(またはnode--type.tpl.php)の$ nodeオブジェクトにあります。
通常は次のようなものです。
$node->field_name['und'][0]['value']
あなたは正しい軌道に乗っています!
ただし、ノードテンプレートファイルではなく、フィールドの個々のマークアップは、field.tpl.phpファイルによって制御されます。カスタムのフィールドを作成することで、フィールドの表示を非常に細かく制御できます。テーマのデフォルトの実装をコピーし、コピーフィールドにfield-name.tpl.phpという名前を付け、余分なマークアップをすべて削除します。
あなたが試してみたいかもしれません
<?php print render($content['field_your_field']); ?>
コンテキストおよびエンティティビューモードモジュールと組み合わせたnode.tpl.php内、またはコンテンツタイプ構成のフィールドの表示設定を変更
ノードテンプレートを使用している場合は、フィールドをロードして、ロードされたフィールドからコンテンツを取得できます。詳細は field_get_items documentation をご覧ください。つまり、現在の言語で必要な値を返します。
$field_name = 'your_field_here';
$field= field_get_items('node', $node, $field_name);
print $field[0]['value']
それを行う必要があります。複数値フィールドの場合は、各アイテムの要素を返します。 $field[$key]['value']
からアクセスできます