0

記事のユーザー名に切り替えるAuthorcontent_typeがあります。問題は、ストーリーに複数の作成者が含まれる可能性があり、template.phpの次のコードは最初の作成者のみを生成することです。これを「JohnSmith、Jane Doe、MaryPoppins著|2010年2月19日」として出力できるようにするにはどうすればよいですか?

function mytheme_date($node) {
  return t('By !username | !datetime',
  array(
    '!username' => t($node->field_author[0][view]),
    '!datetime' => t($node->field_publish_date[0][view]),
  ));
}

ノード参照がそこでも正しく出力されるように、これをビューにも使用したいことを覚えておいてください。

ありがとう、スティーブ

4

2 に答える 2

3

あなたが与えた例が最初の著者を出力するために働くと仮定すると、コンマで区切られたリストにすべての著者を入れるための最も直接的な解決策は次のようになります:

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);

于 2010-02-22T16:02:44.913 に答える
0

Author Taxonomyプラグインを使用するのはどうですか?

著者分類法では、著者名の分類法の用語を使用して、1人以上の著者をノードに割り当てることができます。このモジュールは、署名記事(「日付にユーザー名によって送信された」テキスト)の完全にそれらに代わるものも提供します。

「JaneandJack」または「Jane、Jack、andJoe」の著者名を順番に表示します。

別のアプローチが必要な場合は、複数の作成者のチュートリアルを確認してください。

于 2010-02-22T04:49:55.047 に答える