1

コンテンツ タイプに自動番号を付けるフィールドが必要ですが、2000 などの値から始まります。シリアル フィールドと計算フィールドを試しました。それを行う方法を理解できませんでした。番号 (Serial Field を使用) は自動的に増加しますが、開始番号を定義できません。

とにかくこれを行うことはありますか?

どうもありがとう!

4

3 に答える 3

2

Drupal 6 システムのいくつかのカスタム レコード タイプでカスタム自動番号を使用します (以下は Drupal 7 でも機能するはずです)。これを機能させるために、レコードの保存時に起動する Rules モジュールを使用してルールを実装しました。

ルールはコンテンツを保存した後にON イベントを実行し、関心のあるコンテンツ タイプを保存していることを確認する必要があります

アクションについては、*Populate created content's 'custom_number' field* アクションをルール ('custom_number' は自動採番フィールド) に配置し、次の例に従います。

$number = db_result(db_query(
    "SELECT MAX(field_custom_number_value) FROM {content_type_widget}"));

if(empty($number) || $number < 200) { // Replace 200 with your starting value
    $number = 200;
} else {
    $number++;
}

return array( 0 => array('value' => $number) );

新しいウィジェットを保存するたびに、システムはクエリを実行して、既に割り当てられている最大の custom_number を見つけます。割り当てられていない場合、または 200 未満の番号が割り当てられている場合、システムは 200 を割り当てます。それ以外の場合は、現在割り当てられている最大数よりも 1 つ多く割り当てられます。

必要に応じて、デバッグ コードの行を追加して、必要な最小値よりも少ない数が検出された場合にウォッチドッグ行またはその他のデバッグ イベントを追加することもできます。

于 2013-07-01T17:23:12.813 に答える
0

シリアル モジュールは、 serial_bundlename_fieldnameという名前のテーブルを生成します。つまり、バンドル ' Jobs ' にフィールド名 ' field_job_id ' を追加した場合、テーブル ' serial_jobs_field_job_id ' が作成されます。

このテーブルには、' sid ' と ' nid ' ' sid ' の 2 つのフィールドが含まれており、' sid ' は自動インクリメント フィールドです。

phpMyAdmin のようなツールを使用して、次のクエリを実行できます。

ALTER TABLE serial_jobs_field_job_idAUTO_INCREMENT = 2000;

これにより、自動インクリメント フィールドの開始値が設定される可能性があります。

于 2013-07-01T13:36:17.237 に答える