企業のイントラネットなどで Drupal を利用する場合、決裁文書に対してシーケンシャルに一意の採番をするユースケースを考える。単に ID を振っていくだけなのだが、ID といっても企業ごとにその仕様は決まっているだろう。Drupal ではどうしたらいいのだろう?
その答えだが、ユニークな ID をつけるくらいなら CCK にアドオンする Computed Field というモジュールを使えば Drupal にも簡単にできる。node には nid という一意な ID がデータベース中に保持されているから、それを利用すればよい。
$node_field[0]['value'] = sprintf('%s-%04d-%08d',
$node->field_name1[0]['value'], // このフォーム中の field_name1 の値も組み入れることができる。
date('Y', time()), // 西暦4桁
$node->nid // 一意な ID (8桁)
);
$display = $node_field_item['value'];
このテクニックでの肝は、Computed Code: では
$node_filed[0]['value']
という変数に採番したい ID の値を入れてあげることと、そのユニークな ID を生成するときに、Computed Code: のところで、このフォーム内の値である field_name1 も参照できることだ(もちろん name1 という名前でフィールドを追加しておかねばならない)。name1 は、
$node->field_name1[0]['value']
という変数が対応している。