Drupal 7 需要更改节点';s到CCK值的路径

Drupal 7 需要更改节点';s到CCK值的路径,drupal-7,drupal-modules,Drupal 7,Drupal Modules,我有一个内容类型,它已经变成了一个名为“地球新闻”的特写。它包括一个名为“源URL”的可选CCK字段。当这个CCK字段不是空的时候,我希望站点访问者能够点击这个提示并直接进入那个URL 我已将以下预处理函数添加到此功能的.module文件中: function earth_news_preprocess_node(&$vars) { $node = node_load($vars['nid']); $path = drupal_lookup_path('alias','node/

我有一个内容类型,它已经变成了一个名为“地球新闻”的特写。它包括一个名为“源URL”的可选CCK字段。当这个CCK字段不是空的时候,我希望站点访问者能够点击这个提示并直接进入那个URL

我已将以下预处理函数添加到此功能的.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));
}
保存的路径“”引发了一个致命错误:

Only variables can be passed by reference
我走对了吗?那个错误是怎么回事


谢谢

该错误是由以下事实引起的:您希望通过引用传递单个参数。在这种情况下,不能使用文字数组;可以传递包含数组的变量,也可以传递由返回引用的函数返回的值,但预期作为参数的值必须是包含以下键的关联数组:

  • 来源:内部系统路径
  • 别名:URL别名
  • 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);
}
作为旁注,将节点对象设置为
$vars['node']
;无需加载节点