2013-06-30 57 views
1

我需要一個自動編號我的內容類型的字段,但從2000開始的某個值。我嘗試了串行字段和計算字段。無法弄清楚如何去做。數字(使用串行字段)會自動增加,但我無法定義起始數字。Drupal:內容類型的自動編號字段與起始值

有沒有辦法做到這一點?

非常感謝!

回答

3

您可以使用計算字段來完成此操作。 將計算的字段添加到您的內容類型並將數據類型設置爲整數。在計算字段(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),並將結果設置爲字段的值。

+0

工作就像一個魅力,謝謝! – user1281146

0

串行模塊生成一個表,其名稱是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;

這應該有可能設定爲自動增量字段的初始值。

+0

謝謝您的回答,但我用計算模塊代替 – user1281146

2

我們在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個。

如果您想要,您還可以添加一行調試代碼來添加看門狗行或其他調試事件,以便發現小於您希望的最小值的數字。

+0

謝謝,很好的解決方案 – user1281146

相關問題