webform是用于表單配置和生成的模塊。利用它,可輕松實現(xiàn)調(diào)查表單、報名表單、注冊表單等制作。在Drupal中,安裝好webform后,采用node/add/webform即可開啟表單的創(chuàng)建,并進而實現(xiàn)表單字段的創(chuàng)建和定義。值得注意的是,隨著使用場景的不斷演進,我們會發(fā)現(xiàn)很多事先創(chuàng)建好的表單,其實完全可以復(fù)制克隆稍加修改后,用于其他頁面的需求。但是,如何才能快速地復(fù)制克隆先前已經(jīng)創(chuàng)建好的表單及其字段呢?
1. 最佳途徑:node_clone
由于webform在表單字段創(chuàng)建時,需先進行node創(chuàng)建(node/add/webform),然后才具體定義表單所需字段。因此,采用node_clone完全可以實現(xiàn)已有webform表單的克隆。不僅如此,node_clone還可以復(fù)制其他類型的node。當(dāng)然,實現(xiàn)webform克隆的,還有其他一些模塊webform_share、Webform Default Fields、Webform Template、Webform defaults、?Node Export?等,但node_clone似乎使用最簡單。要裝這個模塊,請在Drupal站點目錄文件夾路徑下,使用drush即可:
drush dl node_clone -y && drush en node_clone -y && drush dis webform_tabindex -y
特別說明:webform_tabindex模塊必須禁用,不然會出現(xiàn)如下的錯誤:
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tabindex' cannot be null: INSERT INTO {webform_tabindex} (nid, cid, tabindex, skip) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3); Array ( [:db_insert_placeholder_0] => 1033 [:db_insert_placeholder_1] => 2 [:db_insert_placeholder_2] => [:db_insert_placeholder_3] => 0在 webform_tabindex_webform_component_insert() (行 191 在 ../sites/all/modules/webform_tabindex/webform_tabindex.module)
針對這個錯誤,目前沒有更好的辦法來解決,除非針對webform_tabindex.module進行補丁。
2. webform克隆操作:
安裝node_clone之后,打開admin/content,可以看到每一條node記錄,會增加一個功能連接,如下:

此時,選擇要克隆的表單,點擊一下“克隆”即可,如下:

現(xiàn)在只需要修改一下表單名稱,比如“泛鷹科學(xué)社招募申請表”,然后保存即可。此時,來自舊表單的所有的字段將共享到新名稱的表單中。同時,如需添加、刪除webform表單字段操作,也可以進行。大功告成!