0

Drupal 5ビュー(「ビュー1」である必要があります)があります。これには、実際の日付が含まれるフィールドに対して通常表示されるEvent_StartTimeフィールドが含まれています。しかし、 1969年12月31日から午後8時のようにEvent_StartTimeフィールド値を持つレコードもいくつかありますが、これは見栄えが悪いため、「利用可能な日付がありません」などのカスタムラベルに置き換える必要があります。

どういうわけか、この条件(値= xが値yを表示する場合)をビューに挿入できますか?「利用可能な日付がありません」でSQLに印刷しても、ビューに空のフィールドが表示されます。

要約すると、一般的な問題は、ビューフィールドが一種の制限であり、フィールド値を置き換える必要がある場合もありますが、それは「日付またはなし」または「ノード参照IDまたはなし」のいずれかです。

PSビューがCSVデータを返すようにする「ボーナス:ビューのエクスポート」モジュールを使用しているため、状況は少し複雑になる可能性があります。

4

2 に答える 2

2

私はもうViews1に精通していませんが、少なくとも2つのオプションがあると思います。

  1. テーマレベルでは、フィールドテンプレートを上書きして、そこに特定の日付値のチェックを入れ、見つかったときにそれを置き換えることができます。もちろん、このチェックは日付のフォーマットに依存するため、これを変更する場合は、チェックも調整する必要があります。
  2. ビュー生成レベルでは、コードから「手動で」ビューを実行し、インスタンス化直後および/または実行後、レンダリング前にビューオブジェクトを検査できます(Views2のビューオブジェクトの操作例については、彼女を参照してください)。実行後、レンダリング前に結果プロパティを操作することも、インスタンス化の直後に事前レンダリングコールバックを配置することもできます(ただし、Views1でこれがすでに可能かどうかはわかりません)。
于 2009-09-03T07:00:43.443 に答える
1

ヘンリックのコメントに基づいて、テーマはこれを行うのに最適な場所のように思えます。その特定のビューをオーバーライドするには、template.phpファイルに関数を追加する必要があります。ビュー1のテーマに関するドキュメントを参照してください。このドキュメントに基づいて、フォームのビューの名前を使用して関数を作成します

function THEMENAME_view_view_VIEWNAME($view, $type, $nodes, $level = NULL, $args = NULL)

ビュー全体をテーマにします。$nodesビューに含まれる部分的にロードされたノードオブジェクトの配列です。各ノードをロードし、次のようにEvent_StartTimeフィールドの値を確認できます。

foreach ($nodes as $id => $node) {
  $temp_node = node_load($node->nid);
  //now check value of Event_StartTime assuming that is what you named the field
  if ($temp_node->Event_StartTime === 'Dec 31 1969 - 8:00pm') {
    $temp_node->Event_StartTime = 'No Date Available';
  }
 //output the fields of your view . . .
}

Event\_StartTimeフィールドの値を確認する方法を示しただけで、実際の値が何であるかはわかりません。1969年12月31日はtime()関数によって返される日付より前なので、これが機能しない場合はEvent_StartTime === ''、を確認することをお勧めします。これは、イベントフィールドが空のままの場合に当てはまる可能性があります。それでも、残りのフィールドにテーマを設定してHTMLとして出力する必要があります。これは、1つのフィールドの出力を変更するだけでは非常に面倒な場合があります。個々のフィールドの出力をオーバーライドすることもできます。私はこれを行っていないので、説明することはできませんでしたが、上記のリンクには、フィールドテーマ機能のオーバーライドに関するドキュメントがいくつかあります。

于 2009-09-03T18:38:51.490 に答える