我需要一個自動編號我的內容類型的字段,但從2000開始的某個值。我嘗試了串行字段和計算字段。無法弄清楚如何去做。數字(使用串行字段)會自動增加,但我無法定義起始數字。Drupal:內容類型的自動編號字段與起始值
有沒有辦法做到這一點?
非常感謝!
我需要一個自動編號我的內容類型的字段,但從2000開始的某個值。我嘗試了串行字段和計算字段。無法弄清楚如何去做。數字(使用串行字段)會自動增加,但我無法定義起始數字。Drupal:內容類型的自動編號字段與起始值
有沒有辦法做到這一點?
非常感謝!
您可以使用計算字段來完成此操作。 將計算的字段添加到您的內容類型並將數據類型設置爲整數。在計算字段(PHP)textarea的這段代碼會爲你工作:
if (empty($entity_field[0]['value'])) {
$count = db_select('node')->fields('node')->condition('type', $entity->type)->execute()->rowCount();
$entity_field[0]['value'] = $count + 2000;
}
此檢查該字段的值已設定了此節點,如果沒有 - 它得到這個內容的節點總數類型,添加一個常量(本例中爲2000),並將結果設置爲字段的值。
的串行模塊生成一個表,其名稱是serial_bundlename_fieldname即如果已經添加一個字段名「field_job_id」的束「作業」然後一個表「serial_jobs_field_job_id」將被創建。
表包含2場 'SID' 和 'NID' 'SID' 是自動遞增領域。
您可以使用像phpMyAdmin的工具,並執行以下查詢
ALTER TABLE serial_jobs_field_job_id
AUTO_INCREMENT = 2000;
這應該有可能設定爲自動增量字段的初始值。
謝謝您的回答,但我用計算模塊代替 – user1281146
我們在Drupal 6系統的幾種自定義記錄類型中使用自定義自動編號(以下也適用於Drupal 7)。爲了使它工作,我們使用保存記錄時觸發的規則模塊實施了一條規則。
規則運行在事件保存內容並驗證你節省你感興趣的內容類型後(例如,如果你是自動編號窗口小部件,添加一個IF爲內容類型。是的Widget
爲自己的行爲,把一個*填充創建內容的「custom_number」字段*行動規則(其中「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));
每次保存一個新的小工具,保險觀測em運行查詢以查找已分配的最大自定義編號。如果沒有分配,或分配的號碼小於200,系統將分配200;否則,它將分配比當前分配的最大數量多1個。
如果您想要,您還可以添加一行調試代碼來添加看門狗行或其他調試事件,以便發現小於您希望的最小值的數字。
謝謝,很好的解決方案 – user1281146
工作就像一個魅力,謝謝! – user1281146