2011-07-12 21 views
2

我們將我們的會計系統銷售訂單導入到Drupal 6站點。如何將自定義表單插入Drupal節點視圖並處理提交的節點數據?

我們設置了一個名爲orders的內容類型。

我想爲我們的運輸供應商建立一個運輸模塊(沒有沒有一個)。

我明白如何構建「塊」模塊和「內容」模塊。

什麼是構建一個將出現在我們的訂單節點的呈現,他們需要完成(這反過來將處理運費)

如果可能的話,我想一個表格底部的模塊的最佳方法如果您想自定義窗體附加到每個節點做到這一點,而無需創建一個不同的內容類型

+0

另外我知道的Ubercart與運輸模塊等,我們將在某些時候使用它,但它不符合目前需要什麼 – Tim

+0

我可能知道關於「塊」模塊和「內容」模塊請 – ArK

+0

所以我猜我可以使用hook_nodeapi但不知道如何我可以添加一個新的形式到節點的輸出 – Tim

回答

6

,首先你需要(你的模塊中)到:

  • 寫,將建立表單功能(見:Generating Forms)。如果此功能將根據當前正在查看的節點顯示與節點相關的數據,那麼您可能想要通過nid或整個$node作爲參數。

然後,您必須決定如何將表單插入到節點頁面(或者正在查看節點),並且有幾種方法可以解決這個問題,其中包括:

  1. 實施hook_nodeapi()和「查看」操作中(即$op == 'view'),你可以讓你的表格,並把它添加到$node->content
  2. 將表單添加爲模板變量(請參閱:template_preprocess_node(),您將執行MYMODULE_preprocess_node(&$vars)),以便您可以將其放置在自定義node.tpl.php中的任何位置。

我想還有更多的方法可以解決這個問題(讓你的模塊生成一個包含表單的模塊等),這取決於你特別需要什麼。

無論你選擇,你會得到的加價自定義窗體的方法是:

<?php 
// something like this for hook_nodeapi() way. 
$node->content['body']['value']] .= drupal_get_form('my_custom_form_generating_function', $node); 
// or something like this for the hook_preprocess_node() way. 
$vars['my_custom_form'] = drupal_get_form('my_custom_form_generating_function', $vars['node']); 

如果表單生成功能確實會接受$節點作爲參數,則要麼需要使用PHP的func_get_args()或顯式聲明$node參數中的簽名:

<?php 
function my_custom_form_generating_function($form_state, $node) { } 

而且是明確的:

...建立一個模塊將出現在我們的底...

Drupal模塊都沒有的東西,「出現」。模塊是擴展,可爲您的Drupal站點提供額外的功能。他們可以實現掛鉤,這可能會或可能不會生成將出現在您的網站上的標記。

關於「內容模塊」和「模塊組件」:雖然我已經看到的,術語「節點模塊」來指代提供新的內容類型的模塊,任何模塊可以實現任何鉤,並因此提供塊,內容類型等