このエントリーを含むはてなブックマークはてなブックマーク - Computed Field(CCK module) 詳細編 コードの記述 この記事をクリップ!Livedoorクリップ - Computed Field(CCK module) 詳細編 コードの記述 Yahoo!ブックマークに登録 @niftyクリップに追加 FC2ブックマークへ追加 このエントリをつぶやくこのWebページのtweets Googleブックマークに追加 Bookmark this on Delicious Digg This BuzzurlにブックマークBuzzurlにブックマーク Share on Tumblr newsing it! この記事をChoix! FriendFeedで共有

前回の記事で、Computed Fieldモジュールのインストール、簡単な使い方を説明しましたが、今回は引き続き、Computed Fieldモジュールのもう少し詳細な使い方を説明します。

コンテンツタイプのComputed Fieldタイプのフィールド定義画面が開いている状態から説明します。

Computed Codeの記述

Computed CodeにPHPのコードを記述するわけですが、

他のCCKフィールドを参照したい場合、$node->フィールド名[0][‘value’]で参照します。

例えば、CCKで数値フィールドとして、num1とnum2を追加していて、その掛け算の結果をComputed Fieldで計算させたい場合、

$node_field[0]['value'] = $node->field_num1[0]['value'] * $node->field_num2[0]['value'];

とComputed Codeに記述します。

フィールドを指定するとき、配列の[0]を指定していますが、Drupalではフィールを追加するとき、同一のフィールドタイプを同じフィールド名で一度に複数作成することができます(「値の数」で個数を指定できます。デフォルトは1)。

複数作成した場合、どの値かを識別するために配列で指定することができるようになっているのです。

もし、1つしか作成していないのであれば(通常このケースが多いと思いますが)、[0]で構いません。

このComputed Fieldは、PHPで記述できますので、言ってみれば何でもできます。

例えば、他のテーブルからデータを引っ張ってきて表示するなんてこともできます。

$node_field[0]['value']  = db_result(db_query("SELECT 項目1 FROM テーブル名 WHERE 項目2=%d",$node->field_num1[0][value]));

上記は、テーブルからnum1フィールドに一致する項目1を抽出し、表示するようなケースです。

もちろん、PHPなのでIF ELSE等のの条件式も使えます。さぁ、いろいろコードを書いて試してみましょう!

Display Formatの記述

Diplay Formatは、Computed Fieldで計算されたものをどのように表示させるかをPHPで記述します。

計算結果をそのまま表示するのであれば、デフォルトのコードそのまま

$display = $node_field_item['value'];

でOKです。

例えば、計算結果の数字の後ろに接尾辞として「円」を付けたいなら、

$display = $node_field_item['value'] ."円";

と記述すれだけですね。

Database Storage Settings

前回記事にも書きましたが、計算結果をデータベースに格納するかどうかを指定できます

Store using the database settings belowのチェックボックスをONにすれば、データベースに保存されます。ONにしなければ、表示時に毎回計算して表示します。

計算結果をVIEWSでソートをかけて表示するような場合、データベースに格納しておく必要があります。単なる表示だけなら、ONにしなくてもOKです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL

最新の記事一覧

  • サイト内検索

ページ上部に