2013-05-02 69 views
0

我有一個內容類型已變成名爲「地球新聞」的功能。它包含一個稱爲「源URL」的可選CCK字段。當CCK字段不是空白時,我希望網站訪問者能夠點擊預告片並直接轉到該URL。需要將節點的路徑更改爲CCK值

我已經添加了以下功能預處理的.module文件這一功能:

function earth_news_preprocess_node(&$vars) { 
    $node = node_load($vars['nid']); 
    $path = drupal_lookup_path('alias','node/' . $node->nid); 
    $url = $node->field_se_news_source['und'][0]['url']; 

    path_save(array($path,$url)); 
} 

的path_save拋出一個致命的錯誤:

Only variables can be passed by reference 

我在正確的道路上?那是什麼錯誤?

謝謝。

回答

0

錯誤是由於事實path_save()正在期望通過引用傳遞單個參數。在這種情況下,你不能使用文字數組;你可以通過含有一個數組,或由一個返回參考函數的返回值的變量,但預期爲參數的值需要爲含有下列鍵關聯數組:

  • 源:內部系統路徑
  • 別名:網址別名
  • PID:(可選)獨特的路徑別名標識
  • 語言:(可選)別名

在你的情況語言,代碼應該是像下面那樣。

function earth_news_preprocess_node(&$vars) { 
    $node = $vars['node']; 
    $path = array(
    'alias' => drupal_lookup_path('alias','node/' . $node->nid), 
    // You can also use the following line instead of the previous one. 
    // 'alias' => drupal_get_path_alias('node/' . $node->nid), 
    'source' => $node->field_se_news_source['und'][0]['url'], 
); 

    path_save($path); 
} 

作爲邊注,template_preprocess_node()使得可用的節點對象作爲$vars['node'];不需要加載節點。