2009-09-02 19 views
0

Drupal 5ビュー(「Views 1」でなければならない)はEvent_StartTimeフィールドを含んでいます。これは通常、実際の日付が内部にあるフィールドに表示されます。しかし、私はまた、1969年12月31日 - 午後8時のようなEvent_StartTimeフィールドの値を持つレコードを数多く持っていますが、表示が悪く、「No Date Available」のようなカスタムラベルに置き換える必要があります。Drupal:ビューのフィールド値を置き換えます

私は何とかこの条件(値= xの表示値y)をビューに挿入できますか? "No Date Available"でSQLに印刷しても、ビューに空のフィールドが表示されます。

要約すると、一般的な問題は、Viewフィールドがある種の制限であり、あるフィールド値を置き換える必要があるだけで、「日付か何もない」か「ノード参照IDか何もない」です。

P.S.私のビューがCSVデータを返すようにする「ボーナス:ビューのエクスポート」モジュールを使用するため、状況が少し複雑になることがあります。

答えて

1

ヘンリックのコメントを除いて、テーマは私にとってこれを行うのに最適な場所だと思われます。特定のビューを上書きするには、template.phpファイルに関数を追加する必要があります。 Views 1 theming documentationを参照してください。このドキュメントに基づいて、フォームビューの名前を持つ関数を作成します。

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つのフィールドの出力を変更するだけの苦痛でもあります。個々のフィールドの出力を上書きすることもできます。私はこれをしていないので、私はあなたを歩いて行くことができませんでしたが、私が上で与えたリンクは、フィールドテーマ関数をオーバーライドすることに関するいくつかの文書を持っています。

2

私はもうViews1と本当に慣れていないんだけど、私はあなたが、少なくとも二つの選択肢があると思う:テーマレベルで

  1. を - あなたは、フィールドテンプレートをオーバーライドして、特定の日付値のチェックを入れることができますそこに、見つかったときにそれを置き換えます。もちろん、このチェックは日付の書式設定に依存するので、これを変更した場合はチェックを調整する必要があります。
  2. ビュー生成レベル - コードから手動でビューを実行し、インスタンス化直後および/または実行後でレンダリングする前にビューオブジェクトを検査することができます(example of manipulationg the view object in Views2を参照)。実行後、レンダリング前にresultプロパティを操作することもできますし、インスタンシエーションの直後にレンダリング前のコールバックを置くこともできます(しかし、これは既にViews1で可能かどうかはわかりません)。
関連する問題