>我正在尝试创建一个函数,根据给定的URL检索和显示Drupal节点的Body字段。
目前,我已经扩展了标准Drupal RSS的功能来执行检测方法。 如果您输入以下 url,则会发生这种情况:http://mysite.com/rss.xml/页=54
最后一部分至关重要 - 它告诉要从哪个节点 ID 加载。 就代码而言,我已经修改了/modules/node/node.module 中的 node_feed() 函数以执行以下操作:
if (stristr($nids, 'page=') !== FALSE) {
$nid = substr($nids, stripos($nids, 'page=') + 5);
$result = NULL;
if ((string)(int)$nid === $nid) {
$result = db_result(db_query("SELECT `nid` FROM {node} WHERE `nid` = %s AND `type` = 'flashnode'", $nid));
}
if ($result) {
$item = node_load($result);
print($item->body);
}
exit;
}
虽然这有效,但我们担心它有两个原因:
1) 结果是否缓存? 这是一个负载非常重的页面,将被称为很多。
2)有没有"官方"的方式来做到这一点? 一个使用带有缓存的模块,而不是半黑客的解决方法?
提前感谢您的任何指导。-汤姆
你绝对不应该为了创建一个返回节点主体的URL而破坏RSS提要。您应该创建一个非常简单的自定义模块:http://drupal.org/developing/modules
Drupal模块系统允许您设置一个url,以便像/fetch_body/1234
这样的东西调用fetch_body()函数,并以$nid=1234作为参数。至于缓存,您的自定义模块中有很多选项。最明显的是使用 cache_get() 和 cache_set() 根据节点 ID 自行执行简单的缓存。
您使用的是哪个版本的Drupal?我强烈推荐《Pro Drupal Development》一书,只要确保获得与您的Drupal版本匹配的版本即可。