あなたが与えた例が最初の著者を出力するために働くと仮定すると、コンマで区切られたリストにすべての著者を入れるための最も直接的な解決策は次のようになります:
foreach($node->field_author as $author) {
$authors[] = $author[view];
}
$author_list = implode(', ', $authors);
$author_list
次に、代わりに出力します$node->field_author[0][view]
より「Drupal」な方法は、modules / cck / theme / content-field.tpl.phpをテーマディレクトリにコピーしてから、content-field-field_author.tpl.phpという名前のコピーを作成することです。次に、新しいファイルに変更を加えることができます。これにより、「作成者」フィールドの値の表示方法が具体的に上書きされます。次に、カスタムノード([node_type] .tpl.phpファイル)の任意の場所にテーマのfield_author値を出力できます。(カスタムテンプレートを最初にロードするには、[管理]>[サイト構成]>[パフォーマンス]のボタンを使用して、キャッシュされたデータをクリアする必要がある場合があります。)
ビューの「行スタイル」が「ノード」に設定されている場合、ノードとフィールドのテンプレートも使用されます。「フィールド」に設定している場合は、ビューでフィールドに個別にテーマを設定する必要があります。テーマでオーバーライドできるビューテンプレートについては、ビューの「テーマ:情報」を参照してください。
編集:
自然言語リストが必要だったという事実を見逃しました。これにはもう少し時間がかかりますが、これを実行するDrupalized関数を次に示します。
function implode_language($array = array()) {
$language_string = '';
if (count($array)) {
// get the last element
$last = array_pop($array);
// create a natural language list of elements if there are more than one
if (count($array)) {
$language_string = implode(', ', $array) .' '. t('and') .' '. $last;
}
else {
$language_string = $last;
}
}
return $language_string;
}
次に、もちろん、上記の最初のコードブロックの最後の行の代わりに次を使用します。
$author_list = implode_language($authors);