我的内容类型已转换为名为“地球新闻”的功能。它包括一个名为“Source URL”的可选CCK字段。当该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 :(得分:0)
错误是由path_save()期望通过引用传递的单个参数引起的。在这种情况下,您不能使用文字数组;你可以传递一个包含数组的变量,或者一个返回引用的函数返回的值,但是作为参数的值必须是一个包含以下键的关联数组:
在您的情况下,代码应如下所示。
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']
;无需加载节点。