2012-11-08 27 views
3

我有一個自定義節點類型與自定義附件字段的Drupal 7網站。在一個(這種定製的)節點發布之後,我在規則模塊的幫助下收到了一封電子郵件。我想建立另一個規則,當有人編輯此節點並上傳附件時,該規則會向我發送另一封電子郵件。在郵件內部,我想查看上傳文件的完整網址。Drupal 7規則:如何在電子郵件中發送上傳附件的網址(節點更改後)?

經過多次測試後,我無法插入上傳文件的完整路徑。 [node:field-attachment:file]完全不起作用。我能夠手動插入該文件所在的URL,但在無法插入文件名後(即使文件名對我來說也足夠了)。

因此,與[節點:字段附件:文件]我得到一個錯誤:*致命錯誤:調用/ home/xxx/sites/all /中的非對象的成員函數值()上線297 *

模塊/實體/ entity_token.tokens.inc這正好是這樣的:

/** 
* Gets the token replacement by correctly obeying the options. 
*/ 
function _entity_token_get_token($wrapper, $options) { 

    if ($wrapper->value() === NULL) { 
// Do not provide a replacement if there is no value. 
return NULL; 
} 

隨着[節點:現場附件],我收到了電子郵件,但它包含此:您可以從這裏下載文件:屬性0

當我編輯節點時,我應該使用哪個令牌來獲取實際上傳的文件的url(或文件名)?

+0

經過幾個小時的測試後,我必須承認這個問題無法用標記解決([node:field-attachment:file:x:name])也無濟於事)。然而,PHP總是這樣做,因爲你可以看到Drupal的內置db_select方法: '<?php $ query = db_select('file_managed','fm'); $ query-> fields('fm',array('filename')) - > orderBy('fid','DESC') - > range(0,1); $ result = $ query-> execute() - > fetchField(); echo $ result; ?>' 我知道,這不是最好的方式,但對於lil的網站來說已經足夠了,並且有時可以幫助某人獲得上次上傳文件的鏈接。 – Pene

回答

1

2解決方案

1 - 你可以寫一個簡單的模塊掛接節點提交和處理URL那裏,然後寄出。

2 - 您可以在rules模塊中創建一個動作來執行自定義PHP代碼。在那裏您將獲得$ node中所有節點的詳細信息。您也可以使用drupal發送郵件並使用電子郵件mail API

相關問題